InnoSetup,在运行时更改 Uninstallable 属性 行为?
InnoSetup, change the Uninstallable property behavior at runtime?
SCENARIO
我创建了一个安装程序,用于安装恶意软件应用程序用于教育目的,安装程序包含以下两个任务:
[Tasks]
Name: hidden; Description: Hidden mode; GroupDescription: Installation Mode
Name: visible; Description: Visible mode; GroupDescription: Installation Mode
这意味着,为用户执行隐藏安装(隐藏目录和文件并使安装程序卸载),或可见安装(正常目录和文件和 Uninstallable=True)。
PROBLEM
我默认设置了 Uninstallable=True
,但是如果用户选择 hidden
任务,那么我想避免创建卸载程序。
我怎样才能正确地做到这一点?
您可以使用 Uninstallable
指令文档中显示的代码:
[Setup]
...
Uninstallable=not IsTaskSelected('hidden')
[Tasks]
Name: hidden; Description: Hidden mode; GroupDescription: Installation Mode
Name: visible; Description: Visible mode; GroupDescription: Installation Mode
可选地,如果您需要用可重用函数编写更复杂的语句,或访问某些脚本代码元素,您可以编写一个函数,例如:
[Setup]
...
Uninstallable=IsUninstallable
[Tasks]
Name: hidden; Description: Hidden mode; GroupDescription: Installation Mode
Name: visible; Description: Visible mode; GroupDescription: Installation Mode
[Code]
function IsUninstallable: Boolean;
begin
Result := WizardSilent or not IsTaskSelected('hidden');
end;
SCENARIO
我创建了一个安装程序,用于安装恶意软件应用程序用于教育目的,安装程序包含以下两个任务:
[Tasks]
Name: hidden; Description: Hidden mode; GroupDescription: Installation Mode
Name: visible; Description: Visible mode; GroupDescription: Installation Mode
这意味着,为用户执行隐藏安装(隐藏目录和文件并使安装程序卸载),或可见安装(正常目录和文件和 Uninstallable=True)。
PROBLEM
我默认设置了 Uninstallable=True
,但是如果用户选择 hidden
任务,那么我想避免创建卸载程序。
我怎样才能正确地做到这一点?
您可以使用 Uninstallable
指令文档中显示的代码:
[Setup]
...
Uninstallable=not IsTaskSelected('hidden')
[Tasks]
Name: hidden; Description: Hidden mode; GroupDescription: Installation Mode
Name: visible; Description: Visible mode; GroupDescription: Installation Mode
可选地,如果您需要用可重用函数编写更复杂的语句,或访问某些脚本代码元素,您可以编写一个函数,例如:
[Setup]
...
Uninstallable=IsUninstallable
[Tasks]
Name: hidden; Description: Hidden mode; GroupDescription: Installation Mode
Name: visible; Description: Visible mode; GroupDescription: Installation Mode
[Code]
function IsUninstallable: Boolean;
begin
Result := WizardSilent or not IsTaskSelected('hidden');
end;