A command-line tool that simplifies bundling your app into an EXE installer for Microsoft Windows. Customizable with options to configure the installer capabilities.
- Option 1: Using winget (Recommended)
winget install -e --id JRSoftware.InnoSetup
- Option 2: Using chocolatey
choco install innosetup
-
Option 3: From official website
Download Inno Setup from official website. Then install it in your machine.
Note: This package is tested on Inno Setup version 6.2.2
.
dart pub add dev:inno_bundle
To generate a random id run:
dart run inno_bundle:id
Or, if you want your app id based upon a namespace, that is also possible:
dart run inno_bundle:id --ns "www.example.com"
The output id is going to be something similar to this:
f887d5f0-4690-1e07-8efc-d16ea7711bfb
Copy & Paste the output to your pubspec.yaml
as shown in the next step.
Add your configuration to your pubspec.yaml
. example:
inno_bundle:
id: f887d5f0-4690-1e07-8efc-d16ea7711bfb # <-- Put your own generated id here
publisher: Your Name # Optional, but recommended.
name: Demo App # Also optional, but recommended.
After setting up the configuration, all that is left to do is run the package.
flutter pub get
dart run inno_bundle:build --release
Note: --release
flag is required if you want to build for release
mode, see
below for other options.
To automate building the installer with GitHub actions, check out the demo.
You can copy the build.yaml file to your project and make sure to update the push branch. It will build the installer and push it to GitHub Releases with correct versioning.
Full list of attributes which you can use into your configuration.
All attributes should be under inno_bundle
in pubspec.yaml
.
id
:Required
A valid GUID that serves as an AppId.name
: App display name. Defaults to camel casedname
frompubspec.yaml
.description
: Defaults todescription
frompubspec.yaml
.version
: Defaults toversion
frompubspec.yaml
.publisher
: Defaults tomaintainer
frompubspec.yaml
. Otherwise, an empty string.url
: Defaults tohomepage
frompubspec.yaml
. Otherwise, an empty string.support_url
: Defaults tourl
.updates_url
: Defaults tourl
.installer_icon
: A path relative to the project that points to an ico image. Defaults to installer icon provided with the demo. 1languages
: List of installer's display languages. Defaults to all available languages. 2admin
: (true
orfalse
) Defaults totrue
.true
: Require elevated privileges during installation. App will install globally on the end user machine.false
: Don't require elevated privileges during installation. App will install into user-specific folder.
1 Only .ico images were tested.
2 All supported languages are: english, armenian, brazilianportuguese, bulgarian, catalan, corsican, czech, danish, dutch, finnish, french, german, hebrew, hungarian, icelandic, italian, japanese, norwegian, polish, portuguese, russian, slovak, slovenian, spanish, turkish, ukrainian.
This will skip building the app if it exists:
dart run inno_bundle:build --no-app
This will skip building the installer, useful if you want to generate
.iss script
only:
dart run inno_bundle:build --no-installer
This build is release
mode:
dart run inno_bundle:build --release
Other mode flags are --profile
, --debug
(Default).
inno_bundle:
id: f887d5f0-4690-1e07-8efc-d16ea7711bfb
publisher: Jane Doe
installer_icon: assets/images/installer.ico
languages:
- english
- french
- german
admin: false
inno_bundle:
id: f887d5f0-4690-1e07-8efc-d16ea7711bfb
name: Google Flutter Framework
description: Flutter makes it easy and fast to build beautiful apps for mobile and beyond.
publisher: Google LLC
url: https://github.com/flutter/flutter
support_url: https://github.com/flutter/flutter/wiki
updates_url: https://github.com/flutter/flutter/releases
DLL files msvcp140.dll
, vcruntime140.dll
, vcruntime140_1.dll
are also
bundled (if detected in your machine) with the app during installer creation.
This helps end-users avoid issues of missing DLL files when running app
after install. To know more about it, visit
this
Stack Overflow issue.
If you encounter any issues please report them here.