Цитата
SatHan:
каких нибудь переменных в роде Update_%.%.%.exe или Update_*.*.*.exe нет?
Скрипты Inno Setup. Помощь и советы [часть 5]
хз
ну да ладно
Цитата
SatHan:
в случае может быть много обновлений.
Скрипты Inno Setup. Помощь и советы [часть 5]
намутячил код

(на основе модифицированного поиска по маске из шапки от
Serega) и "Получение всех файлов в папке, с полными путями"
Gnom_aka_Lexander-а
работает так
ищем сначала файлы по расширению (в данном случае .exe)
используя имена файлов добавляем эти самые имена в цикле в чеклистбокс состоящий из одних чекбоксов
имя файла = имя чекбокса
тут же это имя файла и путь пишется в статичный массив записей длиной в 201 элемент (извиняй. Здесь подошёл бы лучше динамичный, но я только начал знакомится с массивами)
те у нас например снаружи 10 экзешников(апдейтов) = 10 чекбоксов = 10 записей в массиве(в массиве с полными путями)
ну и на этапе утановки каком хочешь мы в зависимости от отмеченного чекбокса(-ов) запускаем тот или иной экзешник
код:
читать дальше »
Код:
Код: Выделить всё
[Setup]
AppName=My Program
AppVerName=My Program
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
OutputBaseFilename=setup
[ Code]
var
UpudatePage: TWizardPage;
updList: TNewCheckListBox;
arrUpd:array [0..200] of string;
procedure Find_Files_By_Mask(Path,Mask:string;cbBox:TNewCheckListBox);
var
FSR: TFindRec;
FindResult: Boolean;
i:Integer;
begin
i := 0;
if Path[Length(Path)] '\' then Path:= Path + '\';
FindResult:= FindFirst(Path + Mask, FSR);
try
while FindResult do
begin
if FSR.Attributes and FILE_ATTRIBUTE_DIRECTORY = 0 then
begin
cbBox.AddCheckBox(FSR.Name, '', 0, True, True, True, True, nil);
arrUpd[i] := Path + FSR.Name;
i := i + 1;
end;
FindResult:= FindNext(FSR);
end;
finally
FindClose(FSR);
end;
end;
procedure InitializeWizard();
begin
UpudatePage := CreateCustomPage(wpWelcome, 'Список Файлов обновления', 'что установить ?');
updList := TNewCheckListBox.Create(WizardForm);
with updList do
begin
Parent := UpudatePage.Surface;
SetBounds(ScaleX(0),ScaleY(0),UpudatePage.SurfaceWidth,UpudatePage.SurfaceHeight - ScaleY(30));
end;
Find_Files_By_Mask(ExpandConstant('{src}'),'*.exe',updList);
updList.Items.Delete(updList.Items.IndexOf('setup.exe'));
MsgBox(arrUpd[1], mbInformation, MB_OK);
end;
procedure CurStepChanged(CurStep: TSetupStep);
var
i, ErrorCode: Integer;
begin
i:=0
if CurStep = ssInstall then
begin
repeat
if updList.Checked[i] then Exec(arrUpd[i], '', '', SW_HIDE, ewWaitUntilTerminated, ErrorCode);
MsgBox(IntToStr(i), mbInformation, MB_OK);
i := i + 1;
until i = updList.ItemCount;
end;
end;
Цитата
SatHan:
как сделать чтоб инсталятор обнаруживал запущенную программу и если она запущена то инсталятор выдал сообщение с предупреждением и закрылся?
Скрипты Inno Setup. Помощь и советы [часть 5]
в шапке есть 2 кода на определение работающего процесса
оба кода возвращают булев значение
попробуй ка сам на основе этого сообщения с кодом и функций из шапки сделать себе пример
Скрипты Inno Setup. Помощь и советы [часть 5]