msix 3.1.1 msix: ^3.1.1 copied to clipboard
A command-line tool that create Msix installer from your flutter windows-build files.
MSIX is a Windows app packaging format from Microsoft that combines the best features of MSI, .appx, App-V, and ClickOnce to provide a modern and reliable packaging experience.
This package offers a command line tool for creating MSIX installers from your Flutter app, making it easy to publish your app to the Microsoft Store or host it on a website.
📋 Installation #
In your pubspec.yaml
, add the msix
package as a new dev dependency with
the following command:
PS c:\src\flutter_project> flutter pub add --dev msix
📦 Creating an MSIX installer #
To create a MSIX installer, run the following command:
PS c:\src\flutter_project> flutter pub run msix:create
Configuring your installer #
You will almost certainly want to customize various settings in the MSIX
installer, such as the application title, the default icon, and which Windows
capabilities your application needs. You can customize the generated MSIX
installer by adding declarations to an msix_config:
node in your
pubspec.yaml
file:
msix_config:
display_name: MyAppName
publisher_display_name: MyName
identity_name: MyCompany.MySuite.MyApp
msix_version: 1.0.0.0
logo_path: C:\<PathToIcon>\<Logo.png>
capabilities: "internetClient,location,microphone,webcam"
Full list of available configurations (click to expand)
YAML name | Command-line argument | Description (from Microsoft Package manifest schema reference) | Example |
---|---|---|---|
display_name |
--display-name -d |
A friendly app name that can be displayed to users. | Flutter Gallery |
logo_path |
--logo-path -l |
Path to an image file for use as the app icon (at least 400x400px). | C:\images\gallery.png |
trim_logo |
--trim-logo <true/false> |
If false , don't trim the logo image, default is true . |
C:\images\gallery.png |
msix_version |
--version |
The version number of the package, in a.b.c.d format. |
1.0.0.0 |
store |
--store |
Generate a MSIX file for publishing to the Microsoft Store. | false |
publisher_display_name |
--publisher-display-name -u |
A friendly name for the publisher that can be displayed to users. | MyName |
identity_name |
--identity-name -i |
Defines the unique identifier for the app. | dev.flutter.Gallery |
publisher |
--publisher -b |
The Subject value in the certificate. |
CN=BF212345-5644-46DF-8668-014044C1B138 or CN=Contoso Software, O=Contoso Corporation, C=US |
output_path |
--output-path -o |
The directory where the output MSIX file should be stored. | C:\src\myapp\msix |
output_name |
--output-name -n |
The filename that should be given to the created MSIX file. | myApp_dev |
languages |
--languages |
Declares the language resources contained in the package. | en-us, ja-jp |
capabilities |
--capabilities -e |
List of the capabilities the app requires. | internetClient,location,microphone,webcam |
architecture |
--architecture -h |
Describes the architecture of the code in the package. | x64 |
certificate_path |
--certificate-path -c |
Path to the certificate content to place in the store. | C:\certs\signcert.pfx |
certificate_password |
--certificate-password -p |
Password for the certificate. | 1234 |
signtool_options |
--signtool-options |
Options to be provided to the signtool for app signing (see below.) |
/v /fd SHA256 /f C:/Users/me/Desktop/my.cer |
install_certificate |
--install-certificate <true/false> |
If false , don't install the certificate, default is true . |
true |
build_windows |
--build-windows <true/false> |
If false , don't run the build command flutter build windows , default is true . |
true |
--with-test-certificate-installer |
Copy also a test-certificate installer program (.exe), that can help to quickly install the test-certificate on a new machine. | ||
file_extension |
--file-extension -f |
File extensions that the app may be registered to open. | .picture, .image |
protocol_activation |
--protocol-activation |
Protocol activation that will open the app. | myapp |
add_execution_alias |
--add-execution-alias |
Add an alias to active the app, use the pubspec.yaml name: value, so if your app calls 'My_App', user can activate the app using myapp command. |
true |
debug |
--debug or --release |
Create MSIX from the debug/release build files (\build\windows\runner\<Debug/Release> ), release is the default. |
true |
Toast Notifications configurations (click to expand)
Toast Notifications configuration example:
msix_config:
display_name: MyApp
publisher_display_name: MyApp
toast_activator: #<-- toast notifications configuration
clsid: A1232234-1234-1234-1234-123412341234
arguments: "1,2,3"
display_name: "TEST"
msix_version: 1.0.3.0
YAML name | Command-line argument | Description | Example |
---|---|---|---|
clsid |
--toast-activator-clsid -d |
The UUID CLSID. | replaced-with-your-guid-C173E6ADF0C3 |
arguments |
--toast-activator-arguments |
Arguments for the toast notifications. | ----AppNotificationActivationServer |
display_name |
--toast-activator-display-name -d |
Display name for the toast notifications. | Toast activator |
✒️ Signing options #
Published MSIX installers should be signed with a certificate, to help ensure that app installs and updates come from trustworthy sources.
- For development purposes, this package is configured by default to automatically sign your app with a self signed test certificate, which makes it easy to test your install prior to release.
- If you publish your app to the Microsoft Store, the installation package will be signed automatically by the store.
- If you need to use your own signing certificate, for example to release
the app outside of the Microsoft Store, you can use the configuration fields
certificate_path
andcertificate_password
to configure a certificate of your choice.
You can also provide custom options to the signing tool with the
--signtool-options
command, as shown above. For more information on available
options, see the signtool documentation. Note that using this option overrides
the certificate_path
and certificate_password
fields.
Note: By default, the MSIX package will install the certificate on your
machine. You can disable this by using the --install-certificate false
option, or the YAML
option install_certificate: false
.
Publishing to the Microsoft Store #
To generate an MSIX file for publishing to the Microsoft Store, use the
--store
flag, or alternatively add store: true
to the YAML configuration.
Note: For apps published to the Microsoft Store, the configuration values
publisher_display_name
, identity_name
, msix_version
and publisher
must
all be configured and should match the registered publisher and app name from
the Microsoft Store dashboard, as per this screenshot.
🌐 Publishing outside the store #
You can use the App Installer file to enable your users to download or update the app from local file share.
Note: installing from the web ms-appinstaller:
is disabled for now.
To create a App Installer file, first set the publish_folder_path
configuration,
then run the following command:
PS c:\src\flutter_project> flutter pub run msix:publish
Available configurations for App Installer (click to expand)
App Installer configuration example:
msix_config:
display_name: MyApp
publisher_display_name: MyApp
app_installer: #<-- app installer configuration
publish_folder_path: c:\path\to\myPublishFolder
hours_between_update_checks: 0
automatic_background_task: true
update_blocks_activation: true
show_prompt: true
force_update_from_any_version: false
msix_version: 1.0.3.0
YAML name | Command-line argument | Description (from Microsoft schema reference) | Example |
---|---|---|---|
publish_folder_path |
--publish-folder-path |
A path to publish folder, where the msix versions and the .appinstaller file will be saved. | c:\path\to\myPublishFolder |
hours_between_update_checks |
--hours-between-update-checks |
Defines the minimal time gap between update checks, when the user open the app. default is 0 (will check for update every time the app opened) | 2 |
automatic_background_task |
--automatic-background-task |
Checks for updates in the background every 8 hours independently of whether the user launched the app. | false |
update_blocks_activation |
--update-blocks-activation |
Defines the experience when an app update is checked for. | false |
show_prompt |
--show-prompt |
Defines if a window is displayed when updates are being installed, and when updates are being checked for. | false |
force_update_from_any_version |
--force-update-from-any-version |
Allows the app to update from version x to version x++ or to downgrade from version x to version x--. | false |
Tags: msi
windows
win10
win11
windows10
windows11
windows store
windows installer
windows packaging
appx
AppxManifest
SignTool
MakeAppx