Feat: produce an .msi for windows CI
This commit is contained in:
17
.github/workflows/release.yml
vendored
17
.github/workflows/release.yml
vendored
@@ -141,6 +141,21 @@ jobs:
|
|||||||
name: ${{ matrix.artifact }}-desktop
|
name: ${{ matrix.artifact }}-desktop
|
||||||
path: target/${{ matrix.target }}/release/cagire-desktop.exe
|
path: target/${{ matrix.target }}/release/cagire-desktop.exe
|
||||||
|
|
||||||
|
- name: Install cargo-wix (Windows)
|
||||||
|
if: runner.os == 'Windows'
|
||||||
|
run: cargo install cargo-wix
|
||||||
|
|
||||||
|
- name: Build MSI installer (Windows)
|
||||||
|
if: runner.os == 'Windows'
|
||||||
|
run: cargo wix --no-build --nocapture -C -p -C x64
|
||||||
|
|
||||||
|
- name: Upload MSI installer (Windows)
|
||||||
|
if: runner.os == 'Windows'
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: ${{ matrix.artifact }}-msi
|
||||||
|
path: target/wix/*.msi
|
||||||
|
|
||||||
- name: Upload CLAP artifact
|
- name: Upload CLAP artifact
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
@@ -364,6 +379,8 @@ jobs:
|
|||||||
elif [[ "$name" == *-vst3 ]]; then
|
elif [[ "$name" == *-vst3 ]]; then
|
||||||
base="${name%-vst3}"
|
base="${name%-vst3}"
|
||||||
cd "$dir" && zip -r "../../release/${base}-vst3.zip" cagire-plugins.vst3 && cd ../..
|
cd "$dir" && zip -r "../../release/${base}-vst3.zip" cagire-plugins.vst3 && cd ../..
|
||||||
|
elif [[ "$name" == *-msi ]]; then
|
||||||
|
cp "$dir"/*.msi release/
|
||||||
elif [[ "$name" == *-appimage ]]; then
|
elif [[ "$name" == *-appimage ]]; then
|
||||||
cp "$dir"/*.AppImage release/
|
cp "$dir"/*.AppImage release/
|
||||||
elif [[ "$name" == *-desktop ]]; then
|
elif [[ "$name" == *-desktop ]]; then
|
||||||
|
|||||||
@@ -322,6 +322,13 @@ copy_artifacts() {
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# MSI installer for Windows targets
|
||||||
|
if [[ "$os" == "windows" ]] && command -v cargo-wix &>/dev/null; then
|
||||||
|
echo " Building MSI installer..."
|
||||||
|
cargo wix --no-build --nocapture -C -p -C x64
|
||||||
|
cp target/wix/*.msi "$OUT/" 2>/dev/null && echo " MSI -> $OUT/" || true
|
||||||
|
fi
|
||||||
|
|
||||||
# AppImage for Linux targets
|
# AppImage for Linux targets
|
||||||
if [[ "$os" == "linux" ]]; then
|
if [[ "$os" == "linux" ]]; then
|
||||||
if $build_cagire; then
|
if $build_cagire; then
|
||||||
|
|||||||
20
wix/License.rtf
Normal file
20
wix/License.rtf
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
{\rtf1\ansi\deff0\nouicompat{\fonttbl{\f0\fswiss\fcharset0 Helvetica;}}
|
||||||
|
{\*\generator Msftedit 5.41.21.2510;}\viewkind4\uc1
|
||||||
|
\pard\sa200\sl276\slmult1\f0\fs20\lang9
|
||||||
|
|
||||||
|
CAGIRE - Forth-based Music Sequencer\par
|
||||||
|
Copyright (c) 2025 Rapha\"el Forment\par
|
||||||
|
\par
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU Affero General Public License as published
|
||||||
|
by the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.\par
|
||||||
|
\par
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU Affero General Public License for more details.\par
|
||||||
|
\par
|
||||||
|
You should have received a copy of the GNU Affero General Public License
|
||||||
|
along with this program. If not, see https://www.gnu.org/licenses/.\par
|
||||||
|
}
|
||||||
146
wix/main.wxs
Normal file
146
wix/main.wxs
Normal file
@@ -0,0 +1,146 @@
|
|||||||
|
<?xml version='1.0' encoding='windows-1252'?>
|
||||||
|
|
||||||
|
<?if $(sys.BUILDARCH) = x64 or $(sys.BUILDARCH) = intel64 ?>
|
||||||
|
<?define PlatformProgramFilesFolder = "ProgramFiles64Folder" ?>
|
||||||
|
<?else ?>
|
||||||
|
<?define PlatformProgramFilesFolder = "ProgramFilesFolder" ?>
|
||||||
|
<?endif ?>
|
||||||
|
|
||||||
|
<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'>
|
||||||
|
|
||||||
|
<Product
|
||||||
|
Id='*'
|
||||||
|
Name='Cagire'
|
||||||
|
UpgradeCode='F2A3D4E5-6B7C-8D9E-0F1A-2B3C4D5E6F7A'
|
||||||
|
Manufacturer='Raphael Forment'
|
||||||
|
Language='1033'
|
||||||
|
Codepage='1252'
|
||||||
|
Version='$(var.Version)'>
|
||||||
|
|
||||||
|
<Package Id='*'
|
||||||
|
Keywords='Installer'
|
||||||
|
Description='Cagire - Forth-based music sequencer'
|
||||||
|
Manufacturer='Raphael Forment'
|
||||||
|
InstallerVersion='450'
|
||||||
|
Languages='1033'
|
||||||
|
Compressed='yes'
|
||||||
|
InstallScope='perMachine'
|
||||||
|
SummaryCodepage='1252'
|
||||||
|
/>
|
||||||
|
|
||||||
|
<MajorUpgrade
|
||||||
|
Schedule='afterInstallInitialize'
|
||||||
|
DowngradeErrorMessage='A newer version of [ProductName] is already installed. Setup will now exit.'/>
|
||||||
|
|
||||||
|
<Media Id='1' Cabinet='media1.cab' EmbedCab='yes' DiskPrompt='CD-ROM #1'/>
|
||||||
|
<Property Id='DiskPrompt' Value='Cagire Installation'/>
|
||||||
|
|
||||||
|
<Directory Id='TARGETDIR' Name='SourceDir'>
|
||||||
|
<Directory Id='$(var.PlatformProgramFilesFolder)' Name='PFiles'>
|
||||||
|
<Directory Id='APPLICATIONFOLDER' Name='Cagire'>
|
||||||
|
|
||||||
|
<Component Id='CagireCLI' Guid='A1B2C3D4-E5F6-7890-ABCD-EF1234567890' Win64='yes'>
|
||||||
|
<File
|
||||||
|
Id='CagireEXE'
|
||||||
|
Name='cagire.exe'
|
||||||
|
DiskId='1'
|
||||||
|
Source='$(var.CargoTargetBinDir)\cagire.exe'
|
||||||
|
KeyPath='yes'/>
|
||||||
|
</Component>
|
||||||
|
|
||||||
|
<Component Id='CagireDesktop' Guid='B2C3D4E5-F6A7-8901-BCDE-F12345678901' Win64='yes'>
|
||||||
|
<File
|
||||||
|
Id='CagireDesktopEXE'
|
||||||
|
Name='cagire-desktop.exe'
|
||||||
|
DiskId='1'
|
||||||
|
Source='$(var.CargoTargetBinDir)\cagire-desktop.exe'
|
||||||
|
KeyPath='yes'/>
|
||||||
|
</Component>
|
||||||
|
|
||||||
|
<Component Id='PathEntry' Guid='C3D4E5F6-A7B8-9012-CDEF-123456789012' Win64='yes' KeyPath='yes'>
|
||||||
|
<Environment
|
||||||
|
Id='PATH'
|
||||||
|
Name='PATH'
|
||||||
|
Value='[APPLICATIONFOLDER]'
|
||||||
|
Permanent='no'
|
||||||
|
Part='last'
|
||||||
|
Action='set'
|
||||||
|
System='yes'/>
|
||||||
|
</Component>
|
||||||
|
|
||||||
|
</Directory>
|
||||||
|
</Directory>
|
||||||
|
|
||||||
|
<Directory Id='ProgramMenuFolder'>
|
||||||
|
<Directory Id='ApplicationProgramsFolder' Name='Cagire'>
|
||||||
|
<Component Id='StartMenuShortcut' Guid='D4E5F6A7-B8C9-0123-DEFA-234567890123' Win64='yes'>
|
||||||
|
<Shortcut
|
||||||
|
Id='CagireDesktopShortcut'
|
||||||
|
Name='Cagire'
|
||||||
|
Description='Forth-based music sequencer'
|
||||||
|
Target='[APPLICATIONFOLDER]cagire-desktop.exe'
|
||||||
|
WorkingDirectory='APPLICATIONFOLDER'
|
||||||
|
Icon='CagireIcon.exe'/>
|
||||||
|
<RemoveFolder Id='CleanUpShortcutFolder' On='uninstall'/>
|
||||||
|
<RegistryValue
|
||||||
|
Root='HKCU'
|
||||||
|
Key='Software\Cagire'
|
||||||
|
Name='installed'
|
||||||
|
Type='integer'
|
||||||
|
Value='1'
|
||||||
|
KeyPath='yes'/>
|
||||||
|
</Component>
|
||||||
|
</Directory>
|
||||||
|
</Directory>
|
||||||
|
</Directory>
|
||||||
|
|
||||||
|
<Feature
|
||||||
|
Id='Binaries'
|
||||||
|
Title='Application'
|
||||||
|
Description='Installs Cagire CLI and Desktop binaries.'
|
||||||
|
Level='1'
|
||||||
|
ConfigurableDirectory='APPLICATIONFOLDER'
|
||||||
|
AllowAdvertise='no'
|
||||||
|
Display='expand'
|
||||||
|
Absent='disallow'>
|
||||||
|
|
||||||
|
<ComponentRef Id='CagireCLI'/>
|
||||||
|
<ComponentRef Id='CagireDesktop'/>
|
||||||
|
|
||||||
|
<Feature
|
||||||
|
Id='Environment'
|
||||||
|
Title='PATH Environment Variable'
|
||||||
|
Description='Add the install location to the PATH system environment variable. This allows the cagire CLI to be called from any location.'
|
||||||
|
Level='1'
|
||||||
|
Absent='allow'>
|
||||||
|
<ComponentRef Id='PathEntry'/>
|
||||||
|
</Feature>
|
||||||
|
</Feature>
|
||||||
|
|
||||||
|
<Feature
|
||||||
|
Id='StartMenu'
|
||||||
|
Title='Start Menu Shortcut'
|
||||||
|
Description='Add a Cagire shortcut to the Start Menu.'
|
||||||
|
Level='1'
|
||||||
|
Absent='allow'>
|
||||||
|
<ComponentRef Id='StartMenuShortcut'/>
|
||||||
|
</Feature>
|
||||||
|
|
||||||
|
<SetProperty Id='ARPINSTALLLOCATION' Value='[APPLICATIONFOLDER]' After='CostFinalize'/>
|
||||||
|
|
||||||
|
<Icon Id='CagireIcon.exe' SourceFile='assets\Cagire.ico'/>
|
||||||
|
<Property Id='ARPPRODUCTICON' Value='CagireIcon.exe'/>
|
||||||
|
<Property Id='ARPHELPLINK' Value='https://cagire.raphaelforment.fr'/>
|
||||||
|
<Property Id='ARPURLINFOABOUT' Value='https://github.com/Bubobubobubobubo/cagire'/>
|
||||||
|
|
||||||
|
<UI>
|
||||||
|
<UIRef Id='WixUI_FeatureTree'/>
|
||||||
|
<Publish Dialog='WelcomeDlg' Control='Next' Event='NewDialog' Value='CustomizeDlg' Order='99'>1</Publish>
|
||||||
|
<Publish Dialog='CustomizeDlg' Control='Back' Event='NewDialog' Value='WelcomeDlg' Order='99'>1</Publish>
|
||||||
|
</UI>
|
||||||
|
|
||||||
|
<WixVariable Id='WixUILicenseRtf' Value='wix\License.rtf'/>
|
||||||
|
|
||||||
|
</Product>
|
||||||
|
|
||||||
|
</Wix>
|
||||||
Reference in New Issue
Block a user