2015-10-28 9 views
2

Я пытаюсь написать установщик Inno Setup для установки, а затем запустить другие установщики. Проблема заключается в попытке установить Cygwin. Я загрузил Cygwin и все пакеты, которые мне нужны, чтобы я мог выполнить локальную установку. Затем я хочу добавить дополнительные файлы и каталоги к установке Cygwin.Выполнять скрипт один раз перед установкой дерева каталогов

Моя первая попытка была такой:

[Files] 
Source: "{#Cygwin}\Cygwin\*"; DestDir: {tmp}\cygwin; Flags: recursesubdirs; 
Source: "{#Cygwin}\additional\*"; DestDir: {tmp}\cygwin\additional; Flags: recursesubdirs 

[Run] 
Filename: "{tmp}\cygwin\setup-x86_64.exe"; Parameters: "-q -L"; WorkingDir: "{tmp}"; 

Но это означает, что я должен иметь скрипт для добавления дополнительных файлов, потому что некуда положить их, пока Cygwin фактически не установлен командой в [Run] раздел.

Я попытался с помощью BeforeInstall сценария в разделе [Files], чтобы запустить программу установки Cygwin перед добавлением дополнительных файлов, а потому, что я должен использовать маску с Source: "{#Cygwin}\additional\*"; сценарий вызывается один раз для каждого файла в дереве каталогов.

[Files] секция установки Inno, кажется, принимают только Source файлы и не является источником каталога, если каталог не имеет подстановочные.

Есть ли способ установить все из дерева каталогов без использования подстановочного знака, или есть способ сделать сценарий BeforeInstall запущенным только один раз, независимо от того, сколько файлов скопировано?

ответ

0

Установите Cygwin при первом вызове функции BeforeInstall.

var 
    CygwinInstalled: Boolean; 

procedure MyBeforeInstall; 
begin 
    if CygwinInstalled then 
    begin 
    Log('Cygwin installed already'); 
    end 
    else 
    begin 
    Log('Installing Cygwin'); 

    // install Cygwin here 

    CygwinInstalled := true; 
    end; 
end; 
+0

Так просто! Благодарю. Пытался проголосовать за ваш ответ, но пока у меня недостаточно репутаций. – johno999

 Смежные вопросы

  • Нет связанных вопросов^_^