WIX 学习笔记 - 2 第一个WIX 项目 HelloWIX

时间:2022-04-09 13:30:26

程序员们都非常熟悉 Hello World!,基本上所有的语言书都以打印一个 Hello World! 作为第一个代码示例。

我们也要发扬代码界的优良传统,使用 Hello WIX! 作为我们的入门示例。这里对所有的东西都不会做深入的讲解。

该示例包含两个项目,一个HelloWIX 的 Console 项目负责在控制台上打印 “Hello WIX!”。

一个HelloWIXInstaller 安装程序, 生成的 MSI 文件执行后, Console 程序安装到机器上并且可以在系统的控制面板中的Programs and Features 中查看 。

在VS 中新建一个项目 HelloWIXInstaller 负责生成安装文件(MSI)。

打开VS-> File -> Add -> New Project -> Windows Installer XML -> Setup Project.

WIX 学习笔记  - 2 第一个WIX 项目 HelloWIX

HelloWIXInstaller 项目创建后,打开项目,发现有一个文件名称为 Product.wxs,双击打开文件,可以发现文件为 XML 格式文件,我们主要通过编辑此文件来控制生成的 Windows 安装包。

WIX 学习笔记  - 2 第一个WIX 项目 HelloWIX

Ok,万事俱备只欠东风。我们开始编码吧!GO! GO! GO!

1)      打开HelloWIX Console 程序,写一句 Console.WriteLine(“Hello WIX!”); 然后再写一句Console.Read();。

2)      打开HellowWIXInstaller 程序,点击 Reference -> 点击 Projects Tab, 选中HelloWIX 项目 -> 点击 Add -> 点击 OK.

WIX 学习笔记  - 2 第一个WIX 项目 HelloWIX

3)      双击打开Product.wxs, 弹出一个 XML 编辑界面,找到Product 节点,最重要的节点代表了你要部署,安装的产品。

为 Id 属性赋值为一个Guid 值。可以使用 PowerShell 的生成一个 Guid 值。

WIX 学习笔记  - 2 第一个WIX 项目 HelloWIX

修改 产品名 Name 属性为 HelloWIX。

Manfacturer 为你们公司的名字,这里我们使用 WIX。

Version 产品版本号,推荐使用 主版本号.副版本号.Build 号的格式。

  <Product Id="f3fe33a3-0f52-407e-8d4e-5e489b9b18f3" Name="HelloWIX" Language="1033" Version="1.0.0.0"
Manufacturer="WIX" UpgradeCode="fee9086b-6f65-4ccb-9854-d4fbe5877258">

4)      找到 Fragment 节点,然后找到 Id 为 INSTALLDIR 的 Directory 节点将其名称改为 HelloWIX。这个设置的是安装目录的名称。ProgramFilesFolder 是WIX 中预定义的的变量,指代目标机器上的 Program Files 目录。

<Fragment>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="INSTALLFOLDER" Name="HelloWIX" />
</Directory>
</Directory>
</Fragment>

5) 找到CommponentGroup 节点, 添加属性 Id, Directory 属性并赋值。添加Component 节点, Component 节点下添加 File 节点。其中$(var.HelloWIX.TargetDir) 表示的 HelloWIX 项目的 bin\Debug 或者 bin\Release 编译文件夹。

代码如下:

<ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
<Component Id="HelloWIXConsole" Guid="03a6e62a-25f7-4ea5-a08f-218dd2d1f689">
<File Id="HelloWIXEXE" Name="HelloWIX.exe" Source="$(var.HelloWIX.TargetDir)" KeyPath="yes"></File>
</Component> <!-- 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> -->
</ComponentGroup>

6)      编译WIX 项目 HelloWIXInstaller

7)      打开 bin\Debug 的目录,可以发现生成了一个 msi,一个  cab 和 wixpdb 文件。

*.msi 文件为安装文件

*.cab 文件为资源压缩文件

*.wixpdb 为WIX 项目调试文件

WIX 学习笔记  - 2 第一个WIX 项目 HelloWIX

8)      双击 msi 文件运行,等待运行结束打开文件夹 “C:\Program Files (x86)” 或者“C:\Program Files”, 查找 HelloWIX 文件夹,双击打开 HelloWIX 文件,发现下面有一个 HelloWIX.exe 文件,运行之。我们期待已久的界面就出来了—千呼万唤始出来呀!

WIX 学习笔记  - 2 第一个WIX 项目 HelloWIX

9)      打开控制面板,打开 Programs And Features , 可以发现 有一个程序 HelloWIX。右击可以卸载 HelloWIX 程序。

WIX 学习笔记  - 2 第一个WIX 项目 HelloWIX

通过以上步骤可以看出,WIX 帮助程序员解决了生成 MSI 安装包的复杂编码过程,仅仅通过 XML 配置,即声明的方式就可以。

相信大家在做这个实验的过程发现了, 基本上所有WIX的节点都需要 Id 属性来唯一标识一个节点,推荐程序员们在开始自己的 WIX 代码编写之前先设定Id 命名规则,否则你会因 Id 重复而伤痛脑筋的!同时我们也碰到了陌生的Component, Directory, File 等重要节点,具体什么含义,且看下回分解。

为了保证大家都能做出这个实验,特把 wxs 的配置文件奉上:

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> <Product Id="f3fe33a3-0f52-407e-8d4e-5e489b9b18f3" Name="HelloWIX" Language="1033" Version="1.0.0.0"
Manufacturer="WIX" UpgradeCode="fee9086b-6f65-4ccb-9854-d4fbe5877258">
<Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />
<MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
<MediaTemplate />
<Feature Id="ProductFeature" Title="HelloWIXInstaller" Level="1">
<ComponentGroupRef Id="ProductComponents" />
</Feature>
</Product> <Fragment>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="INSTALLFOLDER" Name="HelloWIX" />
</Directory>
</Directory>
</Fragment> <Fragment>
<ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
<Component Id="HelloWIXConsole" Guid="03a6e62a-25f7-4ea5-a08f-218dd2d1f689">
<File Id="HelloWIXEXE" Name="HelloWIX.exe" Source="$(var.HelloWIX.TargetDir)" KeyPath="yes"></File>
</Component> <!-- 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> -->
</ComponentGroup>
</Fragment>
</Wix>

WIX 学习笔记 - 2 第一个WIX 项目 HelloWIX的更多相关文章

  1. Maven学习笔记之第一个Maven项目(Linux)

    Maven是Apache旗下的管理Java项目jar包的项目管理工具,有了它可以很方便构建和管理我们的Java项目,你不必在互联网上逐个查找你需要的第三方jar包,你只需在maven reposito ...

  2. maven学习笔记(定制一个Web项目)

    创建web项目: mvn archetype:generate -DgroupId=cn.net.comsys.ut4.simpleweb -DartifactId=simple-web -Dpack ...

  3. C&num;&period;NET学习笔记2---C&num;&period;第一个C&num;程序

    C#.NET学习笔记2---C#.第一个C#程序 技术qq交流群:JavaDream:251572072  教程下载,在线交流:创梦IT社区:www.credream.com 6.第一个C#程序:   ...

  4. &lbrack;学习笔记&rsqb; 在Eclipse中导入项目

    参考前文:[学习笔记] 在Eclips 中导出项目 选择已经导出的文件: 导入之后,项目结构如下: 至此,完成.

  5. Spark学习笔记1——第一个Spark程序:单词数统计

    Spark学习笔记1--第一个Spark程序:单词数统计 笔记摘抄自 [美] Holden Karau 等著的<Spark快速大数据分析> 添加依赖 通过 Maven 添加 Spark-c ...

  6. Unity3D学习笔记2——绘制一个带纹理的面

    目录 1. 概述 2. 详论 2.1. 网格(Mesh) 2.1.1. 顶点 2.1.2. 顶点索引 2.2. 材质(Material) 2.2.1. 创建材质 2.2.2. 使用材质 2.3. 光照 ...

  7. WIX 学习笔记- 1 简介

    一个项目 Code Complete 后,程序员们欢欣鼓舞,以为事情到此结束,可以 Happy 了.其实 Code Complete 五十之于百里.一个没有运行在设备上,为人们创造价值的项目是注定失败 ...

  8. yii学习笔记--快速创建一个项目

    下载yii框架 下载地址:http://www.yiiframework.com/ 中文网站:http://www.yiichina.com/ 解压文件

  9. Vue&period;js学习笔记--菜鸟搭建一个企业级vue的项目

    vue.js新手搭建一个企业项目,从0开始 前置条件: node.npm请先安装配置好 下面开始: npm 下载vue-cli脚手架工具  确认安装成功看到版本号: 初始化项目,选用webpack(p ...

随机推荐

  1. Web前端开发高手进阶

     Web前端开发高手进阶 js框架+Ajax技术01.初识javascript及其语言基础(一)02.初识javascript及其语言基础(二)03.初识javascript及其语言基础(三)及js原 ...

  2. calc常用

    Mod:求模(整数相除求余数), And:按位与 Or:按位或 Xor:按位异或 Lsh:按位左移 Not:按位取反 Int:取整数部分

  3. 如何在Visual Studio中开发自己的代码生成器插件

     Visual Studio是美国微软公司开发的一个基本完整的开发工具集,它包括了整个软件生命周期中所需要的大部分工具,如UML工具.代码管控工具.集成开发环境(IDE)等等,且所写的目标代码适用于微 ...

  4. Java调用SQLCMD遇到的问题

    今天用Java调用SQLCMD命令时,一直提示找不到SQLCMD命令,但是通过CMD命令确可以使用,因为我的sqlcmd是新安装的,所以重新配置了新的path路径,而cmd可以调用是因为重新开一个cm ...

  5. 四轴飞行器1&period;1 Matlab 姿态显示

    四轴飞行器1.1 Matlab 姿态显示 开始做四轴了,一步一步来,东西实在很多,比较杂.先做matlab上位机,主要用来做数据分析,等板子到了可以写飞控的程序了,从底层一层一层开始写..希望能好好的 ...

  6. 分析一个socket通信: server&sol;client

    分析一个socket通信: server/client1 server 1. 创建一个server_socket文件,并绑定端口,然后监听端口 (socket, bind, listen) 2. 查询 ...

  7. 添加PDF文件对照度的粗浅原理,及方法

      上边这张照片不是异形,而是著名的鹦鹉螺.下边这张照片,是送给研究生同学的毕业纪念,向龙同学帮我激光雕刻的. 近期的照片在[http://www.douban.com/photos/album/13 ...

  8. jquery复制图片

    <div class="img-div">           <a href="javascript:void(0);"><im ...

  9. dell t130服务器安装windowsserver2008R2系统

    dell T130服务器系统是可以安装windowsserver2008R2系统. 总共8个USB端口: 后置USB:2个USB 3.0和4个USB 2.0 前置USB:1个USB 2.0和1个USB ...

  10. React-引入图片的方法

    方法一: import imgURL from '../../images/logo.png'; <img src={imgURL} alt="1"/> 方法二: &l ...