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