2014-01-19 5 views
2

У меня странная проблема. В моем сценарии установки Inno я должен проверить JRE. Если минимальная JRE не установлена, она запускается установщиком JRE. Эта проверка выполняется после того, как файлы моей программы были установлены в местах назначения.Inno Setup: Как установить файл после установки?

Но у меня есть 3 файла, которые я должен поместить в папку JRE. Так что происходит то, что только 1 из этих файлов удаляется «волшебным образом» после установки JRE.

Я имею в виду:

win32com.dll   -> {pf}/Java/jre7/bin 
comm.jar    -> {pf}/Java/jre7/lib/ext 
javax.comm.properties -> {pf}/Java/jre7/lib 

После установки JRE, win32com.dll и comm.jar есть, но javax.comm.properties нет.

Чтобы предотвратить это, я хочу установить этот файл после установки JRE. Возможно? Или любое другое предложение?

Relevants части моего сценария:

[Run] 
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent 
Filename: "{app}\jre-7u45-windows-i586.exe"; WorkingDir: {app}; StatusMsg: Checking Java Runtime Environment... Please Wait...;Check:JREVerifyInstall 

[Code] 
#define MinJRE "1.7" 

Function JREVerifyInstall:Boolean; 
var 
    JREVersion: string; 
begin 
if (RegValueExists(HKEY_LOCAL_MACHINE, 'SOFTWARE\JavaSoft\Java Runtime Environment','CurrentVersion')) then 
    begin 
    Result := RegQueryStringValue(HKEY_LOCAL_MACHINE, 'Software\JavaSoft\Java Runtime Environment', 'CurrentVersion', JREVersion); 
    if Result then 
     Result := CompareStr(JREVersion, '{#MinJRE}') <> 0; 
    end 
else 
    Result := true; 

end; 
+0

Как установить эту комплектную JRE? Вы запускаете 'jre-7-windows- .exe' из раздела' [Run] 'вашего скрипта? Вы удаляете любой файл в своем скрипте? Покажите нам соответствующие части вашего скрипта, пожалуйста ... – TLama

+0

У momeent у меня нет сценария, но да, я запускаю установщик в секции [Run], и я проверяю JRE с помощью специального кода. Я не удаляю файл. – anat0lius

+0

Добавлен код моего сценария. – anat0lius

ответ

3

[Files] раздел дает вам «dontcopy» флаг, который означает, что вы можете упаковать ваши файлы, но копировать их (или запускать их или любой другой), когда вы хотите из раздела [Код]. Например:

[Files] 
Source: "a.txt"; Flags: dontcopy 

[Code] 
procedure CurStepChanged(CurStep: TSetupStep); 
begin 
    if CurStep = ssPostInstall then begin 
     //This will actually extract your file to setup's temporary directory. 
     //If you don't do this, the file is skipped 
     //The temporary directory is deleted after setup ends. 
     ExtractTemporaryFile('a.txt'); 

     FileCopy(ExpandConstant('{tmp}\a.txt'), 'c:\temp\a.txt', False); 
    end; 
end; 

Используйте этап «PostInstall», чтобы извлечь ваши файлы и скопировать их в папку JRE.

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