Skip to content

Commit a28324e

Browse files
committed
fix: create Windows shortcuts with valid WiX directories
1 parent c3a0d63 commit a28324e

2 files changed

Lines changed: 55 additions & 20 deletions

File tree

.github/workflows/ci.yml

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -95,8 +95,19 @@ jobs:
9595
9696
$zipRoot = Join-Path $env:RUNNER_TEMP "zip"
9797
Expand-Archive -Path $zip.FullName -DestinationPath $zipRoot
98-
if (-not (Get-ChildItem $zipRoot -Recurse -Filter MissionPlanner.exe)) {
99-
throw "Portable ZIP does not contain MissionPlanner.exe"
98+
$requiredFiles = @(
99+
'MissionPlanner.exe',
100+
'e_sqlite3.dll',
101+
'airports.csv',
102+
'COPYING.txt',
103+
'NOTICE.md',
104+
'LICENSE',
105+
'SimpleBLE-0.7.3-NOTICE.txt'
106+
)
107+
foreach ($requiredFile in $requiredFiles) {
108+
if (-not (Get-ChildItem $zipRoot -Recurse -File -Filter $requiredFile)) {
109+
throw "Portable ZIP does not contain $requiredFile"
110+
}
100111
}
101112
102113
$msiRoot = Join-Path $env:RUNNER_TEMP "msi"
@@ -105,8 +116,10 @@ jobs:
105116
'/a', $msi.FullName, '/qn', "TARGETDIR=$msiRoot"
106117
)
107118
if ($process.ExitCode -ne 0) { throw "MSI validation failed: $($process.ExitCode)" }
108-
if (-not (Get-ChildItem $msiRoot -Recurse -Filter MissionPlanner.exe)) {
109-
throw "MSI does not contain MissionPlanner.exe"
119+
foreach ($requiredFile in $requiredFiles) {
120+
if (-not (Get-ChildItem $msiRoot -Recurse -File -Filter $requiredFile)) {
121+
throw "MSI does not contain $requiredFile"
122+
}
110123
}
111124
112125
- uses: actions/upload-artifact@v7

build/windows/msi/Package.wxs

Lines changed: 38 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -21,22 +21,7 @@
2121
<Component Id="MainExecutable" Bitness="always64">
2222
<File Id="MissionPlannerExecutable"
2323
Source="!(bindpath.PublishDir)MissionPlanner.exe"
24-
KeyPath="yes">
25-
<Shortcut Id="StartMenuShortcut"
26-
Directory="CommonProgramsFolder"
27-
Name="Mission Planner (Avalonia)"
28-
Description="Ground control station for ArduPilot vehicles"
29-
WorkingDirectory="INSTALLFOLDER"
30-
Advertise="yes"
31-
Icon="MissionPlanner.exe" />
32-
<Shortcut Id="DesktopShortcut"
33-
Directory="CommonDesktopFolder"
34-
Name="Mission Planner (Avalonia)"
35-
Description="Ground control station for ArduPilot vehicles"
36-
WorkingDirectory="INSTALLFOLDER"
37-
Advertise="yes"
38-
Icon="MissionPlanner.exe" />
39-
</File>
24+
KeyPath="yes" />
4025
</Component>
4126

4227
<!-- SQLite's native PE is versioned but language-neutral. LANGID 0 keeps MSI repair
@@ -54,5 +39,42 @@
5439
</Files>
5540
</Directory>
5641
</StandardDirectory>
42+
43+
<!-- Non-advertised shortcuts must use an HKCU registry value as their component
44+
key path (ICE43). Keeping each shortcut in a per-user-only component also
45+
avoids mixing it with the per-machine executable component (ICE57). -->
46+
<StandardDirectory Id="ProgramMenuFolder">
47+
<Component Id="StartMenuShortcutComponent" Bitness="always64">
48+
<Shortcut Id="StartMenuShortcut"
49+
Name="Mission Planner (Avalonia)"
50+
Description="Ground control station for ArduPilot vehicles"
51+
Target="[#MissionPlannerExecutable]"
52+
WorkingDirectory="INSTALLFOLDER"
53+
Icon="MissionPlanner.exe" />
54+
<RegistryValue Root="HKCU"
55+
Key="Software\Rouniy\MissionPlannerAvalonia"
56+
Name="StartMenuShortcut"
57+
Type="integer"
58+
Value="1"
59+
KeyPath="yes" />
60+
</Component>
61+
</StandardDirectory>
62+
63+
<StandardDirectory Id="DesktopFolder">
64+
<Component Id="DesktopShortcutComponent" Bitness="always64">
65+
<Shortcut Id="DesktopShortcut"
66+
Name="Mission Planner (Avalonia)"
67+
Description="Ground control station for ArduPilot vehicles"
68+
Target="[#MissionPlannerExecutable]"
69+
WorkingDirectory="INSTALLFOLDER"
70+
Icon="MissionPlanner.exe" />
71+
<RegistryValue Root="HKCU"
72+
Key="Software\Rouniy\MissionPlannerAvalonia"
73+
Name="DesktopShortcut"
74+
Type="integer"
75+
Value="1"
76+
KeyPath="yes" />
77+
</Component>
78+
</StandardDirectory>
5779
</Package>
5880
</Wix>

0 commit comments

Comments
 (0)