Fix: stamp release version from git tag into Info.plists#1
Merged
Conversation
…lists Both Info.plist files have CFBundleShortVersionString and CFBundleVersion literally hardcoded (currently 1.0.8). Because INFOPLIST_FILE is used (not GENERATE_INFOPLIST_FILE), MARKETING_VERSION in project.pbxproj is never substituted — the literal value wins. As a result, every CI release since 1.0.8 has shipped a 1.0.8 binary inside a renamed DMG wrapper. Add a workflow step that uses plutil to overwrite CFBundleShortVersionString and CFBundleVersion in both Info.plists with the tag version (vX.Y.Z stripped to X.Y.Z) before xcodebuild runs. Local/manual builds are unaffected — they continue to use whatever's committed in the plists.
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.
Summary
v1.0.8(Nov 26, 2025) shipped a binary stamped1.0.8inside a DMG that was merely renamed to match the tag (e.g.,GigEVirtualCamera-v1.0.14.dmgcontains a1.0.8app and extension).plutilto overwriteCFBundleShortVersionStringandCFBundleVersionin bothInfo.plistfiles with the tag version (stripping the leadingv) beforexcodebuild archiveruns.Why this approach
Both
GigECameraApp/Info.plistandGigEVirtualCameraExtension/Info.plistliterally hardcode1.0.8for both bundle-version keys. Because the Xcode project usesINFOPLIST_FILE = ...Info.plist(notGENERATE_INFOPLIST_FILE = YES), theMARKETING_VERSIONinproject.pbxprojis never substituted — the literal plist value wins.A surgical workflow-only fix was chosen over reworking the project to use
$(MARKETING_VERSION)because:Scripts/automated_distribution.shalready uses the samedefaults writepattern (line 191), so this is consistent with existing conventions.Test plan
v1.0.15) and watch the workflow run1.0.15for both plists1.0.15systemextensionsctl listshould report the extension at1.0.15/1.0.15Notes
v1.0.14— cleaner to ship a freshv1.0.15once this lands.$(MARKETING_VERSION)placeholders and passMARKETING_VERSION=...toxcodebuildso manual local builds also get a sensible version. Not required for this fix.🤖 Generated with Claude Code