NSIS部分可以创建多个卸载程序吗?
我的安装程序可以为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}),但您应该能够以"MessageBox调试"方式解决问题.
你没有谈到的一件事可能是相关的是卸载程序逻辑.如果3个卸载程序都执行完全相同的任务,那么这不是问题,但我预计卸载程序注册表注册至少会有所不同.
有两种方法可以解决这个问题:
可能与子目录中的插件相关的不同解决方案是在卸载程序中使用组件页面,并且仅在删除所有3个插件时删除卸载程序...