原文:使用WIX打包客户端程序

用WPF为客户做了个小工具,打包的时候发现VS2012居然没有安装项目了,搜了下才知道现在推荐使用WIX来打包了http://wix.sourceforge.net/,我用的最新3.7的。

研究了下,发现有两个要点要记录下来,一是对简体中文的支持,二是自动安装.net Framework的支持;希望大家用到该工具的时候不要再走我的弯路。

1.对简体中文的支持,在这里http://www.cnblogs.com/wfwup/archive/2009/07/16/1524708.html下载的中文资源包,加入到项目里重新编译就可以了,原作者提供的是3.0的,发现在3.7下一样能用,感谢技术手札提供。

把我的Product.wxs文件和大家分享下:

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:netfx="http://schemas.microsoft.com/wix/NetFxExtension"> <Product Id="9C505667-71C4-40C7-8B60-2F186920158C" Name="产品名称" Language="2052" Codepage="936" Version="1.0.0.0" Manufacturer="公司名称" UpgradeCode="3b259853-ebce-47cf-aeef-ef4ef089a080">
<Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />
<MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
<MediaTemplate/>
<Property Id="WIXUI_INSTALLDIR" Value="INSTALLFOLDER" />
<UIRef Id="WixUI_InstallDir" />
<Feature Id="ProductFeature" Title="OfflineViewer" Level="1">
<ComponentGroupRef Id="ProductComponents" />
<ComponentGroupRef Id="ShortcutComponents" />
</Feature>
</Product> <Fragment>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="INSTALLFOLDER" Name="OfflineViewer" />
</Directory>
<Directory Id="ProgramMenuFolder">
<Directory Id="ShortcutMenuFolder" Name="产品名称" />
</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' DiskId='1' Guid='6D98C7EE-6EF9-4747-8D03-E7AD0B6122BD'>
<File Name='CommonConfig.xml' Source="$(var.EIAC.AccountingArchivess.OfflineViewer.TargetDir)" />
<File Name='EIAC.AccountingArchivess.OfflineViewer.CustomControl.dll' Source="$(var.EIAC.AccountingArchivess.OfflineViewer.TargetDir)" />
<File Name='Offline.Common.dll' Source="$(var.EIAC.AccountingArchivess.OfflineViewer.TargetDir)" />
<File Name='EIAC.AccountingArchivess.OfflineViewer.exe' Source="$(var.EIAC.AccountingArchivess.OfflineViewer.TargetDir)" />
</Component>
<!-- </Component> -->
</ComponentGroup> <ComponentGroup Id="ShortcutComponents" Directory="ShortcutMenuFolder">
<Component Id="ApplicationShortcut" Guid="C919F5ED-D2B3-42E8-9F7C-63269274FE79">
<Shortcut Id="ApplicationStartMenuShortcut" Name="产品名称" Target="[INSTALLFOLDER]EIAC.AccountingArchivess.OfflineViewer.exe" WorkingDirectory="INSTALLFOLDER" />
<RemoveFolder Id="ShortcutMenuFolder" On="uninstall" />
<RegistryValue Root="HKCU" Key="Software/公司名称/产品名称" Name="installed" Type="integer" KeyPath="yes" Value="1" />
</Component>
</ComponentGroup>
</Fragment> </Wix>

2.自动安装.net Framework,参考了这篇文章:http://blog.csdn.net/duanzilin/article/details/5982296

用文本编辑器打开项目文件*.wixproj,在Project节点加入如下xml(请大家选择自己需要的.net版本)

 <ItemGroup>
<BootstrapperPackage
Include=".NETFramework,Version=v4.0,Profile=Client">
<Visible>False</Visible>
<ProductName>.NET Framework 4.0 Client</ProductName>
<Install>True</Install>
</BootstrapperPackage>
</ItemGroup>

<Target Name="AfterBuild">
<GenerateBootstrapper ApplicationFile="zh-cn\$(TargetFileName)"
ApplicationName="产品名称"
BootstrapperItems="@(BootstrapperPackage)"
ComponentsLocation="Relative"
CopyComponents="True"
OutputPath="$(OutputPath)"
Path="C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bootstrapper\"/>
</Target>

保存,重新编译即可。那个Bootstrapper目录请大家按照自己电脑上的目录结构修改(一般好像都一样的)

Wix中添加自定义操作部分,因项目没用上也没研究。

使用WIX打包客户端程序的更多相关文章

  1. Wix打包系列(七) 添加系统必备组件的安装程序

    原文:Wix打包系列(七) 添加系统必备组件的安装程序 我们知道在vs的打包工程中添加系统必备组件是一件很容易的事情,那么在wix中如何检测系统必备组件并在安装过程中安装这些组件.这里以.Net Fr ...

  2. Wix打包系列(一)如何使用wix制作安装程序

    原文:Wix打包系列(一)如何使用wix制作安装程序 最近由于项目需要,需要给客户制作安装程序,一开始使用vs2005自带的打包工程来打包,但用了一段时间发现vs打包太死板,而且使用起来问题很多.收费 ...

  3. 使用Inno Setup 打包.NET程序,并自动安装.Net Framework

    使用Inno Setup 打包.NET程序,并自动安装.Net Framework http://www.cnblogs.com/xiaogangqq123/archive/2012/03/19/24 ...

  4. Wix打包相关资源

    1.自定义安装界面(WixUI_Custom.wxs) <?xml version="1.0" encoding="UTF-8"?> <Wix ...

  5. vs2010打包winform程序详解

    vs2010打包winform程序详解   最近一直在做winform程序,做完后程序打包很头疼,第三方打包工具,好用的花钱,不花钱的不好用,最后只能用vs自带的打包工具了! 打包过程vs2010(包 ...

  6. Wix打包系列(四) 自定义UI

    原文:Wix打包系列(四) 自定义UI 除了标准的安装界面,如果我们要在安装时需要提供一些额外的信息时,这时就需要自定义界面来显示和录入这些信息. 4.1  自定义对话框 如上一章中我们测试数据库的连 ...

  7. Wix打包系列 (六)制作升级和补丁包

    原文:Wix打包系列 (六)制作升级和补丁包 前面我们已经知道怎么制作一个完整安装包了,但我们的软件往往不能一次性就满足客户的需要,当客户需要我们给软件进行升级的时候,我们应该怎么做呢? 在这之前,我 ...

  8. Wix打包系列(五) 部署数据库

    原文:Wix打包系列(五) 部署数据库 很多人在使用vs进行打包的时候,经常会为数据库部署的问题犯愁,即便是重写Installer类的方法,也不是很可靠方便,下面我们来看看在wix中如何部署数据库. ...

  9. Wix打包系列(三)自定义Action(Custom Action)

    原文:Wix打包系列(三)自定义Action(Custom Action) 3.1 关于Action 我们已经知道如何生成具有标准安装界面的安装程序了,Windows Installer按照我们的界面 ...

随机推荐

  1. truncate 和 delete 差异

    truncate table players; 相当于 delete from players;要么 delete players from players;  要么 delete players.* ...

  2. 数据层交换和高性能并发处理(开源ETL大数据治理工具--KETTLE使用及二次开发 )

    ETL是什么?为什么要使用ETL?KETTLE是什么?为什么要学KETTLE?        ETL是数据的抽取清洗转换加载的过程,是数据进入数据仓库进行大数据分析的载入过程,目前流行的数据进入仓库的 ...

  3. Cocos2dx 3.0 过渡篇(三十一)ValueVector和Vector不得不说的故事

    本文投票地址:http://vote.blog.csdn.net/Article/Details?articleid=37834689 前天看到一个颇为纠结的选择题:有一天你遇到一个外星人,这时外星人 ...

  4. Swift - 使用atlas图集实现动画效果(SpriteKit游戏开发)

    我们通常继承SKSpriteNode来实现游戏中的元素,除了可以使用图片作为纹理皮肤外.我们还可以使用动画纹理集来实现动画播放. 动画纹理集的制作也很简单,首先要有一套动画序列图,然后把它们放到一个文 ...

  5. 如何在一个jpg图片上面叠加文字

    1.将jpg转为bmp格式 2.在bmp文件上写上所需文字 3.将写入文字的bmp文件重新转为jpg格式 http://dev.csdn.net/develop/article/22/22948.sh ...

  6. 可以根据柜子内表取出所有的柜子信息的BAPI函数

    DATA: gt_hunumbers TYPE STANDARD TABLE OF bapihunumber,      gt_huitem  TYPE STANDARD TABLE OF bapih ...

  7. ADODB.Connection 错误 '800a0e7a'

    ADODB.Connection 错误 '800a0e7a' 未找到提供程序.该程序可能未正确安装. /conn.asp,行 6 因为系统是64位的win7或win8.1所以会出现这个问题,解决方法如 ...

  8. 外国的Delphi网站

    www.phidels.com delphifr.com http://www.swissdelphicenter.com/torry/showcode.php?id=787 B4A delphifa ...

  9. OCA读书笔记(5) - 管理ASM实例

    Objectives:Describe the benefits of using ASMManage the ASM instanceCreate and drop ASM disk groupsE ...

  10. xvfb 初步探究

    有时候我们不关注程序是否有界面(比如自动化测试),只要程序在运行就可以了 很感谢 xvfb 这个工具给我们提供了相关的功能 比如在没有 X server 的机器上运行 gedit, 可以用下面的命令 ...