Installation 在NSIS节中创建多个卸载程序

Installation 在NSIS节中创建多个卸载程序,installation,nsis,Installation,Nsis,NSIS部分可以创建多个卸载程序吗? 我的安装程序可以为一个应用程序的3个不同版本安装插件-因此安装程序将在3个不同的目录中安装文件 在每个目录中,我想添加一个卸载程序文件,只删除该目录中的文件 3个卸载文件中的每一个都是在同一分区内创建的,这是否无效?如何获取脚本以创建3个卸载程序(如果可能) 以下部分仅创建一个卸载程序,即最后一个(版本10卸载程序): 您可以根据需要多次调用WriteUninstall,但应使用完整路径名(WriteUninstall“$VERSxDIR\${APPNAME

NSIS部分可以创建多个卸载程序吗?

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

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

3个卸载文件中的每一个都是在同一分区内创建的,这是否无效?如何获取脚本以创建3个卸载程序(如果可能)

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


您可以根据需要多次调用WriteUninstall,但应使用完整路径名(
WriteUninstall“$VERSxDIR\${APPNAME}Uninstall.exe”

您没有发布完整的脚本,因此很难判断逻辑有什么问题(您可能希望使用LogicLib.nsh,这样您就可以执行
{IF}
s),但您应该能够通过“MessageBox调试”找到解决方案

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

有两种方法可以解决这个问题:

  • 将数据标记到(或同一目录中的.ini)
  • 使用!系统调用makensis.exe并在编译时生成卸载程序,该卸载程序作为普通
    文件包含

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

我使用HW编辑开始我的NSIS脚本,不要引用我的话,但我相信你可以制作3个卸载程序,每个插件一个。您可以在此处下载:hmne.sourceforge.net/通过向导步骤制作一个测试安装程序/卸载程序-然后您可以看到如何将完整安装程序中的行剥离为3个单独的行。我将尝试进一步使用NSIS UI 2(现代GUI),并在卸载程序中创建一个页面,其中有三个复选框,每个复选框对应一个插件。如果你想了解更多信息,请告诉我?
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