如何使用WiX安装插件或插件

时间:2009-08-27 10:23:13

标签: plugins wix add-in wix3 add-on

我需要在我们编写的应用程序中安装插件(或附加组件)。我使用WiX作为应用程序的安装程序。 在我看来,插件是应用程序的可选部分。它需要集成到应用程序的文件系统结构中,但也可以在以后添加,即使是那些无法控制原始应用程序安装程序的人也可以添加。所以我发现WiX的所有开箱机制都不合适:小/小/主要更新和补丁机制似乎都不符合前一个短语中规定的先决条件。 因此,我发现对我来说最好的方法是让原始安装程序留下一个注册表项,以某种方式指定安装插件的位置,并为插件构建单独的安装程序。这留下了问题,如何继续卸载,但这是我以后可以处理的问题。 有没有人有更好的主意?在WiX中是否有专门针对此的机制我不知道? Thnx的建议, 的N-曼

2 个答案:

答案 0 :(得分:3)

注册表项是解决此问题的常用方法。更多以Windows Installer为中心的创建插件目录的方法是使用Component创建插件目录,并让其他人使用ComponentSearch作为Component / @Guid。

在没有外部引导程序/ chainer管理卸载的情况下,您的应用程序很难(可能是不可能的)同时卸载插件。将插件的卸载与应用程序完全分离要容易得多,这样就可以更容易地将它们拆除。

答案 1 :(得分:0)

  

所以我发现对我来说最好的方法是   让原始安装人员离开   注册表项以某种方式指定   在哪里安装插件,和   为...建立单独的安装程序   插件。

是的,我认为这是标准方法。您的主应用程序安装程序可以留下一个注册表项,关于安装插件的位置,如下所示:

<Registry Id='WritePluginsLoc'
  Root='HKLM'
  Key='Software\Acme\Foo 1.x' 
  Name='PluginsLocation'
  Type='string'
  Action='write'
  Value='[PLUGINSFOLDER]' />

然后,插件安装程序可以检索注册表项,如下所示:

<Property Id="PLUGINSFOLDER">
  <RegistrySearch Id='PluginsLocationSearch'
     Root='HKLM' 
     Key='Software\Acme\Foo 1.x'
     Name='PluginsLocation'
     Type='raw' />
</Property>

要自动卸载插件和主产品,我担心你必须编写自定义卸载程序exe。这个exe必须知道如何找到插件MSI产品代码,并为每个代码调用msiexec /x