如何在Linux服务器上构建MSI软件包?

时间:2019-01-22 09:12:31

标签: linux windows deployment msbuild windows-installer

我有一个Windows桌面应用程序,当前在 Linux 服务器上可用,可以在用户的​​计算机上下载。我想使用任何 EXE / DLL 在同一台 Linux 服务器上自动执行 MSI 打包过程。

我有一个 App.exe App.txt 文件。在创建 MSI 程序包之前,应从文本文件中读取一些信息并将其注入exe。仅在用户单击下载后,整个过程才必须在Linux服务器中动态发生。

有人能指出我如何实现目标的正确方向吗?我想通过对任何其他/第三方工具具有最小的依赖来实现相同的目的。随时随地进行TIA。

p.s-我已经完成了有关各种安装程序的一些研发工作,但由于它们之间的依赖关系太多,因此它们均不符合标准。

1 个答案:

答案 0 :(得分:0)

误报风险 :由于恶意软件扫描程序及其识别“已知”版本的二进制文件的能力,因此为每个用户创建一个新的二进制文件似乎是非常不明智的(通过哈希)。

如果为每个用户创建一个新的二进制文件,则恶意软件套件可能突然开始隔离您的设置,而没有任何警告或感觉。这个问题不再是微不足道的,因为到处都有恶意软件控制,而且以提升权限运行的设置是“风险管理的主要嫌疑人”。

数字签名可以提供帮助,但这仅是对您进行设置的保证,而不能保证设置中不包含任何有害内容。没有什么比签名的恶意软件媒介更糟糕的了。实际上,可以肯定的是,该恶意软件来自您:-)。注意:有些人甚至设法tamper with signed executables。后两个事实的结合非常令人困扰。


应用程序设置 :我想从安装程序中删除此类功能和详细信息,并让应用程序本身负责在安装后首次启动时自行配置。我发现它更可靠,更容易调试。


自定义配置 :您可以通过各种机制在运行时应用自定义配置信息。您应该add in a transform,或者可以在设置旁边创建一个批处理文件,并嵌入此信息,然后将其传递给MSI或 setup.exe

批处理文件? msiexec.exe 命令行支持将参数传递给MSI。如果您将设置设计为支持这些“传入”参数,则可以生成一个批处理文件,该批处理文件将使用此类参数来运行安装程序。

msiexec.exe /i myinstaller.msi ADDLOCAL="Program,Dictionaries" SERIALKEY="1234-1234" /qn

转换 :您还可以创建一个包含参数的转换(转换是一个很小的MSI片段,具有对原始MSI的设置和更改):

msiexec.exe /i myinstaller.msi TRANSFORMS="mytransform.mst" /qn

很难在Linux机器上创建转换,因为它们是仅Windows本身的COM结构存储文件。我不确定这是否可能,但是也许。


某些链接