[译]:WiX Toolset入门——创建一个简单的安装包

标签: WiX Toolset, 官方教程, 中文翻译

博客分类: 官方教程

返回目录索引
原文链接:Creating a Simple Setup

创建简单示例

在本教程中,我们会创建一个Winform应用程序,然后使用WiX为其创建一个安装程序。

第一步:创建Windows Form应用程序

  1. 点击文件-新建-项目
  2. 在项目模板中选择Visual C#节点,然后选择Windows窗体应用程序
  3. 将应用命名为“MyApplication”,然后点击确定

第二步:为应用创建安装程序

  1. 点击文件-新建-项目
  2. 在项目模板里选择Windows Installer XML节点,然后选择Setup Project
  3. 将项目命名为“MySetup”,然后点击确定
  4. MySetup项目中,右击Referneces,然后选择添加引用
  5. 切换到项目标签,选中MyApplication项目,然后点击添加按钮,最后点击确定
  6. 找到以下注释内容:

    <!-- TODO: Insert your files, registry keys, and other resources here. -->
    

    删除此行,并用以下代码替换:

    <File Source="$(var.MyApplication.TargetPath)" />
    
  7. 生成WiX项目

至此,就创建完一个可用的安装程序了,你可以用它来安装和卸载应用。

如果你是自己在编辑器里输入代码(不是复制粘贴当前示例),你会注意到智能提示会自动匹配元素和属性名称。在Visual Studio中,在为WiX输入元素或属性时,智能感知能极大的方便我们的输入,为我们减少大量的输入和节省时间。

示例中的那行代码表示WiX工具向安装包中添加一个资源文件。Source 属性指定了生成期间要查找的文件位置。此处我们使用预处理变量来给WiX编译器传递参数,而不是直接将属性内容硬编码。 关于更多预处理器变量的内容,见下一节内容。

使用项目引用和变量

原文链接:Using Project References and Variables

WiX项目支持添加其他项目的引用(如VB,C#)。这一点保证了在生成解决方案时的正确生成顺序。此外,它还会生成一些WiX预处理变量——可以在WiX源代码和预处理定义中进行引用。在编译时,这些参数会传递给编译器。

关于如何添加引用,见上一节内容。

支持的项目引用变量

项目一旦引用,项目变量列表就可以在WiX代码中使用。项目引用变量在你不想进行硬编码时会比较有用。例如,在添加引用之后,我对项目名称进行修改,利用$(var.MyProject.ProjectName)变量仍然可以正确的查询项目。

以下代码展示了如何在WiX源代码中引用变量:

<File Id="MyExecutable" Name="$(var.MyProject.TargetFileName)" Source="$(var.MyProject.TargetPath)" DiskId="1" />

下表将列举WiX项目中支持的应用变量:

变量名-Variable name 使用示例-Example usage 结果示例-Example value
var.ProjectName.Configuration $(var.MyProject.Configuration) Debug 或 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

注意:var.ProjectName.Culture.TargetPath仅仅适用于需要生成多种语言的情况。


译:奇葩史

没有评论