首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Inno Setup:安装其他安装程序并运行它,然后再继续安装

Inno Setup:安装其他安装程序并运行它,然后再继续安装
EN

Stack Overflow用户
提问于 2013-10-25 20:01:32
回答 3查看 38.1K关注 0票数 31

这是到目前为止我的代码的Files部分:

代码语言:javascript
复制
[Files]
Source: "other_installer.exe"; DestDir: "{app}"
Source: "myprogram.exe"; DestDir: "{app}"
Source: "data.dat"; DestDir: "{app}"
Source: "otherdata.dat"; DestDir: "{app}"

我的程序依赖于另一个程序才能运行。我已经在我的安装程序中包含了这个程序的安装程序("other_installer.exe")。我想要做的是,一旦这个安装程序被复制,就立即启动它,然后继续"myprogram.exe“和其他工作。

我在谷歌上搜索并在Inno设置帮助中找到了BeforeInstall的文档,但他们没有运行其他应用程序的示例。我认为应该是这样的:

代码语言:javascript
复制
[Files]
Source: "other_installer.exe"; DestDir: "{app}"
Source: "myprogram.exe"; DestDir: "{app}"; BeforeInstall: // RUN OTHER_INSTALLER.EXE //
Source: "data.dat"; DestDir: "{app}"
Source: "otherdata.dat"; DestDir: "{app}"
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-10-25 20:33:18

更好的方法可能是使用AfterInstall参数。以下脚本将在处理完OtherInstaller.exe文件条目后立即执行RunOtherInstaller函数。在那里,它尝试执行刚刚安装的OtherInstaller.exe文件,如果执行失败,它会向用户报告一条错误消息。请注意,您不能从该函数中断安装,因此以这种方式执行您想要的操作并不安全:

代码语言:javascript
复制
[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program

[Files]
Source: "OtherInstaller.exe"; DestDir: "{app}"; AfterInstall: RunOtherInstaller
Source: "OtherFile.dll"; DestDir: "{app}"

[Code]
procedure RunOtherInstaller;
var
  ResultCode: Integer;
begin
  if not Exec(ExpandConstant('{app}\OtherInstaller.exe'), '', '', SW_SHOWNORMAL,
    ewWaitUntilTerminated, ResultCode)
  then
    MsgBox('Other installer failed to run!' + #13#10 +
      SysErrorMessage(ResultCode), mbError, MB_OK);
end;
票数 41
EN

Stack Overflow用户

发布于 2013-10-28 02:34:14

运行先决条件安装程序的另一个好时机是在PrepareToInstall事件函数中。(有关基本结构,请参阅Inno提供的示例脚本,有关实际执行,请参阅TLama的代码。)

PrepareToInstall的主要优点是它允许您处理来自子安装程序的错误和重启请求--使用AfterInstall做不到这一点。

它的主要缺点是您必须手动ExtractTemporaryFile运行子安装所需的任何内容,因为这发生在解压文件之前。

票数 15
EN

Stack Overflow用户

发布于 2013-10-25 20:48:33

您可以使用AfterInstall,请在帮助中查找此内容。当文件复制完成后,我将启动您设置为"AfterInstall:“的函数/过程。

在此函数/过程中,使用Exec并启动其他安装程序。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19589309

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档