gpt4 book ai didi

installation - 在 NSIS 部分中创建超过 1 个卸载程序

转载 作者:行者123 更新时间:2023-12-02 22:42:29 30 4
gpt4 key购买 nike

一个 NSIS 部分可以创建超过 1 个卸载程序吗?

我的安装程序可以为应用程序的 3 个不同版本安装插件 - 因此安装程序将在 3 个不同的目录中安装文件。

在每个目录中,我想添加一个卸载程序文件,该文件将仅删除该目录中的文件。

这3个卸载文件都是在同一个Section区创建的,这样是不是无效?如何让我的脚本创建 3 个卸载程序(如果可能)?

以下部分只创建一个卸载程序,最后一个(版本 10 卸载程序):

Section "Install Plugin Files" MainSetup

CheckInstallVers8:
IntCmp $installVers8 1 InstallVersion8 CheckInstallVers9 InstallVersion8
CheckInstallVers9:
IntCmp $installVers9 1 InstallVersion9 CheckInstallVers10 InstallVersion9
CheckInstallVers10:
IntCmp $installVers10 1 InstallVersion10 MainInstallation InstallVersion10

InstallVersion8:
# install plugins...
SetOutPath $VERS8DIR
writeUninstaller "${APPNAME} Uninstall.exe"
GoTo CheckInstallVers9
InstallVersion9:
SetOutPath $VERS9DIR
writeUninstaller "${APPNAME} Uninstall.exe"
GoTo CheckInstallVers10
InstallVersion10:
SetOutPath $VERS10DIR
writeUninstaller "${APPNAME} Uninstall.exe"

SectionEnd

最佳答案

您可以根据需要多次调用 WriteUninstaller,但您应该使用完整路径名 (writeUninstaller "$VERSxDIR\${APPNAME} Uninstall.exe")

你没有发布完整的脚本,所以很难说出逻辑有什么问题(你可能想使用 LogicLib.nsh 这样你就可以执行 {IF}s)但是你应该能够通过“MessageBox 调试”找到解决方案。

您没有谈论的一件可能相关的事情是卸载程序逻辑。如果 3 个卸载程序都执行完全相同的任务,那么这不是问题,但我希望至少在卸载程序注册表注册方面有所不同。

有两种处理方法:

  • 将数据标记到 end of the uninstaller (或同一目录中的 .ini)
  • 使用 !system 调用 makensis.exe 并在编译时生成您作为普通 Files 包含的卸载程序

可能与子目录中的插件相关的不同解决方案是在卸载程序中使用组件页面,并且仅在删除所有 3 个插件后才删除卸载程序...

关于installation - 在 NSIS 部分中创建超过 1 个卸载程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10593657/

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