在Linux上从Python执行makensis
我在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配置感兴趣),找到了这个链接——它专门指出了你的问题,并提供了解决方案。
如果你在scons命令中有NSIS_CONFIG_CONST_DATA_PATH=no这一项,请把它去掉,同时检查一下所有的路径是否都正确,以便顺利构建。