【问题标题】:InnoSetup Uninstallable=no results in orphaned directoryInnoSetup Uninstallable=no results in orphaned directory
【发布时间】:2014-11-01 16:27:43
【问题描述】:

“父” Inno Setup 安装程序在其“子”应用程序全部卸载后创建并留下孤立目录时遇到困难。下面是我正在使用的父安装程序代码示例,我省略了不重要的细节。

父安装程序配置为:

[Setup]
Uninstallable=no
CreateUninstallRegKey=no
DefaultDirName={pf32}\{#MyAppPublisher}

[Dirs]
;This section is empty

[Files]
Source: "SetupA-1.00"; DestDir: "{tmp}"; DestName: "setupa.exe"; Flags: deleteafterinstall; Tasks: "installA"
Source: "SetupB-2.00"; DestDir: "{tmp}"; DestName: "setupb.exe"; Flags: deleteafterinstall; Tasks: "installB"

[Run]
Filename: "{tmp}\setupA.exe"; Parameters: "/SILENT"; Tasks: "installA"
Filename: "{tmp}\setupB.exe"; Parameters: "/SILENT"; Tasks: "installB"

现在,我怀疑 DefaultDirName 是问题所在,但还应注意子应用程序的安装方式:

[Setup]
Uninstallable=yes
DefaultDirName={pf32}\{#MyAppPublisher}\{#MyAppName}

所以用例是运行父(也许引导程序是一个更好的名称)安装程序,用户选择他们希望安装的应用程序,然后将这些应用程序安装到 Program Files\Pub\应用名称。这些应用程序的卸载是一个一对一的手动过程,不会有“父卸载程序”。当所有子应用程序都被卸载后,Program Files\Pub 目录总是被留下、孤立和空的。因为父安装程序被配置为 Uninstallable=no,所以除了手动删除此目录外,没有其他方法。不幸的是 DefaultDirName 在所有 Inno 脚本中都是必需的,但必须有一些方法来抑制它的创建。

我考虑过为子安装程序添加一个 Program Files\Pub 卸载检查,这样如果整个发布者目录为空,则可以将其删除,但这比它更麻烦.有什么想法吗?

【问题讨论】:

    标签: inno-setup


    【解决方案1】:

    想如果其他人遇到这个问题,我会跟进。

    我已将父安装程序配置为使用我们的通用应用程序数据文件夹作为 DefaultDirName,这样在卸载它时留下可能为空的目录并没有真正的危害。不完美,但符合我们的要求。

    【讨论】:

      【解决方案2】:

      CreateAppDir 指令应设置为“否”以禁止创建应用程序目录。除了 Uninstallable,其他有用的指令是 CreateUninstallRegKey 和 UpdateUninstallLogAppName。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-07-05
        • 1970-01-01
        • 1970-01-01
        • 2021-03-26
        • 2022-12-02
        • 2022-12-26
        • 1970-01-01
        相关资源
        最近更新 更多