makensis似乎不适用于/D命令行选项
我制作了一个NSIS脚本,其中包含将可执行文件打包到单个文件的内容。它很好用。他在玩命令行选项很少的游戏,当然还计划签署卸载程序 这是脚本的片段,我不明白为什么这不起作用makensis似乎不适用于/D命令行选项,nsis,Nsis,我制作了一个NSIS脚本,其中包含将可执行文件打包到单个文件的内容。它很好用。他在玩命令行选项很少的游戏,当然还计划签署卸载程序 这是脚本的片段,我不明白为什么这不起作用 Function .onInit !ifdef GEN_ONLY_UNINSTALLER WriteUninstaller "out\uninst.exe" Quit !endif FunctionEnd 使用此命令行选项时: makensis /DGEN_ONLY_UNINSTALLER /V0 _Release_on
Function .onInit
!ifdef GEN_ONLY_UNINSTALLER
WriteUninstaller "out\uninst.exe"
Quit
!endif
FunctionEnd
使用此命令行选项时:
makensis /DGEN_ONLY_UNINSTALLER /V0 _Release_only_uninst.nsi
它不会写入卸载程序并退出。我错过了什么?
WriteUninstaller
应该放在哪里?我怀疑我说得不对 这不是你想的那样:o)
您编写的是,您正在创建一个安装程序,该安装程序将在卸载程序启动期间创建(或不创建,具体取决于
ifdef
)卸载程序(onInit
是安装程序入口点)。您只完成了一半的工作,您需要执行生成的安装程序才能执行WriteUninstall调用
要获得卸载程序,您可以签名,您必须:
执行makensis/Dmysymbol!系统本身
(将退出代码与0进行比较)!系统
执行步骤2中生成的安装程序(WriteUninstaller现在将编写卸载程序)!步骤2中生成的delfile
安装程序!ifdef STEP2
Function .onInit
WriteUninstaller "out\uninst.exe"
Quit
FunctionEnd
Outfile "$%temp%\genun.exe"
Section
SectionEnd
!else
!system '"makensis" /DSTEP2 "${__FILE__}"' = 0
!system '"$%temp%\genun.exe" /S'
!delfile "$%temp%\genun.exe"
!endif
此脚本将失败并出现错误,因为初始makensis实例不会生成有效的安装程序,这通常不是问题,因为此代码可以添加到创建真正安装程序的脚本中。。。(完整脚本将生成卸载程序,对其进行签名,生成安装程序,然后进行签名)当您为MAKENSIS定义GEN_ONLY_卸载程序时,将在运行使用/DGEN_ONLY_卸载程序编译的安装程序时创建卸载程序。通过使用makensis的
/D
,您不需要运行脚本,只需使用定义编译它。只有通过运行编译后的安装程序才能得到结果。