mirror of
https://github.com/narrrl/proton-stream.git
synced 2026-11-03 16:41:26 +01:00
An MSI upgrade left the app without libmpv-2.dll until it was installed a second time (B62). Costing runs before RemoveExistingProducts, saw the old DLL at the same version and skipped the copy, and removing the old product then deleted it. Both installer definitions now set REINSTALLMODE=amus; every file is private to the install directory. A taskbar pin lost its icon after a while (B63). The exe carried no icon resource, and the Start Menu shortcut's icon lived in the per-ProductCode installer cache that each upgrade deletes. build.rs now compiles the .ico into proton-stream.exe, and the shortcut has no Icon of its own (and in the WiX build is no longer advertised), so both show the exe's icon.
96 lines
4.5 KiB
XML
96 lines
4.5 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!--
|
|
WiX v4/v5/v6 installer definition. Built by scripts/build.ps1:
|
|
|
|
wix build -arch x64 -ext WixToolset.UI.wixext packaging/windows/proton-stream.wxs `
|
|
-d Version=0.1.0 -d BinDir=... -d MpvDll=... -d IconFile=... -d LicenseRtf=... -d ReadMe=... `
|
|
-o dist/proton-stream-0.1.0-x64.msi
|
|
|
|
UpgradeCode is fixed forever: it is what makes 0.2.0 replace 0.1.0 instead of
|
|
installing beside it. Never regenerate it.
|
|
-->
|
|
<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"
|
|
xmlns:ui="http://wixtoolset.org/schemas/v4/wxs/ui">
|
|
|
|
<Package Name="Proton Stream"
|
|
Manufacturer="Nils Pukropp"
|
|
Version="$(var.Version)"
|
|
UpgradeCode="0a5c3818-3401-469c-a2ac-a3172cef1938"
|
|
Scope="perMachine"
|
|
Compressed="yes"
|
|
Language="1033">
|
|
|
|
<SummaryInformation Description="Netflix-style desktop client for Proton Drive public links" />
|
|
|
|
<MajorUpgrade AllowSameVersionUpgrades="yes"
|
|
DowngradeErrorMessage="A newer version of Proton Stream is already installed." />
|
|
<MediaTemplate EmbedCab="yes" />
|
|
|
|
<!-- Copy every file on an upgrade, whatever is on disk. Costing runs
|
|
before RemoveExistingProducts, so it sees the old libmpv-2.dll — the
|
|
same version, since mpv is pinned — and decides not to copy it. The
|
|
removal of the old product then deletes it, and the upgrade ends with
|
|
no DLL: "mpv missing" until a second install, which finds nothing on
|
|
disk and copies it. Every file here is private to INSTALLFOLDER, so
|
|
overwriting unconditionally downgrades nothing shared. -->
|
|
<Property Id="REINSTALLMODE" Value="amus" />
|
|
|
|
<Icon Id="AppIcon" SourceFile="$(var.IconFile)" />
|
|
<Property Id="ARPPRODUCTICON" Value="AppIcon" />
|
|
<Property Id="ARPURLINFOABOUT" Value="https://github.com/narrrl/proton-stream" />
|
|
<Property Id="ARPNOREPAIR" Value="1" />
|
|
|
|
<!-- 6432 resolves to Program Files (x64) because the build passes -arch x64. -->
|
|
<StandardDirectory Id="ProgramFiles6432Folder">
|
|
<Directory Id="INSTALLFOLDER" Name="Proton Stream" />
|
|
</StandardDirectory>
|
|
<StandardDirectory Id="ProgramMenuFolder" />
|
|
|
|
<!-- The Guids are written out rather than left to WiX's deterministic
|
|
generation, and they match packaging/windows/proton-stream.wixl.wxs
|
|
one for one. That is what lets the Linux-built .msi and this one
|
|
upgrade each other instead of double-counting components. A new
|
|
payload file gets a new Component and a new Guid, in both files. -->
|
|
<ComponentGroup Id="AppComponents" Directory="INSTALLFOLDER">
|
|
<Component Guid="623c8cb8-b826-4d57-a054-e5be56f24c19">
|
|
<File Id="AppExe" Source="$(var.BinDir)\proton-stream.exe" KeyPath="yes" />
|
|
<!-- Not advertised, and no Icon: either one puts the shortcut's icon
|
|
in C:\Windows\Installer\{ProductCode}, which the next upgrade
|
|
deletes along with the icon of every taskbar pin made from the
|
|
shortcut. This way it shows the exe's own icon resource. -->
|
|
<Shortcut Id="StartMenuShortcut"
|
|
Directory="ProgramMenuFolder"
|
|
Name="Proton Stream"
|
|
Description="Browse and stream a Proton Drive public link"
|
|
Target="[#AppExe]"
|
|
WorkingDirectory="INSTALLFOLDER" />
|
|
</Component>
|
|
|
|
<!-- The CLI, and the PATH entry that makes it worth installing. Tied to
|
|
the same component so uninstalling takes the PATH edit with it. -->
|
|
<Component Guid="6440650e-281f-4842-a75a-4cbea8be0d71">
|
|
<File Id="CliExe" Source="$(var.BinDir)\pstr.exe" KeyPath="yes" />
|
|
<Environment Id="PstrPath" Name="PATH" Value="[INSTALLFOLDER]"
|
|
Part="last" Action="set" System="yes" Permanent="no" />
|
|
</Component>
|
|
|
|
<!-- libmpv does the demuxing and decoding. There is no static build of it
|
|
worth shipping, so the DLL sits beside the exe. -->
|
|
<Component Guid="ff74fc79-78e3-4ed8-881d-f322ed6ff6b4">
|
|
<File Id="MpvDll" Source="$(var.MpvDll)" KeyPath="yes" />
|
|
</Component>
|
|
|
|
<Component Guid="5bb65b44-f5df-423b-8dcc-a753d7aef565">
|
|
<File Id="ReadMe" Source="$(var.ReadMe)" Name="README.md" KeyPath="yes" />
|
|
</Component>
|
|
</ComponentGroup>
|
|
|
|
<Feature Id="Main" Title="Proton Stream" Level="1">
|
|
<ComponentGroupRef Id="AppComponents" />
|
|
</Feature>
|
|
|
|
<WixVariable Id="WixUILicenseRtf" Value="$(var.LicenseRtf)" />
|
|
<ui:WixUI Id="WixUI_InstallDir" InstallDirectory="INSTALLFOLDER" />
|
|
</Package>
|
|
</Wix>
|