Skip to content
Build MSI (Windows Installer) packages on Mac and Linux
Branch: master
Clone or download

Latest commit

Latest commit b8b4af5 Dec 5, 2019


Type Name Latest commit message Commit time
Failed to load latest commit information.
lib add ability to specify target arch Jul 9, 2015
.gitignore initial commit Jul 7, 2015 Update Dec 5, 2019
cli.js typo Oct 25, 2017
example.js add cli support Jul 8, 2015
generate-xml.js Fixes #13 Nov 1, 2018
index.js Merge branch 'master' into 11_error_writing_xml Dec 5, 2019
package.json Update package.json Dec 5, 2019


Build MSI (Windows Installer) packages on Mac and Linux.

The installer has no wizard. Users just run the installer and your app will be installed and shortcuts created.


You must have wixl from msitools available in your path.


$ brew install msitools


# ubuntu / debian
$ sudo apt-get install wixl
# older ubuntu / debian
$ sudo apt-get install msitools

Install via npm

$ npm install msi-packager

Node Example

var createMsi = require('./')

var options = {

  // required
  source: '/Users/matt/Code/loop/loopjs-packager/build/Loop Drop-win32',
  output: '/Users/matt/Code/loop/loopjs-packager/releases/Loop Drop v1.0.0.msi',
  name: 'Loop Drop',
  upgradeCode: 'YOUR-GUID-HERE',
  version: '1.0.0',
  manufacturer: '',
  iconPath: '/Users/matt/Code/loop/loopjs-packager/icon.ico',
  executable: 'Loop Drop.exe',

  // optional
  description: "Some description",
  arch: 'x86',
  localInstall: true


createMsi(options, function (err) {
  if (err) throw err
  console.log('Outputed to ' + options.output)

Local User vs Machine Install

By default the app will be installed for all users under Program Files.

If you specify localInstall: true as an option, the app will be installed to the user's AppData folder. This allows non-admin users to install your app.


Usage: msi-packager <source> <output> [options]

source     Directory containing app to package
output     write output .msi to this path

   -n, --name           
   -v, --version        Specify application version
   -m, --manufacturer   
   -a, --arch           Specify the target architecture: x86 or x64 (optional)
   -u, --upgrade-code   Specify GUID to use for upgrading from other versions
   -i, --icon           Specify an icon to use on shortcuts and installer
   -e, --executable     Specify file to create shortcuts for
   -l, --local          Install per user (no administrator rights required)

All options are required except for --local and --arch.

You can’t perform that action at this time.