【问题标题】:Can I launch my MSI installer from my program?我可以从我的程序启动我的 MSI 安装程序吗?
【发布时间】:2012-06-28 10:30:19
【问题描述】:

我希望用户能够通过单击 UI 上的按钮来重新配置他们的安装(打开/关闭组件)。这将使用msiexec /i 命令(或等效命令)启动安装程序,并且与在“程序和功能”窗口对话框中单击“更改”具有相同的效果。

我有一种可能的方法:Install a copy of the MSI 并使用它来触发安装向导。

但是,我想知道是否可以使用注册表或其他方法找到并触发 MSI 安装程序向导,而不是制作安装程序的副本。这可能吗?

【问题讨论】:

    标签: c++ windows-installer


    【解决方案1】:

    卸载信息存储在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\<your app> 中,其中 是名称或GUID(取决于您的安装)。在您的应用程序的密钥下,ModifyPath 值应该包含修改命令 - msiexec.exe /I ... 左右。

    【讨论】:

      【解决方案2】:

      您可以致电msiexec /i &lt;ProductCode&gt;,它会解决剩下的问题。您需要将您的产品代码存储在某个地方 - 您可以轻松地将一个条目添加到您的 MSI 的注册表中,该表使用 [ProductCode] 作为值。

      【讨论】:

      • 知道了,这实际上是根据@eran的答案在注册表中列出的,我在你的答案出现时找到了!
      • 您仍然需要知道您的产品代码,因为在 \Uninstall 下 MSI 将使用它作为子项。一旦你知道你的产品代码,无论是我的还是 Eran 的解决方案都可以工作,并且 99.9% 的结果都是完全相同的命令。
      • 我确实知道我的产品 G​​UID,因为它位于最初用于构建 MSI 的 WiX 源代码中 :-)
      • 对 - 在我的安装中,我总是使用在构建时生成 GUID - 如果我知道 GUID 总是会改变,这会简化一些升级场景的某些事情。但是,这确实意味着我不知道 GUID 是什么,所以我必须将它记录在某个地方。
      猜你喜欢
      • 2010-12-07
      • 1970-01-01
      • 2011-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-23
      • 1970-01-01
      相关资源
      最近更新 更多