尝试执行exe时,NSIS ExecWait返回6

时间:2011-02-22 06:38:38

标签: installer nsis execution

嗨,我对NSIS有一个恼人的问题。

我正在尝试编写脚本来安装Office 2007的SaveAsPdfAndXps.exe插件/插件。

这是我的剧本:

Section "SaveAsPdf"
     DetailPrint "Installing SaveAsPdfAndXps Extension"
     File 'Prereq\SaveAsPDFandXPS.exe'
     ExecWait '$TEMP\SaveAsPDFandXPS.exe' $0
     DetailPrint "SaveAsPDFandXPS exit code = $0"
;     Delete '$TEMP\SaveAsPDFandXPS.exe'
SectionEnd

所以我运行的是Windows 7 x64,我已安装Office 07并安装了此扩展程序。但是,如果我单独运行exe并单独安装手动,则不会中止它只是安装得很好。

现在上面的脚本打印出代码6 退出!?如果我评论删除位,我在临时目录中看不到该文件?我怎么知道发生了什么?

SaveAsPDFandXPS扩展在temp dir中输出日志文件。如果手动执行,但脚本不会发生。

当编译的设置执行时,它确实要求提升btw。

此致

1 个答案:

答案 0 :(得分:2)

您发布的代码不完整,File指令将文件提取到$ outdir,除非您使用/ oname开关,$ outdir由InstallDir或SetOutPath设置,并且都没有出现在您的代码中,因此无法告诉您在哪里提取到......

尝试将其更改为:

Section "SaveAsPdf"
     DetailPrint "Installing SaveAsPdfAndXps Extension"
     InitPluginsDir
     File '/oname=$PluginsDir\SaveAsPDFandXPS.exe' 'Prereq\SaveAsPDFandXPS.exe'
     ExecWait '"$PluginsDir\SaveAsPDFandXPS.exe"' $0 ;Note the quotes here, if we needed to pass parameters it would be '"c:\path\app.exe" /param'
     DetailPrint "SaveAsPDFandXPS exit code = $0"
     Delete "$PluginsDir\SaveAsPDFandXPS.exe"
SectionEnd

$ PluginsDir永远不会与其他应用程序冲突,$ Temp与其他应用程序共享,因此通常最好将内容放入$ PluginsDir。

要在没有高程的情况下投放,请添加RequestExecutionLevel User