我正在使用NSIS脚本生成exe文件。
现在我必须签署exe,我正在做的是使用NSIS,首先创建exe文件。然后我以管理员模式打开命令提示符并运行Signtool.exe文件以及路径到pfx文件,timestamp url等参数来签署exe及其签名没有任何问题
但我发现在NSIS中使用Finalize http://nsis.sourceforge.net/Docs/Chapter5.html#finalize我们可以从NSIS脚本本身调用Signtool命令
所以为了做到这一点,我尝试制作一个带有代码的.bat文件,用于在其中签署exe并将bat文件保存在nsis脚本的相同位置,我最后调用了这行代码
!finalize 'signfile.bat'
但是这导致了以下消息
Finalize命令:signfile.bat'signfile.bat'无法识别为 内部或外部命令,可操作程序或批处理文件。 Finalize命令返回1
我尝试过直接签名,如下所示
Signtool.exe sign /f k:\---.pfx /p ????? /tr http://timestamp.----.com /td sha256 /fd sha256 "%1"
和
Signtool.exe sign /f k:\--.pfx /p ????? /tr http://timestamp.---.com /td sha256 /fd sha256 filename.exe
然后我收到此错误
!finalize预计1-3个参数,得到13。 用法:!finalize command_with_%1 []
所以任何人都可以帮助找出用于直接从nsis脚本签署exe文件的正确语法
答案 0 :(得分:3)
运行.bat时收到的错误消息来自cmd.exe,因为它无法找到该文件。您可以尝试!finalize dir
找出当前目录的实际内容。
引用语法为!finalize '"c:\path\to\app.exe" "par am 1" param2 "par am 3"'