【问题标题】:Create more than 1 uninstaller in a NSIS Section在 NSIS 部分中创建超过 1 个卸载程序
【发布时间】:2012-05-22 13:07:39
【问题描述】:

一个 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

【问题讨论】:

  • 我使用 HW Edit 来启动我的 NSIS 脚本,不要引用我的话,但我确信你可以制作 3 个卸载程序,每个插件一个。您可以在此处下载它:hmne.sourceforge.net/ 通过向导步骤制作测试安装程序/卸载程序 - 然后您可以看到如何将 FULL 安装程序中的行剥离成 3 个单独的行。我会尝试进一步冒险并使用 NSIS UI 2 - 现代 GUI nsis.sourceforge.net/Docs/Modern%20UI/Readme.html 并在您的卸载程序中创建一个包含三个复选框的页面 - 每个复选框用于插件。如果您想了解更多信息,请告诉我?

标签: installation nsis


【解决方案1】:

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

您没有发布完整的脚本,因此很难判断逻辑出了什么问题(您可能想使用 LogicLib.nsh 以便可以执行{IF}s),但您应该能够“调试消息框”解决问题的方法。

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

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

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

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

【讨论】:

    猜你喜欢
    • 2012-01-26
    • 2018-06-21
    • 1970-01-01
    • 2011-07-25
    • 2012-02-12
    • 2017-08-09
    • 2011-02-18
    • 2017-11-15
    • 2016-06-30
    相关资源
    最近更新 更多