Deploy applications in Run as Administrator mode in Windows using Visual Studio and Inno Setup

Add the following line in your [Setup] section. This is the primary way to indicate that your installer requires administrative rights.

[Setup]
...
PrivilegesRequired=admin
...

Consider embedding an appropriate manifest into your application’s executable to have it automatically request elevation when executed outside the installer. This can provide a more seamless experience for the user.

1. Create the Manifest File:

  • Right-click on your project in the Solution Explorer and select Add -> New Item….
  • Choose Application Manifest File (it might be under the General category).
  • The default name is typically app.manifest. Keep this name or adjust it if necessary.

2. Modify the Manifest:

  • Open the newly created app.manifest file. The default content will be similar to this:

<?xml version="1.0" encoding="utf-8"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
  <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v1">
        </requestedPrivileges>
    </security>
  </trustInfo>
</assembly>
  • Inside the <requestedPrivileges> element, add the following line:
<requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />

3. Embed the Manifest:

The manifest is now created, but you need to tell Visual Studio to embed it into your executable:

  • Right-click on your project and select Properties.
  • Go to the Application tab.
  • Under Manifest, select Embed manifest with default settings.

Build the Project:

Rebuild your project. The generated executable will now have the UAC manifest embedded, causing your application to request administrative privileges when run.

Deploy applications in Run as Administrator mode in Windows using PyInstaller and Inno Setup

PyInstaller

venv\Scripts\pyinstaller.exe --noconsole --onefile --icon=images/icons8-anki-512.ico --manifest=MyAnki.exe.manifest --uac-admin -n MyAnki app.py

MyAnki.exe.manifest

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
      </requestedPrivileges>
    </security>
  </trustInfo>
</assembly>

inno_setup.iss

[Setup]
PrivilegesRequired=admin

 

Extract .zip files in Inno Setup

You can use an external command line tool for unzipping your archive, see here for example. Put it in your [Files] section:

[Files]
Source: "7za.exe"; DestDir: "{tmp}"; Flags: deleteafterinstall;

Then call it in your [Run] section, like this:

[Run]
Filename: {tmp}\7za.exe; Parameters: "x ""{tmp}\example.zip"" -o""{app}\"" * -r -aoa"; Flags: runhidden runascurrentuser;

References
https://stackoverflow.com/questions/40704442/is-there-a-way-to-extract-zip-files-in-inno-setup-after-a-certain-page-is-done
https://stackoverflow.com/questions/6065364/how-to-get-inno-setup-to-unzip-a-file-it-installed-all-as-part-of-the-one-insta