/inno_bundle

CLI tool for automating Windows installer creation using Inno Setup.

Primary LanguageDartMIT LicenseMIT

Inno Bundle

pub package inno setup dz flutter community

A command-line tool that simplifies bundling your app into an EXE installer for Microsoft Windows. Customizable with options to configure the installer capabilities.

Guide

1. Download Inno Setup

  • 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.

2. Install inno_bundle package into your project

dart pub add dev:inno_bundle

3. Generate App ID

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.

4. Set up the Configuration

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.

5. Build the Installer

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.

Using GitHub Workflow?

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.

Attributes

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 cased name from pubspec.yaml.
  • description: Defaults to description from pubspec.yaml.
  • version: Defaults to version from pubspec.yaml.
  • publisher: Defaults to maintainer from pubspec.yaml. Otherwise, an empty string.
  • url: Defaults to homepage from pubspec.yaml. Otherwise, an empty string.
  • support_url: Defaults to url.
  • updates_url: Defaults to url.
  • installer_icon: A path relative to the project that points to an ico image. Defaults to installer icon provided with the demo.  1 
  • languages: List of installer's display languages. Defaults to all available languages. 2 
  • admin: (true or false) Defaults to true.
    • 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.

Examples to CLI options

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).

Other configuration examples

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

Additional Feature

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.

image

Reporting Issues

If you encounter any issues please report them here.