如何以编程方式卸载缓存的Wix Burn程序

时间:2014-07-07 15:10:33

标签: wix

我创建了一个Wix Burn应用程序,我正在安装两个MSI&。效果很好。

  1. 正确安装MSI文件
  2. Wix Burn应用程序向ARP注册。
  3. MSI文件未向ARP注册
  4. 我可以做主要升级
  5. 我可以使用Wix Burn应用程序的本地副本手动安装和卸载
  6. 我可以通过编程方式执行Wix Burn应用程序来卸载(使用/ x)
  7. 问题:

    我知道使用Wix Burn应用程序卸载的两种方法:

    1. 点击ARP中的卸载按钮(需要用户参与)
    2. 启动安装产品的Wix Burn应用程序的副本
    3. 我在Wix Burn日志中看到,Windows缓存我的Wix Burn应用安装的方式与MSIEXEC缓存MSI文件的方式大致相同。有没有办法以编程方式要求Windows或MSI使用Wix Burn应用程序的缓存版本进行卸载?

      可能性:

      据推测,我可以使用MsiGetProductInfo()来获取缓存的Wix Burn应用程序的路径。但是,要做到这一点,我需要我的应用程序的产品代码。但是,产品代码不是Wix中元素的属性,因此我没有看到如何获取Burn软件包的产品代码。

1 个答案:

答案 0 :(得分:0)

您可以通过遍历Uninstall注册表项来解决此问题。这个过程是:

  1. 打开HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
  2. 遍历子键,搜索PublisherDisplayName与您的商品匹配的条目。
  3. 如果找到条目,请读取QuietUninstallString的值并将其作为命令运行。对于WIX刻录安装程序,通常采用C:\ProgramData\Package Cache\{GUID}\SetupProgram.exe /uninstall /quiet
  4. 格式

    如果您使用的是64位操作系统,则还需要搜索HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall