Wix学习整理(1)——快速入门HelloWorld
1 Wix简介
Wix是Windows Installer XML的简称,其通过类XML文件格式来指定了用于创建Windows Installer安装包数据库的元素。关于Wix的详细介绍,查看Wix Tutorial。
通过http://wix.codeplex.com/,我们下载最新的Wix toolset,并进行安装。
2 1+1=2
动手实践是感受最深的方式。下面我们就通过制作一个简单的HelloWorld安装包来感受一下Wix。
2.1 HelloWorld程序
我们编写一个很简单的C# 的HelloWorld程序。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace HelloInstallerDemo
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
Console.ReadKey();
}
}
}
编译该程序,生成可运行程序HelloWorld.exe。
2.2 制作HelloWorld.msi安装包
在HelloWorld.exe所在文件夹中新建一个文件Product.wxs(.wxs是Wix源文件的扩展名),然后打开该文件,填入下面源代码
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Name="HelloMSI" Language="1033" Version="1.0.0.0" Manufacturer="LEH" UpgradeCode="1de12ee7-2e94-42ac-979f-06245a0ade30">
<Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />
<Media Id="1" Cabinet="media1.cab" EmbedCab="yes" /> <Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="INSTALLFOLDER" Name="HelloWorld">
<Component Id="ProductComponent" Guid="B5F0C012-49D6-4C63-AFCA-0CE6C24C6D7D">
<File Id="HelloWorld" Source="HelloWorld.exe" />
</Component>
</Directory>
</Directory>
</Directory> <Feature Id="ProductFeature" Title="HelloWorld" Level="1">
<ComponentRef Id="ProductComponent" />
</Feature>
</Product>
</Wix>
保存后,Wix源文件需要经过编译和链接才能够生成所需要的.msi文件,编译命令为candle而链接命令为light,candle.exe和light.exe在安装Wix toolset时安置在目录C:\Program Files\WiX Toolset v3.6\bin下,将该目录添加到系统的环境变量path中,这样我们就可以在任何目录下使用这两个命令(注:修改环境变量path后需要重新系统方能生效)。下面我们进行编译和链接。
首先,打开cmd,通过命令cd切换到Wix源文件所在目录(如我的E:\Program\CSharp\HelloWorld\HelloWorld\bin\Debug);接着,通过命令candle编译Product.wxs文件,

命令candle编译Wix源文件.wxs生成中间文件.wixobj,然后将命令light作用在.wixobj文件上生成.msi文件,

上面light命令中-out选项指定了链接生成的文件名为HelloWorld.msi。下面我们查看目录E:\Program\CSharp\HelloWorld\HelloWorld\bin\Debug,

从上图我们可以看到,我们成功的生成了HelloWorld.msi文件。
2.3 验收我们的成果
双击HelloWorld.msi文件,我们可以看到下面的安装界面

静等一会,当该界面消失后,表示安装已完成,此时我们的HelloWorld.exe文件安装在目录C:\Program Files\HelloWorld下,

双击HelloWorld.exe文件,即可运行之,如图所示,

安装后,我们可以右键HelloWorld.msi来卸载。至此,我们已成功实现我们的目标。
Wix学习整理(1)——快速入门HelloWorld的更多相关文章
- Wix学习整理(2)——HelloWorld安装添加UI
原文:Wix学习整理(2)--HelloWorld安装添加UI 在前一篇随笔Wix学习整理(1)——快速入门HelloWorld中,我们制作的安装包安装界面太简单,没有与用户进行交互的过程.下面我们修 ...
- RabbitMQ学习总结 第二篇:快速入门HelloWorld
目录 RabbitMQ学习总结 第一篇:理论篇 RabbitMQ学习总结 第二篇:快速入门HelloWorld RabbitMQ学习总结 第三篇:工作队列Work Queue RabbitMQ学习总结 ...
- Wix学习整理(7)——在开始菜单中为HelloWorld添加卸载快捷方式
原文:Wix学习整理(7)--在开始菜单中为HelloWorld添加卸载快捷方式 通过前面的几篇随笔,我们已经给我们的HelloWorld提供了填写注册表信息,以及开始菜单快捷方式和桌面快捷方式.这些 ...
- Wix学习整理(4)——关于WiX文件格式和案例HelloWorld的分析
原文:Wix学习整理(4)--关于WiX文件格式和案例HelloWorld的分析 关于WiX文件格式 .wxs是WiX的源文件扩展名..wxs文件以类XML文件的格式来指定了要构造Windows In ...
- Wix学习整理(6)——安装快捷方式
原文:Wix学习整理(6)--安装快捷方式 一 为HelloWorld案例添加安装快捷方式 通常我们安装一个应用软件的时候,都喜欢在桌面或开始菜单中添加快捷方式以便我们快速访问.现在我们就在上篇添加注 ...
- Wix学习整理(5)——安装时填写注册表
原文:Wix学习整理(5)--安装时填写注册表 一 Microsoft操作系统的注册表 什么是注册表? 注册表是Mircrosoft Windows中的一个重要的数据库,用于存储系统和应用程序的设置信 ...
- Wix学习整理(3)——关于Windows Installer和MSI
原文:Wix学习整理(3)--关于Windows Installer和MSI 关于Windows Installer Windows Installer是微软Windows操作系统自带的一个软件安装和 ...
- MyBatis学习总结-MyBatis快速入门的系列教程
MyBatis学习总结-MyBatis快速入门的系列教程 [MyBatis]MyBatis 使用教程 [MyBatis]MyBatis XML配置 [MyBatis]MyBatis XML映射文件 [ ...
- php随笔3-thinkphp 学习-ThinkPHP3.1快速入门(1)基础
ThinkPHP3.1快速入门(1)基础 简介 ThinkPHP是一个快速.简单的基于MVC和面向对象的轻量级PHP开发 框架,遵循Apache2开源协议发布,从诞生以来一直秉承简洁实用的设计原则,在 ...
随机推荐
- delphi程序设计之底层原理(有些深度)
虽然用delphi也有7,8年了,但大部分时间还是用在系统的架构上,对delphi底层还是一知半解,今天在网上看到一篇文章写得很好,虽然是07年的,但仍有借鉴的价值. 现摘录如下: Delphi程序设 ...
- 1.1-学习Opencv与MFC混合编程之---利用画图函数,生成视频,并写入视频文件
源代码地址:http://download.csdn.net/detail/nuptboyzhb/3961674 写视频文件 Ø 新建菜单项,Learning OpenCV——> OpenCVr ...
- EasyUI - Draggable 拖动控件
效果: html代码: <div id="box" style="width: 400px; height: 200px; background-color: #f ...
- 重操JS旧业第一弹:Script与JS加载
不管js被包装成什么样子,最终交给浏览器执行的js都是原生的,都离不开原生js的原理. Script标签纸html中用来加载js的标签,我们知道js可以是来自外部,本地,或者内部一段代码,在这里只讨论 ...
- 在DLL中封装的VCL窗体Tab键响应的问题
在DLL中的子窗体不会响应Tab按键的,这个时候就需要手动去指定Tab键的操作,但是前提是主窗体要向这个窗体发送一个消息,一个Tab键按下的消息.基本顺序是这样的: 1. 主窗体用Hook技术捕获Ta ...
- 【ASP.NET Web API教程】2.3.2 创建域模型
原文:[ASP.NET Web API教程]2.3.2 创建域模型 Part 2: Creating the Domain Models 第2部分:创建域模型 本文引自:http://www.asp. ...
- 11661 - Burger Time?
Burger Time? Everybody knows that along the more important highways there are countless fast food ...
- 14.8.1 Enabling File Formats
14.8 InnoDB File-Format Management 14.8.1 Enabling File Formats 14.8.2 Verifying File Format Compati ...
- Bigcommerce:安装的出错解决方案
我们在本地安装时报错了,具体如下: 1. The database details you entered are incorrect: You have an error in your SQL s ...
- 在 SSIS package 中使用FTP
在ssis 包中使用FTP 实际上很简单, 直接拿一个FTP控制流(FTP 任务) ,配置一下FTP 服务器就可以了, 但是当我想在SQL Server Job 中使用这个功能时却报了个错(如下), ...