0

Can I call a function from a DLL (custom action) to search for the location a program is already installed on and install my msi there?

4

1 回答 1

-1

在这种情况下,您不需要自定义操作。使用WiX 开箱即用的DirectorySearch / FileSearch元素。此外,如果该程序在系统注册表中留下痕迹,RegistrySearch元素很有用。

更新:据我从您下面的评论中了解到,您有现成的功能来检测主程序安装到的路径,并且您想利用此功能在那里安装额外的插件。

您应该编写一个立即自定义操作 (CA),它从 DLL 调用一个函数并将其安排在 AppSearch 和 LaunchConditions 之间的某个位置。此自定义操作应将结果保存到MSI 属性中,例如 INSTALLLOCATION。这意味着如果您有一个返回路径的函数,您可能希望将其包装到另一个函数(实际的 CA)中,该函数只会将该值保存到 INSTALLLOCATION 属性。

然后,您可以在目录结构中使用此属性,如下所示:

  <Directory Id="TARGETDIR" Name="SourceDir">
     <Directory Id="INSTALLLOCATION" Name="my app">
     ...
     </Directory>
  </Directory>

注意:遵循此建议仍然需要一些有关 Windows Installer 和 WiX 的基本知识,因此我强烈建议您阅读MSDNWiX 教程以获取基础知识。

于 2012-07-20T11:30:30.760 回答