WiX Toolset

  公司换软件打包平台,弄了一个月,Wix toolset的中文资料真的不多,逼着自己看了不少英文资料,终于弄懂了WiX打包的过程,做出了满足要求的安装包

  一点基本概念:(From WiX 技巧)

“WiX 使用声明性语言,而不是过程性语言,这意味着您要描述您的安装将是什么样子的,而不用描述为了实现它需要执行哪些步骤。这可能与您的习惯不同,但它非常容易掌握。通常,要安装在目标计算机上的描述文件将填充 WiX 源文件。在 WiX 源文件中,有三个与您希望安装的文件有关的主要元素:文件、组件和功能。文件元素是对单个文件的引用。文件必须包含在组件元素中,组件元素是最小的安装单 位。就是说,如果您有一个包含 100 个文件的组件,并且您要安装该组件,则会安装它包含的所有文件。相反,如果不安装该组件,则不安装任何文件。建议不要创建包含大量文件的组件。组件始终包含在功能元素中,并且可以包含在多个功能中。功能是一组组件,也可能是一组子功能。如果安装程序具有允许用户选择要安装哪些项的图形界面,则用户实际是在选择功能。”

  前期也做过不少调研:Inno、Nsis、WiX,(很感谢QQ群里的热心人O(∩_∩)O~)

  说实话,我是比较倾向于前两种打包方式的,客观的说,Inno的下载量少的惊人(http://sourceforge.net),后期的维护也比较困难,Nsis比较成熟,是主流的解决方案。但是作为WiX,它和C#的兼容性比较好,后面写custom(自定义动作)就可以用C#写,使用的语言比较新,维护起来还ok。

  使用软件:VS2010 + WiX Toolset

  寻求帮助方式:StackOverflow tagged wix OR Volunteer Mailing list OR Paid support

  Step By Step:下载安装 WiX (URL:http://wixtoolset.org/releases/

  1、安装后打开VS2010会看到如下界面:

    

  2、点击新建Setup Project,就可以建立一个WiX的工程。Setup Project建立一个安装程序(可以生成msi安装包);有多个msi的时候,就需要建立Bootstrapper工程;Custom Action 用于做自定义动作。

  3、看到product.wxs文件(刚学时,苦于没有最简代码,网上找了一个例子),修改如下:

  

<?xml version="1.0"?>
<?define ProductVersion = "0.0.1"?>
<?define ProductUpgradeCode = "12345678-1234-1234-1234-111111111111"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
   <Product Id="*" UpgradeCode="$(var.ProductUpgradeCode)" 
            Name="Example Product Name" Version="$(var.ProductVersion)" Manufacturer="Example Company Name" Language="1033">
      <Package InstallerVersion="200" Compressed="yes" Comments="Windows Installer Package"/>
      <Media Id="1" Cabinet="product.cab" EmbedCab="yes"/>
      <Icon Id="ProductIcon" SourceFile="example.ico"/>
      <Property Id="ARPPRODUCTICON" Value="ProductIcon"/>
      <Property Id="ARPHELPLINK" Value="http://www.exampleproduct.com"/>
      <Property Id="ARPURLINFOABOUT" Value="http://www.examplecompany.com"/>
      <Property Id="ARPNOREPAIR" Value="1"/>
      <Property Id="ARPNOMODIFY" Value="1"/>
      <Upgrade Id="$(var.ProductUpgradeCode)">
         <UpgradeVersion Minimum="$(var.ProductVersion)" OnlyDetect="yes" Property="NEWERVERSIONDETECTED"/>
         <UpgradeVersion Minimum="0.0.0" Maximum="$(var.ProductVersion)" IncludeMinimum="yes" IncludeMaximum="no" 
                         Property="OLDERVERSIONBEINGUPGRADED"/>      
      </Upgrade>
      <Condition Message="A newer version of this software is already installed.">NOT NEWERVERSIONDETECTED</Condition>

      <Directory Id="TARGETDIR" Name="SourceDir">
         <Directory Id="ProgramFilesFolder">
            <Directory Id="INSTALLDIR" Name="Example">
               <Component Id="ApplicationFiles" Guid="12345678-1234-1234-1234-222222222222">
                  <File Id="ApplicationFile1" Source="example.exe"/>
               </Component>
            </Directory>
         </Directory>

         <Directory Id="ProgramMenuFolder">
            <Directory Id="ProgramMenuSubfolder" Name="Example">
               <Component Id="ApplicationShortcuts" Guid="12345678-1234-1234-1234-333333333333">
                  <Shortcut Id="ApplicationShortcut1" Name="Example Shortcut Name" Description="Example Product Name" 
                            Target="[INSTALLDIR]example.exe" WorkingDirectory="INSTALLDIR"/>
                  <RegistryValue Root="HKCU" Key="Software\Example Company Name\Example Product Name" 
                            Name="installed" Type="integer" Value="1" KeyPath="yes"/>
                  <RemoveFolder Id="ProgramMenuSubfolder" On="uninstall"/>
               </Component>
            </Directory>
         </Directory>
      </Directory>

      <InstallExecuteSequence>
         <RemoveExistingProducts After="InstallValidate"/>
      </InstallExecuteSequence>

      <Feature Id="DefaultFeature" Level="1">
         <ComponentRef Id="ApplicationFiles"/>
         <ComponentRef Id="ApplicationShortcuts"/>         
      </Feature>
   </Product>
</Wix>

  
  点F6编译,看到错误提示,添加缺少的文件,一个最基本的安装包就做好了。
  
 

转载于:https://www.cnblogs.com/yeshen/p/Yeshen.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值