WiX.Py:我们分三行收集MSI软件包

在陷入MSDN的深渊时,没有时间或不想研究公里数的WiX文件来为您的项目构建MSI安装程序吗? 您是否要组装安装程序,以简单易懂的方式分几行描述它? 在Linux和Docker下是否存在跨平台构建的临床趋势? 好吧,下切!


强迫开发者


实际上,正是这些“愿望清单”使我们的跨平台矢量图形编辑器项目在几个月前问世。


我们了解WiX Toolset(Windows Installer XML),但是即使快速浏览一下官方网站上的教程,也让我感到沮丧和沮丧-无法完全沉浸在安装程序的XML描述中。 我们使用了一个简单的MakeMsi,但是它有很多缺陷。 同样,所有这些工具都不适合在Linux下构建MSI。


搜索结果导致了wixl项目 ,该项目在Linux上构建了MSI,但是存在严重的功能缺陷,并且需要与WiX相同大小的XML文件。


结果,为了获得正确的装配工具,我们在python中重新实现了wixl逻辑,修复了许多缺陷并添加了必要的功能,并使该项目成为跨平台的。 这就是WIX.Py的出现,这是一种具有非常低的进入门限的MSI编译器。


WiX.Py如何工作


创建MSI程序包的过程简化到了极限:


  1. 在任意文件夹(例如build )中,我们以将其安装在目标计算机上的形式形成要安装的内容。


  2. 我们填写一个小的JSON文件。 例如:


     { "Name": "MyApp", "UpgradeCode": "3AC4B4FF-10C4-4B8F-81AD-BAC3238BF690", "Version": "0.1", "Manufacturer": "My Company", "Description": "MyApp 0.1 Installer", "Comments": "Licensed under GPLv3+", "Keywords": "wxs, xml, build", "Win64": true, "_CheckX64": true, "_AppIcon": "resources/myapp.ico", "_ProgramMenuFolder": "My Company", "_Shortcuts": [ {"Name": "MyApp", "Description": "MyApplication", "Target": "myapp.exe", "AddOnDesktop": true, "OpenWith": [".xml", ".wxs", ".yml"] } ], "_SourceDir": "build/", "_InstallDir": "myapp-0.1", "_OutputName": "myapp-0.1_win64.msi", "_OutputDir": "./" } 

  3. 我们使用以下命令生成MSI软件包:


     wix.py <_>.json 


是的,这是一个MSI软件包的完全正常的示例,它将在安装Windows 64bit之前检查该应用程序将其安装在Program Files ,将该应用程序添加到程序菜单和桌面,以及将指定的文件格式附加到已安装的应用程序。 没有魔法和萨满教与寄存器。


您可以将示例进一步减少到5-6行,但是安装程序的功能将很少。


使用WiX.Py,可以在Windows和Linux上执行MSI组装,包括 在docker容器中。 由于基本的libmsi可以构建在许多其他UNIX系统上(例如macOS),因此正式也可以在它们上使用WiX.Py,但这没有任何实际意义。


您可以在项目文档中找到各种细微差别的描述。


结论


如果WiX.Py适合您解决创建MSI软件包的问题,​​但是缺少任何功能,请访问我们的网站https://wix.sk1project.net并创建一个扩展功能的请求。 检测到的错误也是如此-报告,我们将对其进行处理。 您可以在该站点上找到适用于不同平台的源代码和现成的软件包。


如果希望与WiX进行比较,那么在哈布雷(Habré)上已经有关于WiX的文章: 1、2、3、4

Source: https://habr.com/ru/post/zh-CN424091/


All Articles