feat: Add support for custom Inno Setup 6 installation path
Summary
This PR adds support for configuring a custom Inno Setup 6 installation path when building Windows .exe packages, addressing issue #244.
Previously, the path was hardcoded to C:\Program Files (x86)\Inno Setup 6, which caused issues for users who:
- Installed Inno Setup in a custom location
- Use portable versions of Inno Setup
- Have multiple Inno Setup versions installed
- Work in CI/CD environments with different installation paths
Changes
Core Implementation
- Added
inno_setup_pathoptional field toMakeExeConfigclass - Modified
InnoSetupCompiler.compile()to accept a custom path parameter - Updated
AppPackageMakerExeto pass the custom path from configuration - Maintained full backward compatibility - defaults to original hardcoded path when not specified
Documentation
- Updated both English and Chinese documentation with usage examples
- Added comprehensive configuration examples showing the new option
- Created a dedicated example file demonstrating the feature
Testing
- Added comprehensive test cases for configuration parsing
- Tests verify both presence and absence of the custom path option
- Ensures proper serialization/deserialization of the configuration
Usage
Users can now specify a custom Inno Setup installation path in their windows/packaging/exe/make_config.yaml:
# Custom Inno Setup installation path (optional)
inno_setup_path: "D:\Tools\Inno Setup 6"
# Other existing configuration options...
app_id: 5B599538-42B1-4826-A479-AF079F21A65D
publisher: LeanFlutter
display_name: My App
# ...
Backward Compatibility
This change is fully backward compatible. Existing configurations will continue to work unchanged, automatically using the default path C:\Program Files (x86)\Inno Setup 6.
Error Handling
Improved error messages now show the actual path being checked when Inno Setup is not found, making troubleshooting easier for users.
Closes #244
[!WARNING]
Firewall rules blocked me from connecting to one or more addresses (expand for details)
I tried to connect to the following addresses, but was blocked by firewall rules:
esm.ubuntu.com
- Triggering command:
/usr/lib/apt/methods/https(dns block)https://storage.googleapis.com/flutter_infra_release/flutter/a8bfdfc394deaed5c57bd45a64ac4294dc976a72/dart-sdk-linux-x64.zip
- Triggering command:
curl --retry 3 --continue-at - --location --output /tmp/flutter/bin/cache/dart-sdk-linux-x64.zip REDACTED(http block)https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_3.24.3-stable.tar.xz
- Triggering command:
curl -fsSL REDACTED -o flutter.tar.xz(http block)If you need me to access, download, or install something from one of these locations, you can either:
- Configure Actions setup steps to set up my environment, which run before the firewall is enabled
- Add the appropriate URLs or hosts to the custom allowlist in this repository's Copilot coding agent settings (admins only)
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.