使用WIX打包客户端程序

原文:使用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中添加自定义操作部分,因项目没用上也没研究。

时间: 2024-11-09 00:20:40

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

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

原文:Wix打包系列(七) 添加系统必备组件的安装程序     我们知道在vs的打包工程中添加系统必备组件是一件很容易的事情,那么在wix中如何检测系统必备组件并在安装过程中安装这些组件.这里以.Net Framework组件作为必备组件为例:         7.1 检测.Net Framework 版本         步骤1:为安装项目添加WiX .NET extensions库的引用     如果是命令行方式使用wix,那么需要在candle和light的时候添加如下参数: -ext W

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

原文:Wix打包系列(一)如何使用wix制作安装程序     最近由于项目需要,需要给客户制作安装程序,一开始使用vs2005自带的打包工程来打包,但用了一段时间发现vs打包太死板,而且使用起来问题很多.收费的商业打包工具不在我考虑范围内,于是在网上找到了wix,稍微了解了下,发现wix的确可以满足我的需求:但是网上wix中文的资料少的可怜,百度,google上搜索到关于wix中文的资料少的可怜,有的只是一些简单的应用,还不足以满足我的要求:没办法,只能靠自己了,还好项目不是很急,于是开始花时间

Android客户端程序Gradle如何打包_Android

一.前言 android客户端开发进入尾声,负责SEO同事突然发给我一个涉及45个发布渠道的噩耗,之前只发布自有渠道的工作方式(手动修改参数打包)已经不满足需求,所以引入最近比较流行的gradle打包技术. gradle基于groovy语言,引入的原因也方便了以后从现在使用的eclipse开发环境迁移到Android Studio,所以blablabla--,不多说了,先上干货. 二.准备工作 1.首先,如果使用eclipse作为开发环境,需右键点击项目,在菜单中选择"Export-"

ipa-如何将移动网站自动打包生成IPA和APK客户端程序

问题描述 如何将移动网站自动打包生成IPA和APK客户端程序 如何将移动网站自动打包生成IPA和APK客户端程序,如下图过程

opc客户端程序-C++编写OPC客户端程序出现链接错误

问题描述 C++编写OPC客户端程序出现链接错误 unresolved external symbol IID_IOPCServer unresolved external symbol IID_IOPCSyncIO unresolved external symbol IID_IOPCItemMgt 头文件 #include "OPCWrap.h" 源文件 #include "OPC_Client.h" #include "opcda.h" #

怎样把一个C#客户端程序做成可自动更新的

问题描述 怎样把一个客户端程序打包成可自动更新的,就像QQ客户端程序样,服务器有新版本,客户端运行程序时就会有提示跟新,跪求有关案例程序 解决方案 本帖最后由 jianghaolaoda 于 2014-07-25 10:34:04 编辑解决方案二:客户端每次启动,连接服务端时,询问有没有最新版本,服务器指定最新版本存放地点,版本号,等新版本信息,客户端登录后,取得这些信息,对比自己,如果有新的,去服务端指定的地址下载.这样做最简单.解决方案三:我用过的方法:服务器放一个xml文件本地有一个xml

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

原文:Wix打包系列 (六)制作升级和补丁包     前面我们已经知道怎么制作一个完整安装包了,但我们的软件往往不能一次性就满足客户的需要,当客户需要我们给软件进行升级的时候,我们应该怎么做呢?       在这之前,我们有必要了解下Windows Installer中的Upgrades定义:       6.1 关于Windows Installer Upgrades       在Windows Installer中将软件产品的更新划分为3类: Small updates    它意味着安装

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

原文:Wix打包系列(五) 部署数据库     很多人在使用vs进行打包的时候,经常会为数据库部署的问题犯愁,即便是重写Installer类的方法,也不是很可靠方便,下面我们来看看在wix中如何部署数据库.         5.1 创建数据库         wix包含数据库的相关链接库,需要为wix添加如下命名空间: <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:util='http://schemas.

关于winform打包部署程序的问题

问题描述 请教个问题winform打包部署程序如何在客户安装时(准确的说是安装完成后)根据系统位数copy文件到不同的目录?例:在应用程序文件夹下有x86x64两个文件夹,我需要在用户安装时判定他的系统版本然后把x86或x64文件夹下的文件放入根目录也就是上一级目录哪位做过给个指引的方向急~~~ 解决方案 本帖最后由 caozhy 于 2012-04-07 19:15:58 编辑解决方案二:自己顶自己解决方案三:顶顶更健康解决方案四:大家顶才是真的顶解决方案五:刚刚写了篇博客来回答你这个问题:C