The control surface uses HttpListener (http.sys), which denies prefix registration to standard users -- on every non-Administrator install the REST/WebSocket surface died at startup with Access is denied (5), taking the /ui phone panel and Companion integration with it. The MSI runs elevated, so it now reserves http://127.0.0.1:9755/ on install and deletes the reservation on uninstall. Deliberately NOT the strong wildcard: verified empirically that an idle http://+:9755/ RESERVATION makes http.sys answer 503 for every request to the loopback-bound listener without the request ever reaching the app. The in-app failure guidance suggested exactly that reservation; corrected to recommend the bound prefix and warn about the stale-wildcard trap. Verified on a clean install: urlacl present, GET / and /ui and /participants all 200 as a standard user; reservation removed on uninstall. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
46 lines
No EOL
2 KiB
XML
46 lines
No EOL
2 KiB
XML
<Project Sdk="WixToolset.Sdk/5.0.2">
|
|
|
|
<PropertyGroup>
|
|
<OutputType>Package</OutputType>
|
|
<OutputName>Dragon-ISO-Setup-$(Version)</OutputName>
|
|
|
|
<!-- 64-bit MSI; suppresses ICE80 on components in Program Files (x64). -->
|
|
<Platform>x64</Platform>
|
|
<InstallerPlatform>x64</InstallerPlatform>
|
|
|
|
<!--
|
|
Built artifact location. The installer expects a published build of
|
|
Dragon-ISO.App rooted here. CI / local script:
|
|
dotnet publish src/Dragon-ISO.App/Dragon-ISO.App.csproj
|
|
-c Release -r win-x64 -self-contained false
|
|
-o $(SolutionDir)publish/Dragon-ISO
|
|
-->
|
|
<PublishDir>$(MSBuildThisFileDirectory)..\publish\Dragon-ISO\</PublishDir>
|
|
|
|
<!--
|
|
MSI ProductVersion must be numeric x.y.z (no -beta/-rc suffix), and it is
|
|
what MajorUpgrade compares — so it must track the real build version, not
|
|
a hardcoded literal. Strip any prerelease suffix from $(Version). Note:
|
|
two prereleases of the same x.y.z share a ProductVersion and won't
|
|
upgrade over each other; bump the patch digit between betas.
|
|
-->
|
|
<MsiProductVersion>$([System.Text.RegularExpressions.Regex]::Match('$(Version)', '^\d+\.\d+(\.\d+)?').Value)</MsiProductVersion>
|
|
|
|
<!-- Pass MSBuild values into WiX preprocessor. -->
|
|
<DefineConstants>PublishDir=$(PublishDir);AssetsDir=$(MSBuildThisFileDirectory)..\src\Dragon-ISO.App\Assets\;ProductVersion=$(MsiProductVersion)</DefineConstants>
|
|
|
|
<!-- Code-signing hook (set externally for release builds; left empty for dev). -->
|
|
<SignOutput Condition=" '$(SignOutput)' == '' ">false</SignOutput>
|
|
</PropertyGroup>
|
|
|
|
<!--
|
|
Reference the WiX UI extension so the MSI shows a friendly progress UI
|
|
instead of the silent default.
|
|
-->
|
|
<ItemGroup>
|
|
<PackageReference Include="WixToolset.UI.wixext" Version="5.0.2" />
|
|
<!-- WixQuietExec for the URL ACL custom actions (control surface, port 9755). -->
|
|
<PackageReference Include="WixToolset.Util.wixext" Version="5.0.2" />
|
|
</ItemGroup>
|
|
|
|
</Project> |