代码之家  ›  专栏  ›  技术社区  ›  Craig McQueen Dr. Watson

在Inno安装程序安装中运行另一个安装程序

  •  7
  • Craig McQueen Dr. Watson  · 技术社区  · 15 年前

    我的公司正在开发一个依赖于我们的另一个应用程序的应用程序。第二个应用程序已经有了一个Inno安装程序。

    所以我想把第二个应用程序的安装程序捆绑在第一个应用程序的Inno安装程序中。但我不知道该怎么做。有人知道“正确的方法”吗?

    我发现这一点: Inno Setup Knowledge Base—HOWTO: Install .MSI files . 我认为该技术可以用于嵌套的Inno安装程序。但我有几个关于细节的问题:

    1. 如果第一个应用程序被卸载,第二个应用程序也被卸载,我怎么能做到这一点呢?
    2. 这是一件明智的事情吗(自动卸载第二个应用程序),还是应该让用户手动卸载?
    3. 如果用户试图在卸载第一个应用程序时卸载第二个应用程序,我是否应该检测到并给出警告?我怎么能做到?
    1 回复  |  直到 15 年前
        1
  •  3
  •   Treb    15 年前

    对于您所说的卸载程序功能级别,我建议您熟悉Inno安装程序中的Pascal脚本(如果您还没有)。它提供了难以置信的定制,但也有使您的项目更加复杂的警告。

    首先回答第三个问题:

    是的,你应该这样做。为了正确地执行此操作,您需要将此功能添加到第二个应用程序的卸载程序中(即应用程序所依赖的卸载程序)。见 Uninstall event functions 在Inno设置帮助中。如果安装了应用程序,则需要签入该卸载程序(通过检查 HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\SecondAppName 例如,exists),在这种情况下会显示一个额外的警告。

    关于第二个问题:

    如果你的客户想继续使用第二个应用程序的可能性很小,即使他决定要卸载第一个应用程序,你也应该为他提供选择。卸载应用程序后,我将在卸载程序中为您的应用程序使用单独的向导页来完成此操作。

    最后,你的第一个问题是:

    您需要确定的名称(完整路径) 另一个应用程序 卸载程序exe。您可以从注册表项检索它 HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\SecondAppName\UninstallString . 要从[code]部分的脚本执行它,请参见 Exec 在Inno设置帮助中。