InnoSetup, change the Uninstallable property behavior at runtime?

我怕爱的太早我们不能终老 提交于 2019-12-19 10:47:22

问题


SCENARIO

I have created an installer that will installs a Malware application for educative purposes, the installer contains these two tasks:

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

This means, performs a hidden installation for the user (hidden dirs and files and make uninstallabe the installer), or a visible installation (normal dirs and files and Uninstallable=True).

PROBLEM

I've set the Uninstallable=True by default, but If the user selects the hidden task then I would like to avoid the uninstaller creation.

How I could do it properly?


回答1:


You can use the code shown in the Uninstallable directive documentation:

[Setup]
...
Uninstallable=not IsTaskSelected('hidden')

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

Optionally, if you'd need more complex statements written in reusable function, or access some of the scripting code elements, you could write a function, e.g.:

[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;


来源:https://stackoverflow.com/questions/27981658/innosetup-change-the-uninstallable-property-behavior-at-runtime

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!