嗨,我对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。
此致
答案 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