我正在开发一个安装程序项目,该项目由一个 MSI 文件和一个管理先决条件的引导应用程序组成;由于对某些先决条件的需求取决于用户选择安装的功能,因此引导应用程序还提供了 UI。当用户想要运行修改安装时,我希望能够强制添加/删除程序(或程序和功能)控制面板 (ARP) 运行引导应用程序而不是 MSI。我尝试将安装程序的卸载注册表项下的 ModifyPath 值更改为引导应用程序的路径,但无济于事。单击 ARP 中的更改按钮仍然可以获得 MSI。
有没有一种简单的方法可以做我想做的事?如果做不到这一点,MSI 有没有办法使用“更改”按钮检测到它是从 ARP 运行的,以便我可以让它显示一条错误消息,告诉用户运行引导应用程序?(即,ARP 是否使用与用户运行 MSI 并指定修改安装相同的命令行参数,而无需查看 UI 的维护页面?如果没有,我应该寻找什么?)
编辑我的安装程序不仅要安装一个应用程序,而且要安装一套应用程序,每个用户都可以选择不安装。(我们将这些应用程序作为一个套件安装,因为它们中的大多数都依赖于其中一个被安装。因此,用户更容易让一个安装程序处理它们,而不是单独的安装程序这个新的安装程序将取代。)
套件中的应用程序并不都需要相同的先决条件集,因此,MSI 很难检查先决条件,直到它知道用户想要安装套件中的哪些应用程序。此外,我们希望通过自动启动用户确实希望安装的应用程序的所有先决条件的安装程序来简化用户。(这是安装程序的 UI 在引导应用程序中实现的主要原因。)
MSI 是否有可能启动引导应用程序,然后在引导应用程序继续运行时立即静默退出,最终重新启动 MSI?(当引导应用程序启动 MSI 时,它传递给 MSI 的命令行参数之一是一个属性,告诉它引导应用程序启动了它。除其他外,这目前用于允许 MSI 显示错误消息告诉用户运行引导应用程序,除非在命令行上指定了卸载或修复安装。)