【问题标题】:How to install a plugin or add-on with WiX如何使用 WiX 安装插件或附加组件
【发布时间】:2009-08-27 10:23:13
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      所以我发现对我来说最好的方法是 让原安装程序留下一个 以某种方式指定的注册表项 在哪里安装插件,以及 为 插件。

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

      <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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-07-24
        • 2013-06-06
        • 2013-02-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-14
        • 1970-01-01
        相关资源
        最近更新 更多