6
votes

I am using Inno Setup to create an installer of my application.

On the first run my application is creating an SQLite database but it can't achieve that while the user doesn't have the permission of modify the installation folder.

I managed to set permissions of files:

[Files]
Source: "D:\....\***.jar"; DestDir: "{app}"; Flags: ignoreversion; Permissions: users-full
Source: "D:\....\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs;\
    Permissions: users-full

But that doesn't help because I need full users permission on installation folder, for example: C:\Program Files\InstallationFolder

1

1 Answers

20
votes

The Permissions parameter of the [Files] section entry applies to the installed files only, not to the implicitly created directories.

To change permissions of a folder, use an explicit entry in the [Dirs] section for the {app}:

[Dirs]
Name: {app}; Permissions: users-full

Though it is not a good practice.

  • In general, Windows applications shall not require write permissions to their folder. That's against Windows guidelines. The application should write data to a user profile folder (C:\Users\username\AppData) or to a common data folder (C:\ProgramData).

    See also Application does not work when installed with Inno Setup.

  • In your specific case, you better run the database creation process as the Administrator (e.g. using the runascurrentuser flag).