Flutter Build Windows
Composite action to build Windows Flutter desktop applications, compile Inno Setup (.exe) and MSIX (.msix) installers, sign updates with WinSparkle DSA keys, and generate release metadata.
Inputs
| Name | Description | Required | Default |
|---|---|---|---|
working_directory |
Path to the Flutter app package directory. | No | . |
arch |
Target Windows architecture (x64 or arm64). |
No | x64 |
build_args |
Extra arguments passed to flutter build windows. |
No | '' |
build_inno_setup |
Whether to compile an Inno Setup installer (.exe). |
No | true |
inno_setup_script |
Path to Inno Setup .iss script relative to working_directory. |
No | windows/installer/inno_setup.iss |
output_dir |
Output directory for compiled Inno Setup installer. | No | dist |
exe_filename |
Expected installer filename for metadata JSON. | No | '' |
build_msix |
Whether to build an MSIX package using msix:create. |
No | true |
msix_output_name |
Output base name for the MSIX package. | No | '' |
pfx_base64 |
Base64-encoded Windows Authenticode .pfx certificate. |
No | '' |
pfx_password |
Password for the Windows .pfx certificate. |
No | '' |
sparkle_dsa_private_key |
WinSparkle DSA private key content (PEM) for signing installer. | No | '' |
sparkle_dsa_key_file |
Fallback path to WinSparkle DSA private key file in repository. | No | signing/sparkle/dsa_priv.pem |
generate_metadata_json |
Whether to generate windows_<arch>_metadata.json and windows_signature.txt. |
No | false |
Outputs
| Name | Description |
|---|---|
version |
Resolved package version from pubspec.yaml. |
exe_path |
Path to compiled Inno Setup .exe installer. |
msix_path |
Path to generated .msix installer. |
signature |
WinSparkle DSA signature if generated. |
metadata_path |
Path to generated windows_<arch>_metadata.json. |
Example Usage
- name: Build & Package Windows Release
uses: rodydavis/shared-actions/flutter-build-windows@main
with:
working_directory: packages/sfw_desktop
arch: ${{ matrix.arch }}
build_args: --dart-define=API_BASE_URL=https://slidesforworship.app
msix_output_name: slides_for_worship_${{ matrix.arch }}
pfx_base64: ${{ secrets.WINDOWS_PFX_BASE64 }}
pfx_password: ${{ secrets.WINDOWS_PFX_PASSWORD }}
sparkle_dsa_private_key: ${{ secrets.SPARKLE_DSA_PRIVATE_KEY }}
generate_metadata_json: 'true'