MSI之制作免输序列号安装包的方法

制作免输序列号安装包的方法可以分为以下步骤:

  1. 准备工具和文件
    首先需要准备MSI打包工具,我们推荐使用WiX Toolset来制作MSI安装包。除此之外,还需要准备产品安装文件(.exe、.msi或其他格式)、产品序列号、以及自定义的xml配置文件(可选)。

  2. 创建WiX项目
    使用WiX Toolset打开创建一个新的WiX项目,可以选择创建一个基本项目或添加模板。在项目文件夹中,创建一个Product.wxs文件,该文件的目的是定义项目的入口点,规定产品的全局属性、序列号信息、以及安装/卸载/更新的过程。

  3. 编写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>
  1. 添加自定义的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>
  1. 引入自定义的序列号配置文件
    在Product.wxs文件中加入PropertyRef节点,并为序列号属性指定默认值。如下所示:
<PropertyRef Id="WIXUI_INSTALLDIR" />
<PropertyRef Id="PIDKEY" />
<SetProperty Id="PIDKEY"
             Before="CostFinalize"
             Sequence="both"
             Value="[LicenseKey]" />

其中,WIXUI_INSTALLDIR引用了定义在UI.wxs(或其他的UI配置文件)中的安装目录属性,用来确保安装文件安装在正确的位置。

  1. 打包和测试
    最后,使用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技术站

(0)
上一篇 2023年5月31日
下一篇 2023年5月31日

相关文章

  • C#创建WCF服务控制台应用程序详解

    C#创建WCF服务控制台应用程序详解 WCF(Windows Communication Foundation)是一种用于构建分布式应用程序的技术。它可以实现跨平台、跨语言的通信,支持多种协议和编码方式,提供了更多的功能,如消息队列、事务处理、安全性、可靠性等。本文将详细讲解如何使用C#创建WCF服务控制台应用程序,并提供两个示例。 1. 创建WCF服务控制…

    C# 2023年5月15日
    00
  • 使用C#实现写入系统日志

    操作系统日志是记录操作系统信息的一种重要的方式,在C#语言中,我们可以通过.NET Framework提供的EventLog类来实现写入系统日志的功能。下面是使用C#实现写入系统日志的详细攻略: 1. 创建EventLog组件 首先,我们需要为当前项目添加EventLog组件,步骤如下: 在Visual Studio的工具栏中选择“工具”-“选项”-“Win…

    C# 2023年5月15日
    00
  • 使用 HttpReports 监控 .NET Core 应用程序的方法

    在本攻略中,我们将详细讲解如何使用HttpReports监控.NET Core应用程序,并提供两个示例说明。 什么是HttpReports? HttpReports是一个基于.NET Core的开源应用程序性能监控工具,可以监控应用程序的性能指标、请求响应时间、错误率等。HttpReports提供了一个Web界面,可以方便地查看应用程序的性能数据。 使用Ht…

    C# 2023年5月16日
    00
  • C# 如何使用 Index 和 Range 简化集合操作

    C# 8.0 引入了一种新的索引(Index)和范围(Range)语法,这两个语法可以方便地获取集合中的特定元素,从而简化集合的操作。接下来,我将为大家详细讲解如何使用 Index 和 Range 简化集合操作。 Index 和 Range 的语法 Index 和 Range 的语法非常简单,可以用以下两种方式来表示: 使用索引,例如使用“^”符号表示索引的…

    C# 2023年6月6日
    00
  • C#实现文件上传以及多文件上传功能

    下面是详细讲解“C#实现文件上传以及多文件上传功能”的完整攻略,包含以下内容: 前端页面设计,包括上传按钮、进度条等控件的布局与设置; 后端控制器的编写,包括接受文件上传的代码逻辑、对上传文件进行处理的方法等; 多文件上传功能的实现方法,在实现单文件上传功能的基础上进行扩展。 前端页面设计 前端页面作为文件上传功能的入口,需要设计上传按钮、进度条等控件,并将…

    C# 2023年5月15日
    00
  • ASP.NET设计网络硬盘之两重要类代码

    我可以为您提供关于“ASP.NET设计网络硬盘之两重要类代码”的完整攻略。 概述 在ASP.NET网络硬盘设计中,有两个重要的类可以帮助我们实现文件的上传、下载和管理功能。这两个类是FileUpload和Directory。 FileUpload类 FileUpload类是ASP.NET框架中的一个控件,用于上传文件到Web服务器。使用该控件可以轻松方便地实…

    C# 2023年5月31日
    00
  • asp.net 虚方法、抽象方法、接口疑问

    ASP.NET是一种用于构建Web应用程序的框架,它支持许多编程范式。虚方法、抽象方法和接口是OOP(面向对象编程)中的重要概念,它们可以帮助我们更好地组织代码、提高代码的可复用性和可维护性。 虚方法(Virtual Methods) 虚方法是可以被覆盖或重写的方法,它需要在父类中声明为virtual,然后在子类中使用override关键字进行覆盖实现。虚方…

    C# 2023年6月3日
    00
  • .NET Reflector8.5怎么激活?.NET Reflector安装激活使用详细图文教程

    以下是详细讲解 “.NET Reflector 8.5怎么激活?.NET Reflector安装激活使用详细图文教程” 的完整攻略。 安装.NET Reflector 8.5 首先,我们需要从官方网站下载最新版本的.NET Reflector 8.5并安装它。 获取激活码 然后,我们需要获取一个有效的激活码。你可以从官方网站购买一个许可证,也可以在互联网上寻…

    C# 2023年6月3日
    00
合作推广
合作推广
分享本页
返回顶部