在Linux上从Python执行makensis

1 投票
1 回答
990 浏览
提问于 2025-04-18 00:45

我在Linux上编译了makensis。通过像下面这样在bash命令行中运行时,它工作得很好。

makensis /path/to/setup.nsi

我想用一个Python脚本来执行它。我尝试了以下方法:

#using the symlink in /usr/bin
subprocess.call("makensis setup.nsi")

#absolute path to makensis executable
subprocess.call("/usr/share/makensis/makensis setup.nsi")

#Change directory
os.chdir("/usr/share/makensis")
subprocess.call("makensis setup.nsi")

我还尝试过把当前工作目录的参数传给subprocess.call。

但在所有这些情况下,makensis都找不到它需要的依赖项。它在/usr/bin/目录下查找,并且出现了这个错误:

Error: opening stub "/usr/bin/Stubs/zlib"

我不确定这是我的Python脚本的问题,还是makensis编译时出现了问题。我倾向于认为是Python脚本的问题,因为makensis在bash命令行中运行得很好。任何建议都非常感谢。

编辑:这是我用来构建nsis的scons命令:

scons SKIPSTUBS=all SKIPPLUGINS=all SKIPUTILS=all SKIPMISC=all NSIS_CONFIG_CONST_DATA_PATH=no PREFIX=/usr/share/ APPEND_CCFLAGS=-m32 APPEND_LINKFLAGS=-m32 install-compiler

1 个回答

1

我们经常使用NSIS,但我从来没有想过在posix/unix平台上运行它。无论如何,我查了一下(因为我总是对更多的NSIS配置感兴趣),找到了这个链接——它专门指出了你的问题,并提供了解决方案。

http://wiki.koshatul.com/Installing_Nullsoft_Scriptable_Installer_System_%28NSIS%29_on_BSD#Error:_opening_stub_.22.2Fusr.2Flocal.2Fbin.2FStubs.2Fzlib.22

如果你在scons命令中有NSIS_CONFIG_CONST_DATA_PATH=no这一项,请把它去掉,同时检查一下所有的路径是否都正确,以便顺利构建。

撰写回答