1

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

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

谁能指出我如何实现目标的正确方向?我想通过对任何附加/第 3 方工具的最小依赖来实现同样的目标。TIA 为您提供任何时间和精力。

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

4

2 回答 2

0

我们wixlmsitools取得了一些成功。

WiX也将在WINE下运行。

但是,在这两种情况下,我们都没有 EmbedCab="yes" 工作,这可能会或可能不会影响您。

于 2022-02-03T00:50:34.643 回答
0

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

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

数字签名可以提供帮助,但它们只是您进行设置的保证,而不是设置不包含任何有害内容的保证。没有什么比签名的恶意软件向量更糟糕的了。事实上,恶意软件来自您的证据是肯定的 :-)。注意:有些人甚至设法篡改签名的可执行文件。后两个事实的结合是非常令人不安的。


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


自定义配置:您可以通过各种机制在运行时应用自定义配置信息。您应该添加一个转换,或者您可以在安装程序旁边创建一个嵌入此信息的批处理文件并传递给 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 结构存储文件。我不确定这是否可能,但也许。


一些链接

于 2019-01-23T17:18:41.443 回答