Skip to content

Commit

Permalink
Add MSI installer using Wix toolset (#3473)
Browse files Browse the repository at this point in the history
  • Loading branch information
pepone authored Feb 3, 2025
1 parent 0f3e5d1 commit b5e35ac
Show file tree
Hide file tree
Showing 8 changed files with 797 additions and 0 deletions.
25 changes: 25 additions & 0 deletions packaging/msi/Ice.sln
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.13.35507.96 d17.13
MinimumVisualStudioVersion = 10.0.40219.1
Project("{B7DD6F7E-DEF8-4E67-B5B7-07EF123DB6F0}") = "Ice", "Ice.wixproj", "{77503B21-AE1E-4F41-8C56-4F000B3F7A0F}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{77503B21-AE1E-4F41-8C56-4F000B3F7A0F}.Debug|x64.ActiveCfg = Debug|x64
{77503B21-AE1E-4F41-8C56-4F000B3F7A0F}.Debug|x64.Build.0 = Debug|x64
{77503B21-AE1E-4F41-8C56-4F000B3F7A0F}.Release|x64.ActiveCfg = Release|x64
{77503B21-AE1E-4F41-8C56-4F000B3F7A0F}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {5D83E53E-EAF7-4384-B194-689984E09E4C}
EndGlobalSection
EndGlobal
10 changes: 10 additions & 0 deletions packaging/msi/Ice.wixproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<Project Sdk="WixToolset.Sdk/5.0.2">
<ItemGroup>
<BindPath Include="$(MBuildThisFileDirectory)..\..\" BindName="SOURCE_ROOT" />
</ItemGroup>

<ItemGroup>
<PackageReference Include="WixToolset.Util.wixext" Version="5.0.2" />
<PackageReference Include="WixToolset.UI.wixext" Version="5.0.2" />
</ItemGroup>
</Project>
111 changes: 111 additions & 0 deletions packaging/msi/Product.wxs
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
<?xml version="1.0" encoding="UTF-8"?>
<Wix
xmlns="http://wixtoolset.org/schemas/v4/wxs"
xmlns:ui="http://wixtoolset.org/schemas/v4/wxs/ui"
xmlns:util="http://wixtoolset.org/schemas/v4/wxs/util">
<Package
Name="Ice 3.8.0"
Manufacturer="ZeroC, Inc."
Version="3.8.0.0"
InstallerVersion="500"
Compressed="yes"
UpgradeCode="DDC28522-EF11-4D6C-9F53-B76DF967C8B2">

<!-- Embed CAB files in MSI -->
<MediaTemplate EmbedCab="yes" />

<!-- Define the product icon -->
<Icon Id="icon.ico" SourceFile="!(bindpath.SOURCE_ROOT)\packaging\msi\resources\product.ico"/>
<Property Id="ARPPRODUCTICON" Value="icon.ico" />

<!-- Use the default WixUI_InstallDir dialog set and personalize the license an images -->
<ui:WixUI Id="WixUI_InstallDir" InstallDirectory="INSTALLFOLDER" />
<WixVariable Id="WixUILicenseRtf" Value="!(bindpath.SOURCE_ROOT)\packaging\msi\docs\LICENSE.rtf"/>
<WixVariable Id="WixUIBannerBmp" Value="!(bindpath.SOURCE_ROOT)\packaging\msi\resources\banner.jpg"/>
<WixVariable Id="WixUIDialogBmp" Value="!(bindpath.SOURCE_ROOT)\packaging\msi\resources\dialog.jpg"/>

<!-- Define the directory structure -->
<StandardDirectory Id="ProgramFiles64Folder">
<Directory Id="INSTALLFOLDER" Name="ZeroC\Ice-3.8.0">
<Directory Id="BinFolder" Name="bin"/>
<Directory Id="SliceFolder" Name="slice"/>
<Directory Id="ConfigFolder" Name="config"/></Directory>
</StandardDirectory>
<StandardDirectory Id="ProgramMenuFolder">
<Directory Id="IceStartMenu" Name="Ice 3.8.0"/>
</StandardDirectory>

<!-- Define the components that install the require files -->
<ComponentGroup Id="ProductComponents">
<!-- Binary files from the x64 Release build -->
<Files Include="!(bindpath.SOURCE_ROOT)\cpp\bin\x64\Release\**" Directory="BinFolder"/>

<!-- The IceGrid GUI jar -->
<File Source="!(bindpath.SOURCE_ROOT)\java\lib\icegridgui.jar" Directory="BinFolder" />

<!-- Slice Files-->
<Files Include="!(bindpath.SOURCE_ROOT)\slice\**" Directory="SliceFolder"/>

<!-- Config Files -->
<Files Include="!(bindpath.SOURCE_ROOT)\cpp\config\*.cfg" Directory="ConfigFolder"/>
<Files Include="!(bindpath.SOURCE_ROOT)\cpp\config\templates.xml" Directory="ConfigFolder"/>

<!-- License Files -->
<File Id="License" Source="!(bindpath.SOURCE_ROOT)\LICENSE" Name="LICENSE.txt" />
<File Id="IceLicense" Source="!(bindpath.SOURCE_ROOT)\ICE_LICENSE" Name="ICE_LICENSE.txt" />
<File Id="ThirdPartyLicense" Source="!(bindpath.SOURCE_ROOT)\packaging\msi\docs\THIRD_PARTY_LICENSE.txt" />
</ComponentGroup>

<!-- Define the components that install the start menu shortcuts -->
<ComponentGroup Id="StartMenuComponents">
<Component
Id="IceStartMenuShortcuts"
Directory="IceStartMenu"
Guid="618E2B68-1829-478A-AB46-47D65887F351">
<util:InternetShortcut
Id="ManualLink"
Name="Ice Manual"
Type="url"
Target="https://doc.zeroc.com/ice/3.8/" />
<util:InternetShortcut
Id="SampleProgramsLink"
Name="Ice Sample Programs"
Type="url"
Target="https://github.com/zeroc-ice/ice-demos/tree/v3.8.0" />
<util:InternetShortcut
Id="ReleaseNotesLink"
Name="Release Notes"
Type="url"
Target="https://doc.zeroc.com/rel/ice-releases/ice-3-8/ice-3-8-0-release-notes" />
<util:InternetShortcut
Id="SourceCodeLink"
Name="Source Code on Github"
Type="url"
Target="https://github.com/zeroc-ice/ice/tree/v3.8.0" />
<util:InternetShortcut
Id="UsingBinDistLink"
Name="Using this Binary Distribution"
Type="url"
Target="https://doc.zeroc.com/rel/ice-releases/ice-3-8/ice-3-8-0-release-notes/using-the-windows-binary-distributions-for-ice-3-8-0" />
<Shortcut
Id="IceGridGUIShortcut"
Name="IceGrid GUI"
Target="[BinFolder]icegridgui.jar"
WorkingDirectory="BinFolder"
Icon="IceGridGUIIcon"
Advertise="no"/>
<RegistryValue Root="HKCU" Key="ZeroC\Ice-3.8.0\Installed" Value="1" Type="string" KeyPath="yes" />
<RemoveFolder Id="IceStartMenu" On="uninstall"/>
</Component>
</ComponentGroup>

<!-- Define the IceGrid GUI icon -->
<Icon Id="IceGridGUIIcon" SourceFile="!(bindpath.SOURCE_ROOT)\java\src\IceGridGUI\src\main\resources\icons\icegrid.ico" />

<!-- Add components to the MainFeature -->
<Feature Id="MainFeature" Title="Ice" Level="1">
<ComponentGroupRef Id="ProductComponents" />
<ComponentGroupRef Id="StartMenuComponents"/>
</Feature>
</Package>
</Wix>
Loading

0 comments on commit b5e35ac

Please sign in to comment.