【发布时间】:2012-03-09 00:03:13
【问题描述】:
我目前正在更新一个使用 NSIS 的安装程序。在某些情况下,安装程序需要通过替换配置文件中的路径或值来配置包。这些配置文件中有占位符,这些占位符被我正在使用的任何部署工具替换(此特定情况下为 NSIS)。
脚本大多是 PHP 脚本,用于执行一些在 NSIS 中会非常复杂的简单任务。出于某种原因,尽管我继续让我的 PHP 脚本自己替换占位符,而不是在 NSIS 脚本中这样做,但这是不对的。 我的代码如下:
nsExec::ExecToStack '"$INSTDIR\Php\php.exe" "$INSTDIR\Apache\tools\findport.php"'
pop $1 ; return code
pop $2 ; port number
!insertmacro _ReplaceInFile "Apache\conf\httpd.conf" "APACHE_PORT" "$2"
_ReplaceInFile 宏来自http://nsis.sourceforge.net/ReplaceInFile,如果我在上面的示例中使用 $INSTDIR 而不是 $2,它就可以正常工作。在 MessageBox 中显示 $2 可以很好地显示端口号。
我想我做错了什么,但我无法弄清楚它是什么,并且使用 NSIS 进行调试很痛苦。
谢谢,
【问题讨论】:
-
对我来说很好用:pastebin.com/LC1J8WXk ...
-
确实,问题是路径错误:(
标签: nsis