Wix 安装部署(一)同MSBuild 自动生成打包文件
2015-01-06 12:58
691 查看
因为项目需要,最近在研究Wix打包部署,园子里也有一些关于wix的博客,方方面面,讲的点各不同。我自己也在测试过程中,写下过程,以供参考。最新版本WiX Toolset v3.7,如何安装的就不说了,可以参考 http://blog.csdn.net/rryqsh/article/details/8274832
打包关心的问题有 1).Net版本检查 2)桌面和菜单栏的快捷方式 3)更换图标画面,进度条 4)自动打包 5)自动更新版本。6)安装目录和细节 带着问题去探索,欢迎补充。先走通一个简单的Demo,再回头看概念。
第一个Wix set Up
1.先创建一个简单的Winform程序
View Code
2)XML文档元素
Wix本身就是基于XML,因此定义了很多特定的元素,刚开始一看,因为不熟悉容易搞晕。 先也只是初步认识,深入了解还是需要后面的不断测试。不全面的可以去看官方的文档。
* Product 的父级只有wix,主要由Id,Language,等属性
Id:产品的GUID,GUID可以借助VS-->工具--->创建GUID 会有五种格式来供选择,这里用4,5,6。不要括号。
Codepage:指所在地区的代码页,用来进行区域区分
Language:指所在地区使用的语言,为数字编号,
Manufacturer:制作厂商
Name:产品名称
UpgradeCode:产品更新的GUID
Version:版本号
下来列举几个常见的区域代号:
语言 语言-国家 Language Codepage
English en-us 1033 1252
Simplified Chinese zh-cn 2052 936
Traditional Chinese zh-tw 1028 950
*Package 记录一些安装包的信息
InstallerVersion:安装此安装包需要的最小Windows Installer版本,用Windows Installer的主要版本乘以100 加上Window Installer的次要版本。 比如 “200” 代表的是Windows Installer2.0,而405代表的是Windows Installer4.5.
Compressed: 这个为Yes 表示在源文件中含有压缩文件,对于Merge Module这个属性不必设置。反正为 NoType.
InstallPrivileges:字面意思为安装优先级,有limited 和 elevated两种 后者是默认值,
InstallScope: 值为枚举类型,字面意思为安装范围,值必须是perMachine 或者 perUser. 看文档不知道确切的用处,先放过。
*MajorUpgrade 这个元素支持防止降级
AllowDowngrades:即回到低版本,如果设置为No(默认值) 会被阻止,这个时候DowngradeErrorMessage 属性必须设置,以给出提示。
DowngradeErrorMessage:当你安装一个低版本的安装包时会给出的提示。
*Feature 一个特性表,特性是可安装的最小单元。 子元素中的ComponentGroupRef 是和 ComponentGroup对应的。前者相当于一个安装目录,后者记录了安装文件的具体位置。
Id:是唯一的
Title:就是个短的说明。
Level:安装的等级,值为0 会使这个特性无效,默认值为1
Absent:这个属性定义User是否有权在用户接口中去选择使某个特性不安装(absent),值为allow或者disallow之一
*Fragment 元素是在wix中创建一个安装数据库的基础块(msi文件就是个数据库),定义之后,是不可改变的(目前不太理解....ORZ)。它的子元素中含有*Ref的元素必须有对应的单元,比如在Fragment中含有两个Component元素,那么 你必须在Feature中用ComponentRef 与Component对应. 默认生成的文档中含有两个Fragment块。 一个包含的是Directory,一个包含的是ComponentGroup ,前者指的是安装目录,后者顾名思义就是Component的一个集合。
*Directory 产品的安装目录。第一个Directory Id=TARGETDIR 是根目录,每一个wix工程都会有这个目录元素,第二个Id=ProgramFilesFolder 对应的就是C:\Program Files\ ,64位的就在x86下,第三个元素就是我们自己的应用程序所在的文件夹,最终形成就是c:\Program Files\My Application Name 在默认的提示中 也可以看见在Component 中添加安装文件,资源,注册表等。这里可以看见最里面的Directory的Id=INSTALLFOLDER是和第二个Fragment中的ComponentGroup的Directory属性是一致的。在Component中就是每一个你需要安装的单元以及它的位置。
整体看一下 Directory定义了安装目录,Component定义了组件及位置,Feature定义了组件在安装时的一些特性。Product和package等定义了安装包的信息。所以还是比较语义化的,继续探索。
以上只是个人小结,难免有所不当,欢迎指正,如果对你有帮助,请帮忙顶一下。:)
打包关心的问题有 1).Net版本检查 2)桌面和菜单栏的快捷方式 3)更换图标画面,进度条 4)自动打包 5)自动更新版本。6)安装目录和细节 带着问题去探索,欢迎补充。先走通一个简单的Demo,再回头看概念。
第一个Wix set Up
1.先创建一个简单的Winform程序
View Code
2)XML文档元素
Wix本身就是基于XML,因此定义了很多特定的元素,刚开始一看,因为不熟悉容易搞晕。 先也只是初步认识,深入了解还是需要后面的不断测试。不全面的可以去看官方的文档。
* Product 的父级只有wix,主要由Id,Language,等属性
Id:产品的GUID,GUID可以借助VS-->工具--->创建GUID 会有五种格式来供选择,这里用4,5,6。不要括号。
Codepage:指所在地区的代码页,用来进行区域区分
Language:指所在地区使用的语言,为数字编号,
Manufacturer:制作厂商
Name:产品名称
UpgradeCode:产品更新的GUID
Version:版本号
下来列举几个常见的区域代号:
语言 语言-国家 Language Codepage
English en-us 1033 1252
Simplified Chinese zh-cn 2052 936
Traditional Chinese zh-tw 1028 950
*Package 记录一些安装包的信息
InstallerVersion:安装此安装包需要的最小Windows Installer版本,用Windows Installer的主要版本乘以100 加上Window Installer的次要版本。 比如 “200” 代表的是Windows Installer2.0,而405代表的是Windows Installer4.5.
Compressed: 这个为Yes 表示在源文件中含有压缩文件,对于Merge Module这个属性不必设置。反正为 NoType.
InstallPrivileges:字面意思为安装优先级,有limited 和 elevated两种 后者是默认值,
InstallScope: 值为枚举类型,字面意思为安装范围,值必须是perMachine 或者 perUser. 看文档不知道确切的用处,先放过。
*MajorUpgrade 这个元素支持防止降级
AllowDowngrades:即回到低版本,如果设置为No(默认值) 会被阻止,这个时候DowngradeErrorMessage 属性必须设置,以给出提示。
DowngradeErrorMessage:当你安装一个低版本的安装包时会给出的提示。
*Feature 一个特性表,特性是可安装的最小单元。 子元素中的ComponentGroupRef 是和 ComponentGroup对应的。前者相当于一个安装目录,后者记录了安装文件的具体位置。
Id:是唯一的
Title:就是个短的说明。
Level:安装的等级,值为0 会使这个特性无效,默认值为1
Absent:这个属性定义User是否有权在用户接口中去选择使某个特性不安装(absent),值为allow或者disallow之一
*Fragment 元素是在wix中创建一个安装数据库的基础块(msi文件就是个数据库),定义之后,是不可改变的(目前不太理解....ORZ)。它的子元素中含有*Ref的元素必须有对应的单元,比如在Fragment中含有两个Component元素,那么 你必须在Feature中用ComponentRef 与Component对应. 默认生成的文档中含有两个Fragment块。 一个包含的是Directory,一个包含的是ComponentGroup ,前者指的是安装目录,后者顾名思义就是Component的一个集合。
<Fragment> <Directory Id="TARGETDIR" Name="SourceDir"> <Directory Id="ProgramFilesFolder"> <Directory Id="INSTALLFOLDER" Name="Setup07" /> </Directory> </Directory> </Fragment> <Fragment> <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER"> <!-- TODO: Remove the comments around this Component element and the ComponentRef below in order to add resources to this installer. --> <!-- <Component Id="ProductComponent"> --> <!-- TODO: Insert files, registry keys, and other resources here. --> <Component Id="ProductComponent"> <File Source="$(var.MyApplication.TargetPath)" /> </Component> </ComponentGroup> </Fragment>
*Directory 产品的安装目录。第一个Directory Id=TARGETDIR 是根目录,每一个wix工程都会有这个目录元素,第二个Id=ProgramFilesFolder 对应的就是C:\Program Files\ ,64位的就在x86下,第三个元素就是我们自己的应用程序所在的文件夹,最终形成就是c:\Program Files\My Application Name 在默认的提示中 也可以看见在Component 中添加安装文件,资源,注册表等。这里可以看见最里面的Directory的Id=INSTALLFOLDER是和第二个Fragment中的ComponentGroup的Directory属性是一致的。在Component中就是每一个你需要安装的单元以及它的位置。
$(var.MyApplication.TargetPath)是wix引用变量。见下表。当然vs2010只是当前版本的意思。
Variable name | Example usage | Example value |
var.ProjectName.Configuration | $(var.MyProject.Configuration) | Debug or Release |
var.ProjectName.FullConfiguration | $(var.MyProject.FullConfiguration) | Debug|AnyCPU |
var.ProjectName.Platform | $(var.MyProject.Platform) | AnyCPU, Win32, x64 or ia64 |
var.ProjectName.ProjectDir | $(var.MyProject.ProjectDir) | C:\users\myusername\Documents\Visual Studio 2010\Projects\MyProject\ |
var.ProjectName.ProjectExt | $(var.MyProject.ProjectExt) | .csproj |
var.ProjectName.ProjectFileName | $(var.MyProject.ProjectFileName) | MyProject.csproj |
var.ProjectName.ProjectName | $(var.MyProject.ProjectName) | MyProject |
var.ProjectName.ProjectPath | $(var.MyProject.ProjectPath) | C:\users\myusername\Documents\Visual Studio 2010\Projects\MyProject\MyApp.csproj |
var.ProjectName.TargetDir | $(var.MyProject.TargetDir) | C:\users\myusername\Documents\Visual Studio 2010\Projects\MyProject\bin\Debug\ |
var.ProjectName.TargetExt | $(var.MyProject.TargetExt) | .exe |
var.ProjectName.TargetFileName | $(var.MyProject.TargetFileName) | MyProject.exe |
var.ProjectName.TargetName | $(var.MyProject.TargetName) | MyProject |
var.ProjectName.TargetPath | $(var.MyProject.TargetPath) | C:\users\myusername\Documents\Visual Studio 2010\Projects\MyProject\bin\Debug\MyProject.exe |
var.ProjectName.Culture.TargetPath | $(var.MyProject.en-US.TargetPath) | C:\users\myusername\Documents\Visual Studio 2010\Projects\MyProject\bin\Debug\en-US\MyProject.msm |
var.SolutionDir | $(var.SolutionDir) | C:\users\myusername\Documents\Visual Studio 2010\Projects\MySolution\ |
var.SolutionExt | $(var.SolutionExt) | .sln |
var.SolutionFileName | $(var.SolutionFileName) | MySolution.sln |
var.SolutionName | $(var.SolutionName) | MySolution |
var.SolutionPath | $(var.SolutionPath) | C:\users\myusername\Documents\Visual Studio 2010\Projects\MySolution\MySolution.sln |
以上只是个人小结,难免有所不当,欢迎指正,如果对你有帮助,请帮忙顶一下。:)
相关文章推荐
- Wix 安装部署(一)同MSBuild 自动生成打包文件
- Wix 安装部署(一)同MSBuild 自动生成打包文件 转
- Wix 安装部署(一)同MSBuild 自动生成打包文件
- Wix 安装部署教程(十六) -- 自动生成多语言文件
- c#自动附加分离备份还原数据库 C#生成安装文件后自动附加数据库的思路跟算法 打包之后,运行之前
- Wix 安装部署教程(八) 自动生成XML小工具
- prjDAOTest - 不安装Excel,自动生成Excel文件 - 超简单事例 - VB6 + DAO
- Asp.net(C#)和创建SQL数据库(.sql)文件的打包部署安装 并创建iis
- vs2005生成安装部署文件
- C#生成安装文件后自动附加数据库的思路跟算法
- 在CruiseControl.net 中用 devenv.com 自动生成 *.msi 安装文件
- vs2008安装部署生成安装文件时弹出的对话框
- C# 解决方案打包,生成安装文件
- android使用ant自动打包(更改java文件中的属性值,批量自动生成)
- vs2005中如何发布网站及打包web项目生成安装文件【转】
- VS2005安装部署项目时注册表项获得执行文件的目录(安装时设定开机自动运行)
- Ant搞定全部开发流程 (包括编译、打包,签名,制作安装文件,生成帮助文档全部搞定)
- vs2005生成安装部署文件的步骤
- .net数据库部署(安装文件打包)
- 捆绑AIR runtime打包生成exe安装文件