InnoSetup Uninstallable =孤立目录中没有结果

时间:2014-01-08 16:03:35

标签: inno-setup

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

父安装程序配置为:

[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 \ AppName的。卸载这些应用程序是一个逐个手动的过程,不会有“父卸载程序”。卸载所有子应用程序后, Program Files \ Pub 目录始终保持孤立状态并为空。由于父安装程序配置为 Uninstallable = no ,因此无法手动删除此目录。不幸的是,所有Inno脚本都需要 DefaultDirName ,但必须有某种方法来抑制它的创建。

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

2 个答案:

答案 0 :(得分:0)

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

我已将父安装程序配置为使用 DefaultDirName 的常用应用程序数据文件夹,这样当卸载它时,留下可能为空的目录并没有什么坏处。不完美,但它符合我们的要求。

答案 1 :(得分:0)

CreateAppDir指令应设置为' no'禁止创建应用程序目录。除了Uninstallable之外,其他有用的指令是CreateUninstallRegKey和UpdateUninstallLogAppName。