WIX是开源的安装包制作工具,基于XML编译安装包,由于它提供命令行的方式编译,因此可很好的融入到开发项目的持续集成中,因此是不想用盗版也不想花钱的开发团队的最好武器。

WIX脚本

静默调用控制台程序

  • 如果安装过程需要调用外部控制台程序,可屏蔽安装过程中出现的控制台窗口,如例:
WIX 安装包制作指南<CustomAction Id="service_start_cmd" Property="QtExecCmdLine" Value="&quot;sc.exe&quot; start SERVICE_NAME"/>
WIX 安装包制作指南
<CustomAction Id="service_start" BinaryKey="WixCA" DllEntry="CAQuietExec" Execute="immediate" Return="check" />
WIX 安装包制作指南
<InstallExecuteSequence>
WIX 安装包制作指南
<Custom Action="service_start_cmd" After="modify_config" Overridable="yes">NOT Installed</Custom>
WIX 安装包制作指南
<Custom Action="service_start" After="service_start_cmd" Overridable="yes">NOT Installed</Custom>
WIX 安装包制作指南
</InstallExecuteSequence>
  • 注意:传给"QtExecCmdLine"的值中,命令行里程序名必须用引号包围,如上例中的"sc.exe"

加入系统启动项目

WIX 安装包制作指南<Directory Id="ProgramMenuFolder" Name="ProgramMenuFolder">
WIX 安装包制作指南
<Directory Id="ProgramMenuFolderGTCA" Name="GTCA">
WIX 安装包制作指南
<Component Id="ProgramMenuGTCA" Guid="51F97418-ABF1-43B7-BB4C-2E77437FC7F1">
WIX 安装包制作指南
<RegistryKey Root="HKCU" Key="Software\GTCA\EAF\Program">
WIX 安装包制作指南
<RegistryValue Value="EAFClient" Type="string" KeyPath="yes" />
WIX 安装包制作指南
</RegistryKey>
WIX 安装包制作指南 
WIX 安装包制作指南
<Shortcut Id="shortcut.prog" Directory="ProgramMenuFolderGTCA" Name="智能客户平台"
WIX 安装包制作指南Target
="EAFVersiondir\EAFMain.exe" WorkingDirectory="EAFVersiondir"
WIX 安装包制作指南Icon
="EAFMain.exe" IconIndex="0" />
WIX 安装包制作指南
<RemoveFolder Id="RemoveShorcutFolder" On="uninstall" />
WIX 安装包制作指南
</Component>
WIX 安装包制作指南
</Directory>
WIX 安装包制作指南
</Directory>
WIX 安装包制作指南

加入桌面快捷方式

WIX 安装包制作指南<Directory Id="DesktopFolder" Name="Desktop">
WIX 安装包制作指南
<Component Id="DesktopGTCA" Guid="aede1637-df5a-4c41-94b6-f077d03e5372">
WIX 安装包制作指南
<RegistryKey Root="HKCU" Key="Software\AAA\desktop">
WIX 安装包制作指南
<RegistryValue Value="EAFClient" Type="string" KeyPath="yes" />
WIX 安装包制作指南
</RegistryKey>
WIX 安装包制作指南
<Shortcut Id="shortcut.desk" Directory="DesktopFolder" Name="智能客户端" Target="main\main.exe" WorkingDirectory="main" Icon="EAFMain.exe" IconIndex="0" />
WIX 安装包制作指南
</Component>
WIX 安装包制作指南
</Directory>

加入VC运行库

WIX 安装包制作指南<Directory Id="TARGETDIR" Name="SourceDir">
WIX 安装包制作指南
<Merge Id="Microsoft_VC80_CRT_x86"
WIX 安装包制作指南SourceFile
="$(var.GTSetupLibraryPath)\Microsoft_VC80_CRT_x86.msm" DiskId="1" Language="2052" />
WIX 安装包制作指南
<Merge Id="policy_8_0_Microsoft_VC80_CRT_x86"
WIX 安装包制作指南SourceFile
="$(var.GTSetupLibraryPath)\policy_8_0_Microsoft_VC80_CRT_x86.msm" DiskId="1" Language="1033" />
WIX 安装包制作指南
</Directory>
WIX 安装包制作指南 
WIX 安装包制作指南
<Feature Id="main" Title="main" Level="1">
WIX 安装包制作指南
<MergeRef Id="Microsoft_VC80_CRT_x86" />
WIX 安装包制作指南
<MergeRef Id="policy_8_0_Microsoft_VC80_CRT_x86" />
WIX 安装包制作指南
</Feature>
WIX 安装包制作指南

设置文件共享

需要引用UtilExtension

WIX 安装包制作指南<!-- 将安装目录共享给EveryOne-->
WIX 安装包制作指南
<Component Id="MyFileShare" Guid="6f051579-2950-42e3-9381-2f538ae1de12">
WIX 安装包制作指南
<CreateFolder/>
WIX 安装包制作指南
<util:User Id="Everyone" Name="Everyone" />
WIX 安装包制作指南
<util:FileShare Id ="ShareRoot" Name="[INSTALLDIR]">
WIX 安装包制作指南
<util:FileSharePermission GenericAll="yes" User="Everyone" Read="yes"/>
WIX 安装包制作指南
</util:FileShare>
WIX 安装包制作指南
</Component>

创建系统服务

  • 与要运行的EXE程序的同一Component下加入
WIX 安装包制作指南<ServiceInstall Id="service_install" Name="SERVICE_NAME" DisplayName="GTCA Server" Start="auto"  ErrorControl="normal" Type="ownProcess" />
WIX 安装包制作指南
<ServiceControl Id="service_control" Name="SERVICE_NAME" Start="install" Stop="uninstall" Remove="uninstall"/>
WIX 安装包制作指南
 
  • 要运行的EXE程序必须设置KeyPath="yes"
  • 如果出现卸载时无法停止并删除服务的情况,需要为该Component重新生成GUID

补丁与升级

制作补丁(小型升级)

  • 程序主版本号不变的情况下进行升级即小型升级
  • 前提条件
    1. 前后两版本一定要ProductCode和UpgrageCode一致
    2. 前后两版本主版本号一致
    3. 编译的机器上未安装该程序的任何版本
  • 步骤
    1. 编译得到前后两个版本msi文件
    2. 编制补丁的wxs文件patch.wxs
    3. 编制Msbuild项目文件patch.proj,其中动作顺序为
      1. 将前后两个版本安装到临时目录
      2. 编译wsx得到pcp文件
      3. 调用msimsp生成msp文件

安装补丁

  • 直接双击运行msp文件
  • 命令行
WIX 安装包制作指南msiexec /patch.msp REINSTALL=[Feature list] REINSTALLMODE=omus
  • VB脚本
WIX 安装包制作指南DIM Installer
WIX 安装包制作指南
ON ERROR RESUME NEXT
WIX 安装包制作指南
set Installer=CreateObject("WindowsInstaller.Installer")
WIX 安装包制作指南Installer.ApplyPatch 
"http://server/share/patch.msp"""0"REINSTALL=ALL REINSTALLMODE=omus"
WIX 安装包制作指南
set Installer=Nothing
   将补丁应用到MSI
WIX 安装包制作指南msiexec /a [path to administrative image .msi file] /patch.msp

部署程序集

  • 一定要强签名
  • 将程序集注册到GCA
  • 程序修改后,一定修改版本号
  • 要将程序集注册到GCA,WXS脚本如例(千万不要把Name写错,否则编译通过安装成功但注册不上
    WIX 安装包制作指南<Component Id="AxMAVClientLib.dll" Guid="YOUR-NEW-GUID-HERE">

    WIX 安装包制作指南
    <File Id="AxMAVClientLib.dll" Name="AxMAVClientLib.dll" KeyPath="yes"

    WIX 安装包制作指南Assembly
    =".net" ProcessorArchitecture="msil" Source="AxMAVClientLib.dll" />

    WIX 安装包制作指南
    </Component>


参考和引用

相关文章:

  • 2022-01-15
  • 2022-12-23
  • 2021-11-08
  • 2021-12-03
  • 2021-05-20
  • 2021-08-25
  • 2023-03-21
猜你喜欢
  • 2022-12-23
  • 2022-01-09
  • 2021-05-17
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案