关键词:wix基础;AutoCAD插件;msi安装包;自动更新
**
**
先说一下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对应第二部分的一个componentgroupRef,ID相互对应,而其后的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
本站由北京市万商天勤律师事务所王兴未律师提供法律服务