InnoSetup,在运行时更改Uninstallable属性行为?

时间:2015-01-16 10:14:32

标签: windows installer inno-setup pascal pascalscript

  

SCENARIO

我已经创建了一个安装程序,它将安装恶意软件应用程序用于教育目的,安装程序包含以下两个任务:

[Tasks]
Name: hidden; Description: Hidden mode; GroupDescription: Installation Mode
Name: visible; Description: Visible mode; GroupDescription: Installation Mode

这意味着,为用户执行隐藏安装(隐藏目录和文件并使安装程序卸载)或可见安装(正常目录和文件以及Uninstallable = True)。

  

问题

我默认设置了Uninstallable=True,但是如果用户选择了hidden任务,那么我想避免创建卸载程序。

我怎么能正确地做到这一点?

1 个答案:

答案 0 :(得分:1)

您可以使用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;