wordcraft.wxs shipped with DesignCraft's UpgradeCode and app component
GUID. Windows Installer treats packages that share an UpgradeCode as one
product, so with DesignCraft 0.2.1 installed the WordCraft 0.1.0 MSI was a
"downgrade" and refused to install ("A newer version of WordCraft is
already installed"), and installing DesignCraft after WordCraft would have
removed WordCraft.
Give WordCraft fresh GUIDs, drop the header comment copied from PhotoCraft,
and make packaging-lint fail if the .wxs reuses a sibling Craft app's
UpgradeCode/component GUID or repeats a GUID.
Fixes #4.
Claude-Session: https://claude.ai/code/session_019FczntrDNYd6DupyBdpbL5
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
61e2152250
commit
3f166a94f5
|
|
@ -51,6 +51,25 @@ jobs:
|
|||
if grep -oE '<Icon Id="[^"]*"' packaging/windows/wordcraft.wxs | grep -vE '\.(ico|exe)"$'; then
|
||||
echo "::error::Icon Id must end in .ico or .exe"; exit 1
|
||||
fi
|
||||
# Each Craft app needs its own MSI UpgradeCode and component GUIDs. Sharing one with a
|
||||
# sibling makes Windows Installer treat the two apps as versions of one product (#4).
|
||||
# Codes the sibling apps' installers use:
|
||||
siblings='D9660F32-2D0A-4ABE-B73D-17BE25F1542C A6DE41B7-A80F-4C59-A17E-BB68065BF67E
|
||||
601C6437-08AE-4645-ADCC-27F036C2EA2F 0E8C6C5E-DE4A-4E1D-9DB0-44E8E38C2103
|
||||
31E6FB14-9DBC-41DD-B24B-26B71FB31B62 15933017-925B-4963-8992-52000EB26AAA
|
||||
229BB552-5EFD-479A-BA86-8CB6D926390C 8A1D3A39-F7C1-47B1-97AE-40C80BF82F4A
|
||||
EA00C367-7270-4C50-9D8B-A7A5C88AD27F E724C1C6-091F-4E21-A685-80D089FDBE21
|
||||
DC028192-C233-4F99-9A77-ED458C60DF26 F6948627-32AB-4D78-8865-0FDF417CE442
|
||||
AACA8593-C6ED-40A8-BA6C-CB325D8529F9 BA719860-95FE-4154-B265-47006B8E9083
|
||||
49E87D30-BB68-4896-AA1D-F45C833CFC3C DE018EF3-EE87-4E36-9F76-0B7B060A195E'
|
||||
for code in $siblings; do
|
||||
if grep -qi "$code" packaging/windows/wordcraft.wxs; then
|
||||
echo "::error file=packaging/windows/wordcraft.wxs::$code belongs to a sibling Craft app's MSI; generate a new GUID"; exit 1
|
||||
fi
|
||||
done
|
||||
if [ "$(grep -oiE '(UpgradeCode|Guid)="[0-9A-F-]{36}"' packaging/windows/wordcraft.wxs | cut -d'"' -f2 | sort -f | uniq -di)" ]; then
|
||||
echo "::error file=packaging/windows/wordcraft.wxs::duplicate GUID"; exit 1
|
||||
fi
|
||||
desktop-file-validate packaging/linux/ai.storyteller.wordcraft.desktop
|
||||
sed -e 's/@VERSION@/0.0.0/' -e 's/@DATE@/2026-01-01/' packaging/linux/ai.storyteller.wordcraft.metainfo.xml.in >"$RUNNER_TEMP/ai.storyteller.wordcraft.metainfo.xml"
|
||||
appstreamcli validate --no-net --explain "$RUNNER_TEMP/ai.storyteller.wordcraft.metainfo.xml"
|
||||
|
|
|
|||
|
|
@ -4,16 +4,19 @@
|
|||
|
||||
wix build wordcraft.wxs -arch x64 -d Version=1.2.3 -d BinDir=... -d IconPath=... -o out.msi
|
||||
|
||||
Per-machine install into Program Files, a Start Menu shortcut, `.pcraft` owned by WordCraft,
|
||||
and WordCraft offered under "Open with" for PSD/PSB and the image formats it reads (without
|
||||
taking over the user's default app for them).
|
||||
Per-machine install into Program Files with a Start Menu shortcut.
|
||||
|
||||
UpgradeCode and the component GUIDs below belong to WordCraft alone. Never copy them from (or
|
||||
into) a sibling Craft app: Windows Installer treats every package sharing an UpgradeCode as one
|
||||
product, so a shared code makes one app's installer refuse to install ("a newer version is
|
||||
already installed") or silently uninstall the other. packaging-lint.yml checks this.
|
||||
-->
|
||||
<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
|
||||
<Package
|
||||
Name="WordCraft"
|
||||
Manufacturer="Learning Machines LLC"
|
||||
Version="$(var.Version)"
|
||||
UpgradeCode="49E87D30-BB68-4896-AA1D-F45C833CFC3C"
|
||||
UpgradeCode="075497F9-E861-45D0-9C7F-A74F8C34E6BA"
|
||||
Scope="perMachine"
|
||||
Compressed="yes"
|
||||
Language="1033">
|
||||
|
|
@ -42,7 +45,7 @@
|
|||
|
||||
<Fragment>
|
||||
<ComponentGroup Id="WordcraftFiles" Directory="INSTALLFOLDER">
|
||||
<Component Id="WordcraftApp" Guid="DE018EF3-EE87-4E36-9F76-0B7B060A195E">
|
||||
<Component Id="WordcraftApp" Guid="855DCEC6-9285-444F-9382-9654B83B34F6">
|
||||
<File Id="WordcraftExe" Source="$(var.BinDir)\wordcraft.exe" KeyPath="yes">
|
||||
<Shortcut Id="StartMenuShortcut" Directory="ProgramMenuFolder" Name="WordCraft"
|
||||
Description="WordCraft word processor" WorkingDirectory="INSTALLFOLDER" Advertise="yes"
|
||||
|
|
|
|||
Loading…
Reference in New Issue