我的第一个WiX安装脚本
WiX的Wiki:
WiX 代表 Windows Installer Xml (WiX) toolset 它是建立Windows Installer的XML toolset (MSI) 包裹从XML 文件。它支持开发商集成他们的发布过程建立MSI 和MSM 设定包裹的命令行环境。
内部结构
Wix 由四份组成: 蜡烛、光、Lit 和黑暗。
蜡烛
蜡烛, 编译器, 叫蜡烛。
光
点燃, 连接器作为一个或更多目标文件和链接参考在目标文件在适当的标志在其它目标文件。光负责还对适当地收集所有binaries, 包装他们, 和组建最后的MSI 或MSM 文件。
Lit
Lit, 解放工具, 叫点燃了, 是可能被使用结合多份目标文件入图书馆可能由光解析的一个任意工具。
黑暗
黑暗, Decompiler 采取现有的代表包裹的MSI 和MSM 文件和组建XML 文件。
我的例子示范如下,脚本指示安装Windows Service以及一些dll:
xml version="1.0" encoding="GB2312"?> Wix xmlns="http://schemas.microsoft.com/wix/2003/01/wi"> Product Id="E<chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="4" unitname="a">4A</chmetcnv>63349-xxxx-4268-9633-B746461FC007" Name="Presence Collector" Language="1033" Version="<chsdate w:st="on" year="1899" month="12" day="30" islunardate="False" isrocdate="False">1.0.1</chsdate>.0" Manufacturer="UltraPower"> Package Id="<chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="71" unitname="a">71A</chmetcnv>692D5-BE19-42e0-986D-AE17B98E93B1" Description="……." Comments="++++++++" InstallerVersion="200" Compressed="yes" />
Media Id="1" Cabinet="Proxy.cab" EmbedCab="yes" /> Media Id="2" Cabinet="Proxy2.cab" EmbedCab="yes" />
Directory Id="TARGETDIR" Name="SourceDir"> Directory Id="ProgramMenuFolder"/> Directory Id="ProgramFilesFolder"> Directory Id="INSTALLLOCATION" Name="Proxy" LongName=" Proxy">
Component Id='CommandListenerEXE' Guid="E<chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="6" unitname="C">06C</chmetcnv><chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="2" unitname="F">2F</chmetcnv>1B-xxxx-4862-A2B2-DFF<chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="5" unitname="a">5A</chmetcnv>7B3BF16"> File Id='UltraPower..CommandListener.exe' Name='CL.exe' LongName="UltraPower..CommandListener.exe" src='C:\ZhengYun\ SetupDemo\CommandListener\bin\Debug\UltraPower..CommandListener.exe' DiskId="1"/> ServiceInstall Id='$(var.CommandListener.TargetFileName)' Name='CommandListener' DisplayName=' Command Listener' Type='ownProcess' Interactive='yes' Start='auto' Vital='yes' ErrorControl='normal'/>
ServiceControl Id='CommandListenerEXE' Name='CommandListener' Start='install' Stop='both' Remove='uninstall' Wait='yes'/>
Component>
Component Id="RequestHandlerCOM" Guid="379D<chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="59" unitname="a">059A</chmetcnv>-xxxx<chmetcnv w:st="on" tcsc="0" numbertype="1" negative="True" hasspace="False" sourcevalue="460" unitname="F">-460f</chmetcnv>-83D9-90300D<chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="2" unitname="C">2C</chmetcnv>10D8"> File Id='UltraPower..RequestHandler.dll' Name="ReqHand.dll" LongName="UltraPower..RequestHandler.dll" src='C:\ZhengYun\SetupDemo\UltraPower..RequestHandler\ DiskId="2">
Shortcut Id="Proxy.RequestHanlder.Shortcut" Name="MyApp" LongName="Proxy RequestHanlder Shortcut" Description="A glorious expanse of battleship grey" Directory="ProgramMenuFolder"/> File> Component>
Component Id="CachingCOM" Guid="479D<chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="59" unitname="a">059A</chmetcnv>-xxxx<chmetcnv w:st="on" tcsc="0" numbertype="1" negative="True" hasspace="False" sourcevalue="460" unitname="F">-460f</chmetcnv>-83D9-90300D<chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="2" unitname="C">2C</chmetcnv>10D8"> File Id='Microsoft.Practices.EnterpriseLibrary.Caching.dll' Name="Caching1.dll" LongName="Microsoft.Practices.EnterpriseLibrary.Caching.dll" src='C:\ZhengYun\SetupDemo\CommandListener\bin\Debug\ DiskId="1"> File> Component>
Directory> Directory> Directory>
Feature Id="ProductFeature" Title=" Collector Feature" Level="1"> ComponentRef Id="RequestHandlerCOM" /> ComponentRef Id="CachingCOM" /> ComponentRef Id="CommandListenerEXE" /> Feature> Product> Wix>
|