feat(windows): ship an installer (.exe) instead of the portable zip
Maintainers usually reply within 1 day
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 35/100
- Issue type
- Feature
- Clarity
- Mostly clear
- Activity status
- Active
- Domain
- build-system, desktop, documentation, release
Research direction
Start with packages/fl_build and its flutterBuildWin flow, then read build.yml and the existing fl_lib AppUpdate Windows handling. Review the proposed .iss script, installation.mdx, and platforms/desktop.md alongside the checksum and winget changes. Done means the installer, transition zip, update fallback, runtime files, checksums, winget submission, and documentation are all updated as described.
Written by the indexing model from the issue text.
Description
Windows is shipped only as ServerBox_v1.0.N_windows_amd64.zip. A setup .exe would install the app, add a Start menu entry and an uninstaller, and let winget treat it as an ordinary installer.
What is there now
fl_build(flutterBuildWin) zipsbuild\windows\x64\runner\Release. The CDN upload (fl_build -s) sends whatever file that produces.- The zip bundles no VC++ runtime (
msvcp140.dll,vcruntime140.dll,vcruntime140_1.dll), so the app relies on the redistributable already being installed. - In-app update (fl_lib
AppUpdate._getGitHubUrl) on Windows only matches a.zipcontainingwindows, and opens it in the browser. A release without such an asset is silent by design: no notice, no error (update.dart). - winget: the first submission (microsoft/winget-pkgs#443244, 1.0.1617) is
InstallerType: zip+NestedInstallerType: portable, still waiting on manual review. Nothing is published there yet. - Docs (
installation.mdx,platforms/desktop.md) describe a portable zip. - App data lives in the user's app-data directory, not beside the exe, so moving from the zip to an installer keeps it.
Proposal
- Inno Setup, preinstalled on
windows-latest(InnoSetup 6.7.1 on both the 2022 and 2025 images). - A per-user install to
%LOCALAPPDATA%\Programs\ServerBox(no admin), with a fixedAppIdso a new version installs over the old, Start menu and optional desktop shortcuts, and closing a running instance before replacing files. - Bundle the VC++ runtime DLLs next to the exe (app-local), so a machine without the redistributable can start it.
- Output
ServerBox_v1.0.N_windows_amd64.exe, included inSHA256SUMS/MD5SUMS.
Changes
packages/fl_build: build the installer after the release build.packages/fl_lib: on Windows, prefer the.exeasset and fall back to.zip.- This repo: the
.issscript,build.yml(upload the exe, update the checksums), winget submission (installer URL; komac detects Inno), and the docs.
Transition
Releases up to v1.0.1719 only look for the .zip, and stay silent without it. Keep publishing the zip next to the exe for one or two releases (marked TODO), then drop it. Until then, the winget submission can switch to the exe, since nothing has been published there yet.
Not in scope
The exe stays unsigned, so SmartScreen still shows "unknown publisher", as it does now for the exe inside the zip (#907 was a Defender false positive on the download). Fixing that needs a code-signing certificate or Azure Trusted Signing, which is a separate decision.
- Dominant language
- Dart
- Stars
- 9k
- Forks
- 577
- Avg merge
- 1h 48m
- Merged PRs (30d)
- 153
Getting set up
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from lollipopkit/flutter_server_box
-
enhancement
Difficulty 5/5 Over a week Newbie friendliness 8/100
lollipopkit/flutter_server_box#1844 · 1 comment · 1 reaction ·
Maintainers usually reply within 1 day
-
F-Droid build failedOpenbug
Difficulty 3/5 Half a day Newbie friendliness 22/100
lollipopkit/flutter_server_box#1841 · 2 comments · 2 reactions ·
Maintainers usually reply within 1 day
-
优化建议Openenhancement feature
Difficulty 4/5 3-5 days Newbie friendliness 30/100
lollipopkit/flutter_server_box#1829 · 2 comments · 1 reaction ·
Maintainers usually reply within 1 day
-
feature
Difficulty 4/5 3-5 days Newbie friendliness 45/100
lollipopkit/flutter_server_box#1827 · 1 comment · 1 reaction ·
Maintainers usually reply within 1 day
-
bug
Difficulty 3/5 1-2 days Newbie friendliness 58/100
lollipopkit/flutter_server_box#1808 · 4 comments · 1 reaction ·
Maintainers usually reply within 1 day
All issues in lollipopkit/flutter_server_box
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 67/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 79/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 79/100
ccch1mneyyy/dsh-Go#731 ·
Maintainers usually reply within 1 day
-
enhancement good first issue help wanted
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
berkmancenter/frankly#753 ·
Maintainers usually reply within 4 days