查找检测到的包的安装路径

时间:2013-07-04 08:50:53

标签: c# wix burn

当Burn检测到其中一个软件包已安装时, 如何找到检测到的包的安装路径?

IBootstrapperApplication上的所有事件似乎都没有公开它,谷歌也没有发现任何事情。谢谢!

1 个答案:

答案 0 :(得分:2)

评论太长了 - 我会稍后用答案内容编辑它......

Burn不知道(也不需要知道)关于包安装的任何内容,而不是*Package元素中的内容。

“软件包的安装路径”是什么意思? Windows Installer可以报告InstallLocation MsiPackage(如果已设置) -see here

对于ExePackage,检测只是捆绑定义的是/否检查。

对于MsiPackage,Windows Installer提供了是/否答案,但确实有一个API用于Burn不需要的其他信息。 您的问题是否与MsiPackage相关?

您想解决什么问题?

更新:

Windows Installer程序包实际上没有安装位置;组件已安装位置。将所有或大多数组件的位置组织到公共目录树中并允许选择根目录是一种非常常见的做法。组件可以分组为不同的功能,某些安装程序允许为每个功能选择不同的根目录,但机制是相同的。一旦计算了每个组件的目录,这些根目录对Windows Installer没有任何意义。

如果需要维护目录,则必须将它们保存在注册表中的供应商/应用程序特定位置。 WiX产品可以write此信息并使用RegistrySearch进行阅读。 Wix Bundle可以使用util:RegistrySearch来读取它。如果没有获得所需的特定信息,WiX产品可以使用自定义操作,WiX Bundle可以使用自定义BootstrapperApplication。两者都可以通过C,COM或.NET(使用WiX的DTF库)使用Windows Installer API。

所以,希望您目前正在创作该软件包的版本“1”,并且可以使用内置的注册表工具记录您需要的位置。