Skip to content

Commit

Permalink
Update build to use WiX v4
Browse files Browse the repository at this point in the history
  • Loading branch information
danielgjackson committed Feb 9, 2024
1 parent 65774cb commit 86b1f7a
Show file tree
Hide file tree
Showing 4 changed files with 67 additions and 74 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,5 @@ _local
/*.wixpdb
/*.msi
/build
/obj
/bin
37 changes: 12 additions & 25 deletions build-installer.cmd
Original file line number Diff line number Diff line change
Expand Up @@ -27,31 +27,17 @@ for /f "tokens=3 usebackq" %%f in (`type toggle.rc ^| findstr /R /C:"#define[ ]V
for /f "tokens=3 usebackq" %%f in (`type toggle.rc ^| findstr /R /C:"#define[ ]VER_BUILD"`) do set VER=%VER%.%%f
rem for /f "tokens=3 usebackq" %%f in (`type toggle.rc ^| findstr /R /C:"#define[ ]VER_REVISION"`) do set VER=%VER%.%%f

:PATH_CANDLE
SET WIX_PATH=
SET FIND_CANDLE=
FOR %%p IN (candle.exe) DO SET "FIND_CANDLE=%%~$PATH:p"
IF NOT DEFINED FIND_CANDLE GOTO LOCATE_CANDLE
SET WIX_PATH=%FIND_CANDLE:~0,-10%
ECHO WiX Toolset located on path: %WIX_PATH%
GOTO BUILD

:LOCATE_CANDLE
ECHO Searching for WiX Toolset...
FOR /F "usebackq tokens=*" %%f IN (`DIR /B /ON "%ProgramFiles(x86)%\WiX Toolset*"`) DO IF EXIST "%ProgramFiles(x86)%\%%f\bin\candle.exe" SET "WIX_PATH=%ProgramFiles(x86)%\%%f\bin\"
IF "%WIX_PATH%"=="" ECHO Cannot find WiX Toolset & GOTO ERROR
ECHO WiX Toolset found at: %WIX_PATH%

:BUILD
ECHO Building...
"%WIX_PATH%candle.exe" -ext WixUtilExtension toggle.wxs
IF ERRORLEVEL 1 GOTO ERROR

ECHO Building...
"%WIX_PATH%light.exe" -sice:ICE91 -ext WixUtilExtension -ext WixUIExtension toggle.wixobj
IF ERRORLEVEL 1 GOTO ERROR


::: Using .wixproj for WiX V4
dotnet build -c Release toggle.wixproj
IF ERRORLEVEL 1 (
ECHO If WiX Toolset not installed:
ECHO dotnet tool install --global wix
REM ECHO dotnet add package WixToolset.UI.wixext
REM ECHO dotnet add package WixToolset.Util.wixext
ECHO.
GOTO ERROR
)
copy /Y bin\Release\toggle.msi toggle.msi

:PATH_WINDOWSKIT
SET WINDOWSKIT_PATH=
Expand Down Expand Up @@ -91,6 +77,7 @@ rem IF ERRORLEVEL 1 GOTO ERROR
"%WINDOWSKIT_PATH%signtool.exe" sign /debug /v /a /f "D:\Certificates\mycert.pfx" /d "Toggle Light/Dark" %TIMESTAMP_SERVER% "toggle.msi"
IF ERRORLEVEL 1 GOTO ERROR

ECHO.
ECHO Done: V%VER%
IF DEFINED INTERACTIVE_IBUILD COLOR 2F & PAUSE & COLOR
GOTO :EOF
Expand Down
12 changes: 12 additions & 0 deletions toggle.wixproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<Project Sdk="WixToolset.Sdk/4.0.4">
<!--
<PropertyGroup>
<EnableProjectHarvesting>True</EnableProjectHarvesting>
<ReferenceOutputAssembly>False</ReferenceOutputAssembly>
</PropertyGroup>
-->
<ItemGroup>
<PackageReference Include="WixToolset.UI.wixext" Version="4.0.4" />
<PackageReference Include="WixToolset.Util.wixext" Version="4.0.4" />
</ItemGroup>
</Project>
90 changes: 41 additions & 49 deletions toggle.wxs
Original file line number Diff line number Diff line change
@@ -1,73 +1,36 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Change the Product/@Id on any installation file changes. Modify the Product Version for any minor changes. -->
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
<Product Name="Toggle Dark-Light Mode" Id="*" UpgradeCode="9bf9dd6a-aced-4905-98db-3572c6699b8d" Language="1033" Version="!(bind.FileVersion.toggleEXE)" Manufacturer="danielgjackson">
<Package Id="*" InstallerVersion="200" Compressed="yes" InstallScope="perUser" /><!-- "perMachine" / "perUser" -->

<!-- Change the Product/@Id on any installation file changes. Modify the Product Version for any minor changes. -->
<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" xmlns:util="http://wixtoolset.org/schemas/v4/wxs/util" xmlns:ui="http://wixtoolset.org/schemas/v4/wxs/ui">
<Package Name="Toggle Dark-Light Mode" UpgradeCode="9bf9dd6a-aced-4905-98db-3572c6699b8d" Language="1033" Version="!(bind.FileVersion.toggleEXE)" Manufacturer="danielgjackson" InstallerVersion="200" Scope="perUser"><!-- "perMachine" / "perUser" -->

<MajorUpgrade AllowDowngrades="yes" /><!-- AllowSameVersionUpgrades="yes" -->

<Media Id="1" Cabinet="toggle.cab" EmbedCab="yes" />
<Directory Id="TARGETDIR" Name="SourceDir">
<!-- Program Files -->
<Directory Id="LocalAppDataFolder"> <!-- "ProgramFilesFolder" / "AppDataFolder" -->
<Directory Id="INSTALLDIR" Name="Toggle Dark-Light Mode">
<Component Id="MainExecutable" Guid="e1111df2-0c33-4671-9fe2-8f7988a9fe24">
<RegistryValue Root="HKCU" Key="SOFTWARE\danielgjackson\Toggle Dark-Light Mode" Type="string" Name="MainExecutable" Value="-" KeyPath="yes" />
<File Id="toggleEXE" Name="toggle.exe" Source="toggle.exe" Vital="yes"> <!-- KeyPath="yes" -->
<Shortcut Id="startmenuToggle" Directory="ProgramMenuDir" Name="Toggle Dark-Light Mode" WorkingDirectory="INSTALLDIR" Icon="toggle.exe" IconIndex="0" /> <!-- Advertise="yes" -->
</File>
<RemoveFolder Id="INSTALLDIR" On="uninstall" />
</Component>
</Directory>
</Directory>
<!-- Start Menu -->
<Directory Id="StartMenuFolder"> <!-- "ProgramMenuFolder" / "StartMenuFolder" ? -->
<Directory Id="ProgramMenuDir" Name="Toggle Dark-Light Mode">
<Component Id="ProgramMenuDir" Guid="d21d1240-0a74-4b15-b957-2303c4f0ee15">
<RegistryValue Root="HKCU" Key="SOFTWARE\danielgjackson\Toggle Dark-Light Mode" Type="string" Name="ProgramMenuDir" Value="-" KeyPath="yes" />
<RemoveFolder Id="ProgramMenuDir" On="uninstall" />
</Component>
</Directory>
</Directory>
<!-- Auto-start -->
<Directory Id="Startup" Name="Auto-start">
<Component Id="Autostart" Guid="2de766f7-9ca5-4649-979a-237920a3ac8b">
<RegistryValue Id="AutostartReg" Root="HKCU" Action="write" Key="Software\Microsoft\Windows\CurrentVersion\Run" Type="string" Name="Toggle Dark-Light Mode" Value="&quot;[INSTALLDIR]toggle.exe&quot; /AUTOSTART" />
<Condition>START_FROM_REGISTRY</Condition>
</Component>
</Directory>
</Directory>


<!-- Auto-start -->
<Property Id="START_FROM_REGISTRY">1</Property>
<Property Id="START_FROM_REGISTRY" Value="1" />

<!-- Close process -->
<InstallExecuteSequence>
<Custom Action="WixCloseApplications" Before="InstallValidate">Installed</Custom>
<!-- <RemoveExistingProducts After="InstallInitialize" /> -->
</InstallExecuteSequence>
<util:CloseApplication Id="CloseMonitor" Target="toggle.exe" CloseMessage="yes" RebootPrompt="no">
Installed
</util:CloseApplication>
<util:CloseApplication Id="CloseToggle" Target="toggle.exe" CloseMessage="yes" RebootPrompt="no" Condition="Installed" />

<!-- Run on exit -->
<Property Id="WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT" Value="Launch Toggle Dark-Light Mode" />
<Property Id="WIXUI_EXITDIALOGOPTIONALCHECKBOX" Value="1" />
<Property Id="WixShellExecTarget" Value="[#toggleEXE]" />
<CustomAction Id="LaunchApplication" BinaryKey="WixCA" DllEntry="WixShellExec" Impersonate="yes" />
<CustomAction Id="LaunchApplication" DllEntry="WixShellExec" Impersonate="yes" BinaryRef="Wix4UtilCA_X86" />

<UI>
<!-- "WixUI_Minimal" / "WixUI_InstallDir" / "WixUI_Mondo" -->
<UIRef Id="WixUI_Mondo" />
<ui:WixUI Id="WixUI_Mondo" />
<UIRef Id="WixUI_ErrorProgressText" />
<Publish Dialog="ExitDialog" Control="Finish" Event="DoAction" Value="LaunchApplication">WIXUI_EXITDIALOGOPTIONALCHECKBOX = 1 and NOT Installed</Publish>
<Publish Dialog="ExitDialog" Control="Finish" Event="DoAction" Value="LaunchApplication" Condition="WIXUI_EXITDIALOGOPTIONALCHECKBOX = 1 and NOT Installed" />
</UI>

<!-- Icons -->
<Icon Id="toggle.exe" SourceFile="toggle.exe" />

<!-- Main settings -->
<Feature Id="Complete" Level="1" AllowAdvertise="no" Display="expand" Absent="disallow" ConfigurableDirectory="INSTALLDIR" Title="Toggle Dark-Light Mode Application" Description="Toggle Dark-Light Mode application program file (required).">
<Feature Id="Complete" Level="1" AllowAdvertise="no" Display="expand" ConfigurableDirectory="INSTALLDIR" Title="Toggle Dark-Light Mode Application" Description="Toggle Dark-Light Mode application program file (required)." AllowAbsent="no">
<ComponentRef Id="MainExecutable" />
<Feature Id="ProgramShortcut" Level="2" AllowAdvertise="no" Title="Start Menu Shortcut" Description="Start Menu entry to launch Toggle Dark-Light Mode.">
<ComponentRef Id="ProgramMenuDir" />
Expand All @@ -90,5 +53,34 @@
<WixVariable Id="WixUIBannerBmp" Value="bannrbmp.bmp" />
<WixVariable Id="WixUIDialogBmp" Value="dlgbmp.bmp" />
<WixVariable Id="WixUILicenseRtf" Value="LICENSE.rtf" />
</Product>

<!-- Program Files -->
<StandardDirectory Id="LocalAppDataFolder"> <!-- "ProgramFilesFolder" / "AppDataFolder" -->
<Directory Id="INSTALLDIR" Name="Toggle Dark-Light Mode">
<Component Id="MainExecutable" Guid="e1111df2-0c33-4671-9fe2-8f7988a9fe24">
<RegistryValue Root="HKCU" Key="SOFTWARE\danielgjackson\Toggle Dark-Light Mode" Type="string" Name="MainExecutable" Value="-" KeyPath="yes" />
<File Id="toggleEXE" Name="toggle.exe" Source="toggle.exe" Vital="yes"> <!-- KeyPath="yes" -->
<Shortcut Id="startmenuToggle" Directory="ProgramMenuDir" Name="Toggle Dark-Light Mode" WorkingDirectory="INSTALLDIR" Icon="toggle.exe" IconIndex="0" /> <!-- Advertise="yes" -->
</File>
<RemoveFolder Id="INSTALLDIR" On="uninstall" />
</Component>
</Directory>
</StandardDirectory>
<!-- Start Menu -->
<StandardDirectory Id="StartMenuFolder"> <!-- "ProgramMenuFolder" / "StartMenuFolder" ? -->
<Directory Id="ProgramMenuDir" Name="Toggle Dark-Light Mode">
<Component Id="ProgramMenuDir" Guid="d21d1240-0a74-4b15-b957-2303c4f0ee15">
<RegistryValue Root="HKCU" Key="SOFTWARE\danielgjackson\Toggle Dark-Light Mode" Type="string" Name="ProgramMenuDir" Value="-" KeyPath="yes" />
<RemoveFolder Id="ProgramMenuDir" On="uninstall" />
</Component>
</Directory>
</StandardDirectory>
<!-- Auto-start -->
<Directory Id="Startup" Name="Auto-start">
<Component Id="Autostart" Guid="2de766f7-9ca5-4649-979a-237920a3ac8b" Condition="START_FROM_REGISTRY">
<RegistryValue Id="AutostartReg" Root="HKCU" Action="write" Key="Software\Microsoft\Windows\CurrentVersion\Run" Type="string" Name="Toggle Dark-Light Mode" Value="&quot;[INSTALLDIR]toggle.exe&quot; /AUTOSTART" />

</Component>
</Directory>
</Package>
</Wix>

0 comments on commit 86b1f7a

Please sign in to comment.