Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Plugins 如何使用WiX安装插件或附加组件_Plugins_Wix_Add In_Wix3_Add On - Fatal编程技术网

Plugins 如何使用WiX安装插件或附加组件

Plugins 如何使用WiX安装插件或附加组件,plugins,wix,add-in,wix3,add-on,Plugins,Wix,Add In,Wix3,Add On,我需要在我们编写的应用程序中安装插件(或附加组件)。我为应用程序的安装程序创建了一个用户WiX。 在我看来,插件是应用程序的可选部分。它需要集成到应用程序的文件系统结构中,但也可以在以后添加,甚至可以由对原始应用程序的安装程序没有控制权的人添加。因此,我发现WiX的所有开箱即用机制都不充分:无论是小/小/大更新还是补丁机制似乎都不符合前一阶段所述的先决条件。 因此,我发现最好的方法是让原始安装程序留下一个注册表项,以某种方式指定在哪里安装插件,并为插件构建单独的安装程序。这留下了一个悬而未决的问

我需要在我们编写的应用程序中安装插件(或附加组件)。我为应用程序的安装程序创建了一个用户WiX。 在我看来,插件是应用程序的可选部分。它需要集成到应用程序的文件系统结构中,但也可以在以后添加,甚至可以由对原始应用程序的安装程序没有控制权的人添加。因此,我发现WiX的所有开箱即用机制都不充分:无论是小/小/大更新还是补丁机制似乎都不符合前一阶段所述的先决条件。 因此,我发现最好的方法是让原始安装程序留下一个注册表项,以某种方式指定在哪里安装插件,并为插件构建单独的安装程序。这留下了一个悬而未决的问题,如何继续卸载,但这是一个我以后可以处理的问题。 有人有更好的主意吗?WiX中是否有我不知道的专门用于此的机制? 谢谢你的建议, N人

所以我觉得对我来说最好的方法就是 让原始安装程序留下一个 注册表项以某种方式指定 在何处安装插件,以及 为应用程序构建单独的安装程序 插件

是的,我相信这是标准方法。主应用程序安装程序可以留下一个注册表项,说明在何处安装插件,如下所示:

<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>

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

<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

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

如果没有管理卸载的外部引导程序/链接器,在卸载应用程序的同时卸载插件将很困难(可能不可能)。完全从应用程序中分离插件的卸载要容易得多,这样就可以独立地删除插件