制作免输序列号安装包的方法可以分为以下步骤:
-
准备工具和文件
首先需要准备MSI打包工具,我们推荐使用WiX Toolset来制作MSI安装包。除此之外,还需要准备产品安装文件(.exe、.msi或其他格式)、产品序列号、以及自定义的xml配置文件(可选)。 -
创建WiX项目
使用WiX Toolset打开创建一个新的WiX项目,可以选择创建一个基本项目或添加模板。在项目文件夹中,创建一个Product.wxs文件,该文件的目的是定义项目的入口点,规定产品的全局属性、序列号信息、以及安装/卸载/更新的过程。 -
编写Product.wxs文件
在Product.wxs文件中定义关键的属性信息,如产品名称,版本号,制造商,安装指向指南等。你还需要定义序列号的结构,然后将默认序列号替换为一个新的序列号,可以在xml配置文件中定义。如下所示:
<Package InstallerVersion="405" Compressed="yes" InstallScope="perMachine" InstallPrivileges="elevated" />
<Product Id="*" ...
Name="$(var.ProductName)"
Version="$(var.ProductVersion)"
Manufacturer="$(var.Manufacturer)" >
<MajorUpgrade AllowDowngrades="no" Schedule="afterInstallInitialize" />
<MediaTemplate EmbedCab="yes" />
<Property Id="ARPNOREMOVE" Value="yes" />
<Property Id="ARPNOMODIFY" Value="yes" />
<Property Id="PIDKEY" Value="XXXXX-XXXXX-XXXXX-XXXXX-XXXXX" />
<UIRef Id="WixUI_Minimal" />
<!-- ... -->
</Product>
- 添加自定义的xml配置文件
添加一个自定义的xml配置文件,在其中定义序列号(LicenseKey
)和其它相关信息。以下是一个例子(License.xml)。具体使用中,可以根据自己的需要修改或添加节点。
<Product>
<LicenseCode>XXXXX-XXXXX-XXXXX-XXXXX-XXXXX</LicenseCode>
<Language>en-US</Language>
<InstallTo>System</InstallTo>
<EULA>Acknowledgement of EULA after installation.</EULA>
<Features>
<Feature Name="Default" Selected="yes" />
</Features>
</Product>
- 引入自定义的序列号配置文件
在Product.wxs文件中加入PropertyRef
节点,并为序列号属性指定默认值。如下所示:
<PropertyRef Id="WIXUI_INSTALLDIR" />
<PropertyRef Id="PIDKEY" />
<SetProperty Id="PIDKEY"
Before="CostFinalize"
Sequence="both"
Value="[LicenseKey]" />
其中,WIXUI_INSTALLDIR
引用了定义在UI.wxs(或其他的UI配置文件)中的安装目录属性,用来确保安装文件安装在正确的位置。
- 打包和测试
最后,使用WiX Toolset进行打包。使用以下命令来创建MSI安装包:
candle.exe -dVersion=1.0 -dProductId=1234 Product.wxs License.xml
然后,使用light.exe
进行编译和打包:
light.exe -ext WixUIExtension -sice:ICE20 -sice:ICE21 Product.wixobj License.wixobj -o ProductInstaller.msi
最后,对生成的安装包进行测试,确保安装过程中自动使用了预先设置好的序列号。测试过程可以手动模拟安装并验证序列号是否生效。
示例1:
产品更新时不更换已安装序列号,序列号信息来自于自定义的xml配置文件License.xml,其他属性信息来自于Product.wxs。
示例2:
产品新安装时主动提供序列号,序列号来自于用户输入后的文本框。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MSI之制作免输序列号安装包的方法 - Python技术站