Polish exe packaging (icon + version metadata) and automate releases - #2
Merged
Merged
Conversation
…utomate releases Turn the standalone exe from a bare, metadata-less binary built by hand into a proper, identifiable Windows artifact with a one-command release path. - storageanalyzer.spec now embeds an application icon and a Windows version resource (Properties -> Details: ProductName / version / company / copyright), both derived from storageanalyzer.__version__ so they can never drift from the package version. The version resource is generated at build time into build/. - packaging/: committed app icon (storageanalyzer.ico -- a treemap tile that matches the HTML report) plus make_icon.py to regenerate it (Pillow, build-time only; the .ico is checked in so the exe build gains no new dependency). - installer/storageanalyzer.iss + build-installer.ps1: optional per-user Inno Setup installer -- no admin, opt-in "add to PATH", registered uninstaller. Degrades gracefully to "exe only" when Inno Setup isn't installed. - .github/workflows/release.yml: build + smoke-test the exe and installer on Windows for every push/PR, and publish a GitHub Release with both attached on a v* tag. Releasing becomes: bump __version__, git tag vX.Y.Z, git push --tags. - LICENSE: add the MIT license text (pyproject already declared MIT; the installer bundles it). - README: document the icon/version metadata, the installer, and tagged releases. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Improves how StorageAnalyzer is packaged and shipped. The repo already built a working one-file
storageanalyzer.exe, but it was a bare binary — no icon, no version metadata, and every release was a manual hand-build. This PR makes the exe a proper, identifiable Windows artifact and turns releasing it into a single tag push.Changes
storageanalyzer.spec). The exe now carries an application icon and a Windows version resource — right-click → Properties → Details shows ProductName, FileVersion, CompanyName, and copyright. Both are derived fromstorageanalyzer.__version__, so they can never drift from the package version (the resource is generated intobuild/at build time).packaging/).storageanalyzer.icois a squarified-treemap tile that matches the HTML report's visual identity. It's checked in (so the exe build gains no new dependency) and regenerable withpython packaging/make_icon.py(Pillow, build-time only).installer/storageanalyzer.iss+build-installer.ps1). A per-user Inno Setup installer: no admin required (installs under%LOCALAPPDATA%\Programs), opt-in "add to PATH" task, and a registered uninstaller in Apps & features. If Inno Setup isn't installed, the build script falls back to "exe only" with a note..github/workflows/release.yml). Builds + smoke-tests the exe and installer onwindows-latestfor every push/PR, and publishes a GitHub Release with both attached on av*tag. Releasing becomes: bump__version__,git tag vX.Y.Z,git push --tags.pyproject.tomlalready declared MIT; the installer bundles it).Verification
pyinstaller storageanalyzer.spec; confirmed the embedded version resource (ProductName=StorageAnalyzer,FileVersion=1.0.0,CompanyName=Cameron Crow, MIT copyright), a present icon resource, working--version, and a successful native-engine scan producing an HTML report.pytest— all 37 tests pass.build/,dist/, and the native.pydremain gitignored.Notes
build-installer.ps1run and a throwaway tag to confirm.🤖 Generated with Claude Code