【发布时间】: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