2016-01-22 3 views
-1

Я продолжаю свою работу в Inno Setup, поэтому теперь у меня возникли новые вопросы. Я пытаюсь выполнить некоторые программы перед установкой моего последнего приложения, для этого я использую функцию Exec.Предварительная установка Microsoft Access Database Engine без вмешательства пользователя в Inno Setup

Когда я пытаюсь с помощью следующего кода:

[Files] 
Source: "AccessDatabaseEngine_x64.exe"; DestDir: "{tmp}"; Flags: dontcopy noencryption 
Source: "Database.accdb"; DestDir: "{app}"; Flags: ignoreversion 

[Code] 

function PrepareToInstall(var NeedsRestart: Boolean): String; 
Var 
    ResultCode: Integer; 
begin 
    ExtractTemporaryFile('AccessDatabaseEngine_x64.exe'); 
    if Exec(ExpandConstant('{tmp}\AccessDatabaseEngine_x64.exe'), 'quit', '', SW_HIDE, ewWaitUntilTerminated, ResultCode) then 
    begin 
     msgbox('True: {tmp}\AccessDatabaseEngine_x64.exe : ' + IntToStr(ResultCode), mbInformation, MB_OK); 
    end 
    else begin 
     msgbox('False: {tmp}\AccessDatabaseEngine_x64.exe : ' + SysErrorMessage(ResultCode), mbInformation, MB_OK);  
    end; 
end; 

Я получаю эту ошибку:

enter image description here

С другой стороны, если я использую код последующие:

[Files] 
Source: "AccessDatabaseEngine_x64.exe"; DestDir: "{tmp}"; Flags: dontcopy noencryption 
Source: "Database.accdb"; DestDir: "{app}"; Flags: ignoreversion 

[Code] 

function PrepareToInstall(var NeedsRestart: Boolean): String; 
Var 
    ResultCode: Integer; 
begin 
    ExtractTemporaryFile('AccessDatabaseEngine_x64.exe'); 
    if Exec(ExpandConstant('{tmp}\AccessDatabaseEngine_x64.exe'), '', '', SW_HIDE, ewWaitUntilTerminated, ResultCode) then 
    begin 
     msgbox('True: {tmp}\AccessDatabaseEngine_x64.exe : ' + IntToStr(ResultCode), mbInformation, MB_OK); 
    end 
    else begin 
     msgbox('False: {tmp}\AccessDatabaseEngine_x64.exe : ' + SysErrorMessage(ResultCode), mbInformation, MB_OK);  
    end; 
end; 

Я получаю мастер установки другого файла. Некоторые, как это:

enter image description here

Я хочу, чтобы установить мои другие программы автоматически, без вмешательства пользователя.

Возможно ли это? Вы можете мне помочь?

Благодарим за продвижение!

ответ

1

Экран использования говорит /quiet, и вы используете quit.

Так используйте /quiet, не quit:

if Exec(ExpandConstant('{tmp}\AccessDatabaseEngine_x64.exe'), '/quiet', '', SW_HIDE, ewWaitUntilTerminated, ResultCode) then 
+0

Hi @MartinPrikryl, хранит первый msgbox, «Microsoft Access Database Engine 2010» _ и не устанавливает программу. – DavidSaa

+0

Ну, мы не собираемся находить правильные аргументы командной строки случайного исполняемого файла для вас. Это не вопрос программирования. Это даже не связано с Inno Setup. –

1

я был невнимателен, правильный ответ в первой картине. Слово, которое должно использоваться:/quiet; нет/совершенно, нет/бросить.

В качестве поддержки (если это случится еще раз, чтобы кто-то другой) я оставляю следующей ссылке:

Description of the command-line switches that are supported by a software installation package, an update package, or a hotfix package that was created by using Microsoft Self-Extractor .

Кроме того, многие из них требуют внимания.