1

这与另一个问题有关。我需要从包含要安装在客户端机器上的自定义文件的 *nix 机器(运行 PHP 或其他)动态生成自定义 Windows EXE 安装程序。

这将用于根据其偏好和身份验证信息生成特定于客户端的 OpenVPN 安装程序。运行时并不重要,因为它可以异步完成。

一些想法,已经尝试过但不起作用:

  1. 使用类似于 ninite.com 的方案,其中下载的可执行文件始终相同,但文件名不同,因此安装程序使用文件名中的信息做出决定。
  2. 使用资源编辑器编辑预构建安装程序的资源。Windows 可执行文件的 unix 资源编辑器不仅很少见,而且还会产生新问题,并且不能解决安装不同文件的问题。

最有效的是在 UNIX 上运行的 NSIS/InnoSetup 编译器(针对 Windows),但其他创造性的解决方案也可以。

4

1 回答 1

1

回答我自己的问题,似乎 NSIS(在 OpenVPN 源代码上默认使用)和 Inno Setup 都可以在 Linux 上运行。

Inno Setup 可以在 Wine 下使用,它是一个命令行实用程序,因此非常简单且有效。请参阅http://katastrophos.net/andre/blog/2009/03/16/setting-up-the-inno-setup-compiler-on-debian/

NSIS 实际上有一个原生的 Unix 端口,它在 Ubuntu/Debian 上以“nsis”包的形式提供。它具有可用的“makensis”,它可以(在 Unix 上)从 .nsi 文件编译 Windows 可执行文件。

仅供参考,我可以在 5 秒内编译一个完整的 .exe 安装程序,包括所有动态内容。PHP用于在准备好构建后执行()构建,并将exe作为下载发送到客户端。

我想这(或非常相似的东西)是它在商业 OpenVPN 服务器产品中的工作方式。

于 2011-02-16T01:34:45.513 回答