gpt4 book ai didi

nsis - makensis 似乎不适用于/D 命令行选项

转载 作者:行者123 更新时间:2023-12-02 05:40:56 26 4
gpt4 key购买 nike

我已经制作了一个 NSIS 脚本,其中包含将我的可执行文件打包到一个文件中的内容。它工作正常。玩弄了几个命令行选项,当然还计划签署卸载程序。

这是脚本的片段,我不明白为什么这不起作用。

Function .onInit

!ifdef GEN_ONLY_UNINSTALLER
WriteUninstaller "out\uninst.exe"
Quit
!endif

FunctionEnd

使用此命令行选项时:

makensis /DGEN_ONLY_UNINSTALLER /V0 _Release_only_uninst.nsi

它不写卸载程序并退出。我在这里错过了什么?WriteUninstaller 应该去哪里?我怀疑我没有在正确的地方调用它。 :)

最佳答案

您只完成了一半的工作,您需要执行生成的安装程序,以便执行 WriteUninstaller 调用。

要获得可以签名的卸载程序,您必须:

  1. 在特定于卸载程序的 .nsi 上运行 makensis
  2. 同一个 .nsi 执行 makensis/Dmysymbol with !system 自身(将退出代码与 0 比较)
  3. 使用 !system 执行步骤 2 中生成的安装程序(WriteUninstaller 现在将写入卸载程序)
  4. !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 实例不会生成有效的安装程序,这通常不是问题,因为可以将此代码添加到创建真正安装程序的脚本中...(完整的脚本将生成卸载程序,签名,生成安装程序然后签名)

关于nsis - makensis 似乎不适用于/D 命令行选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10980219/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com