您好,欢迎来到爱go旅游网。
搜索
您的当前位置:首页WIX插件安装包的生成(一)最简安装与安装风格

WIX插件安装包的生成(一)最简安装与安装风格

来源:爱go旅游网

公司要求对winform编写的AutoCAD Electrical插件生成安装包,以实现一键安装插件功能以及自动更新内部新版本功能。这篇文章可能会记录的很精炼,因此每一句话都可能是重点哦~

关键词:wix基础;AutoCAD插件;msi安装包;自动更新
**

一、wix最简安装包生成

**
先说一下wix的基本使用情况。wix是使用xml代码编写的一种能够创建 Microsoft Windows Installer 数据库文件(MSI 和 MSM)的一组工具,说白了就是把你生成的exe或dll文件以及编译执行过程中需要的程序集等内容打包成两个文件,.msi文件和.cab文件。其中,.msi文件相当于一个程序的组成文件,而.cab文件相当于把你的内部文件生成一个压缩包。

<Fragment>
    <ComponentGroup Id="ProductComponents" Directory="TESTFILEPRODUCTDIR">
      <Component Id="ProductComponent">
        <File Id="testAssembly" Source="$(var.test.TargetPath)"  KeyPath="yes"/>
      </Component>
    </ComponentGroup>
</Fragment>

fragment将整个部分括起来,其中可以分作多个componentgroup,每一个componentgroup对应第二部分的一个componentgroupRefID相互对应,而其后的directory指你要将以下这些文件放入哪个文件夹(填入第三部分所设计文件夹的ID)。componentgroup中有component,ID随意,里面的file标签表示移动文件,source指文件来源,具体见下表(参考wix官方文档)

二、增加安装包的选择路径功能
之前的安装包是我们的最简形式,并不具有选择安装路径的功能,这部分以此为引出点介绍wix生成安装包的五种UI风格。首先在referreference中引入WixUIExtension.dll文件,路径是

C:\Program Files (x86)\WiX Toolset v3.11\bin\WixUIExtension.dll
<UIRef Id=”WixUI_Minimal” />
<Property Id=”WIXUI_INSTALLDIR” Value=”INSTALLFOLDER” />
<UIRef Id=”WixUI_InstallDir” />

3.WixUI_Advanced风格
WixUI_Advanced提供了与WixUI_Minimal类似的一键安装形式。不过其在协议界面提供了配置高级选项的按钮。在高级选项中,我们可以选择该产品是安装给当前用户还是给所有用户的,在Wix文件中需要一个Id为“WixAppFolder”的属性(Property),指定默认选择当前用户(WixPerUserFolder)还是所有用户(WixPerMachineFolder)。另外,需要一个Id为“ApplicationFolderName”的属性来指定产品所安装在的默认文件夹。

<Property Id=”ApplicationFolderName” Value=”HelloWorld” />
<Property Id=”WixAppFolder” Value=”WixPerUserFolder” />
<UIRef Id=”WixUI_Advanced” />

4.WixUI_FeatureTree风格

WixUI_FeatureTree与WixUI_Mondo的区别是WixUI_FeatureTree省略了安装类型对话框。协议同意对话框之后就直接到部件(Feature)选择对话框了。当我们的产品默认是安装所有部件时,更推荐采用WixUI_Feature而不是WixUI_Mondo。其用法是:

<UIRef Id=”WixUI_FeatureTree” />

5.WixUI_Mondo风格

<UIRef Id=”WixUI_Mondo” />

我们这里采用了WixUI_InstallDir风格,增加后代码如下(需要注意TESTFILEPRODUCTDIR这个文件名分别用在了哪):

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Product Id="*" Name="testUpdate" Language="1033"  Version="0.0.0.0" Manufacturer="ZJU" UpgradeCode="7a5a88-caad-43d6-ae74-4f5f9628f7e6">
        <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />

        <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
        <MediaTemplate />
        <Feature Id="ProductFeature" Title="testUpdate" Level="1">
            <ComponentGroupRef Id="ProductComponents" />
        </Feature>
        <UI>
          <UIRef Id="WixUI_InstallDir" />
        </UI>
        <Property Id="WIXUI_INSTALLDIR" Value="TESTFILEPRODUCTDIR" />
    </Product>

    <Fragment>
        <Directory Id="TARGETDIR" Name="SourceDir">
            <Directory Id="ProgramFilesFolder">
                <Directory Id="TESTFILEPRODUCTDIR" Name="testUpdate" />
            </Directory>
        </Directory>
    </Fragment>

    <Fragment>
        <ComponentGroup Id="ProductComponents" Directory="TESTFILEPRODUCTDIR">
      <Component Id="ProductComponent">
        <File Id="testAssembly" Source="$(var.test.TargetPath)"  KeyPath="yes" Assembly="win32"/>
      </Component>
        </ComponentGroup>
    </Fragment>
</Wix>

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- igat.cn 版权所有 赣ICP备2024042791号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务