linux - 如何在 Linux 服务器上构建 MSI 包?

标签 linux windows deployment msbuild windows-installer

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

我有一个 App.exeApp.txt 文件。在创建 MSI 包之前,应该从文本文件中读取一些信息并将其注入(inject)到 exe 中。只有在用户点击下载后,整个过程才能在 Linux 服务器中动态发生。

任何人都可以指出我如何实现目标的正确方向吗?我想通过对任何其他/第 3 方工具的最小依赖性来实现相同的目的。任何时间和精力的 TIA。

p.s - 我已经对各种安装程序进行了一些研发,但没有一个符合标准,因为它们有太多的依赖关系。

最佳答案

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

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

数字签名可以提供帮助,但它们只是保证您进行了设置,并不能保证设置不包含任何有害内容。没有比签名的恶意软件载体更糟糕的了。事实上,恶意软件来自您是肯定的 :-)。注意:有些人甚至设法 tamper with signed executables .后两个事实的结合非常令人不安。


应用程序设置:我喜欢从设置中删除此类功能和细节,让应用程序本身负责安装后首次启动时的配置。我发现这更可靠且更易于调试。


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

Batch File?: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 结构存储文件。我不确定这是否可能,但也许吧。


一些链接:

关于linux - 如何在 Linux 服务器上构建 MSI 包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54304773/

相关文章:

linux - 非法指令 gcc 汇编程序

windows - Windows 防火墙后的 Docker 安装错误

使用 DeployTask 类远程部署 war 文件的 Java 代码

Linux 外壳 : remove all HTML files in tree while leaving directory structure

linux - 如何从命令行/tty 启动 GNOME Wayland session ?

c# - 为什么 AutoIt 成功地将输入发送到 directx 应用程序而 SendInput/SendMessage 却没有?

pdf - 将 Foxit PDF Reader 嵌入网页

database - 如何安全地将阶段数据库部署到 magento 中的实时生产数据库

我们可以对未命名的管道使用 poll 函数吗?

windows - WebResource.axd 使用 IIS7 在 ASP.Net Post 中给出 403 错误