Дайте пожалуйста отдельный код на замену стандартных чекбоксов через bmp))
WizardForm.ComponentsList.LoadBtnBmpFromFile('buttons.bmp');
[Setup]
AppName=Приложение
AppVerName=Приложение
DefaultDirName={pf}\123
DirExistsWarning=no
[Languages]
Name: rus; MessagesFile: compiler:Languages\Russian.isl
[_Code]
var
Button: TNewButton;
ResultCode: Integer;
procedure ButtonOnClick(Sender: TObject);
begin
Exec(ExpandConstant('{sys}\calc.exe'), '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode);
end;
procedure InitializeWizard();
begin
Button:= TNewButton.Create(WizardForm);
with Button do begin
SetBounds(ScaleX(7), WizardForm.NextButton.Top, WizardForm.NextButton.Width, WizardForm.NextButton.Height);
Caption:= 'Запустить';
OnClick:= @ButtonOnClick;
Parent:= WizardForm;
end;
end;
А ты у [_Code] впереди подчёркивание убрал? В этом примере нечему не работать - простейший скрипт.что-то не работает
Конечно убралА ты у [_Code] впереди подчёркивание убрал?
какбэ работаетчто-то не работает
через Exec тоже можноЗапускать просто exe, bat и пр. нужно через ShellExec!
Не все. Через Exec запускаются только *.ехе - файлы. Все остальное(bat, cmd, msu и тп), запускается только через ShellExec (команда, которая ищет программу, которая запустит файл) либо через Exec, но запуская программу, которая выполнит файл, который нужно запустить, с именем этого файла в параметрах.какбэ работает
через Exec тоже можно
Всетаки нужно учитывать реалии жизни Не уверен в том, как работает выполнение батников, но сталкивался с ситуацией, когда путь к системным утилитам приходилось указывать вручную, поэтому батники для перестраховки лучше тоже в ShellExec запускать. А еще лучше в екзек, параметром к cmd.exe, с указанием пути к этому cmd.exe ({sys}\cmd.exe) - на всякий случайexecutable or batch file,
const
NORMAL_PRIORITY_CLASS = $00000020;
IDLE_PRIORITY_CLASS = $00000040;
HIGH_PRIORITY_CLASS = $00000080;
REALTIME_PRIORITY_CLASS = $00000100;
function SetPriorityClass(hProcess: THandle; dwPriorityClass: DWORD): BOOL;
external 'SetPriorityClass@kernel32';
function GetCurrentProcess: THandle;
external 'GetCurrentProcess@kernel32';
procedure InitializeWizard();
begin
SetPriorityClass(GetCurrentProcess, IDLE_PRIORITY_CLASS); //установка приоритета для инсталлятора.
end;
[/SPOILER]
const
NORMAL_PRIORITY_CLASS = $00000020;
IDLE_PRIORITY_CLASS = $00000040;
HIGH_PRIORITY_CLASS = $00000080;
REALTIME_PRIORITY_CLASS = $00000100;
function SetPriorityClass(hProcess: THandle; dwPriorityClass: DWORD): BOOL; external 'SetPriorityClass@kernel32';
function GetCurrentProcess: THandle; external 'GetCurrentProcess@kernel32';
procedure InitializeWizard();
begin
if IsTaskSelected('Prt') then begin
//Дальше установка приоритета
SetPriorityClass(GetCurrentProcess, HIGH_PRIORITY_CLASS);
end;
end;
[Languages]
Name: rus; MessagesFile: "C:\Program Files\Inno Setup 5\Languages\Russian.isl";
[Tasks]
Languages: rus; Name: Prt; Description: "Высокий приоритет установки";
[/SPOILER]