diff --git a/.github/workflows/build-ilspy.yml b/.github/workflows/build-ilspy.yml index d36ee142c..cf86850ae 100644 --- a/.github/workflows/build-ilspy.yml +++ b/.github/workflows/build-ilspy.yml @@ -46,6 +46,9 @@ jobs: - name: Install dotnet-format run: dotnet tool install -g dotnet-format --version "8.3.546805" --add-source https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet8/nuget/v3/index.json + - name: Install wix (locked version) + run: dotnet tool install --global wix --version 6.0.0 + - name: Get Version id: version shell: pwsh diff --git a/ILSpy.Installer/ILSpy.Installer.csproj b/ILSpy.Installer/ILSpy.Installer.csproj index 266020a76..86580dc8c 100644 --- a/ILSpy.Installer/ILSpy.Installer.csproj +++ b/ILSpy.Installer/ILSpy.Installer.csproj @@ -15,10 +15,21 @@ - - + + + + + + + + + + + + + diff --git a/ILSpy.Installer/README.md b/ILSpy.Installer/README.md index f83b37d2c..ef9ca1b5b 100644 --- a/ILSpy.Installer/README.md +++ b/ILSpy.Installer/README.md @@ -1,5 +1,19 @@ # Building the Installer +## Dependencies + +See https://github.com/oleg-shilo/wixsharp/wiki#dependencies + +``` +dotnet tool install --global wix +``` + +GitHub runners installed software https://github.com/actions/runner-images/blob/main/images/windows/Windows2025-Readme.md at time +of writing WiX Toolset 3.14.1.8722 + + +## ILSpy Binaries + It is mandatory to first publish(.ps1) the respective target platforms, then setup can be built, eg ``` diff --git a/ILSpy.Installer/setup.cs b/ILSpy.Installer/setup.cs index 0bcc418d6..a5c8b9f98 100644 --- a/ILSpy.Installer/setup.cs +++ b/ILSpy.Installer/setup.cs @@ -45,8 +45,7 @@ namespace ILSpy.Installer project.GUID = new Guid("a12fdab1-731b-4a98-9749-d481ce8692ab"); project.Version = AppPackage.Version; project.SourceBaseDir = Path.GetDirectoryName(Environment.CurrentDirectory); - project.InstallScope = InstallScope.perUser; - project.InstallPrivileges = InstallPrivileges.limited; + project.Scope = InstallScope.perUser; project.ControlPanelInfo.ProductIcon = @"..\ILSpy\Images\ILSpy.ico"; project.ControlPanelInfo.Manufacturer = "ICSharpCode Team"; project.LocalizationFile = Path.Combine(Environment.CurrentDirectory, "winui.wxl"); @@ -71,41 +70,7 @@ namespace ILSpy.Installer new FileShortcut("ILSpy", @"%ProgramMenu%") }; - Compiler.WixLocation = GetWixBinLocationForPackage(); Compiler.BuildMsi(project, Path.Combine(Environment.CurrentDirectory, "wix", $"ILSpy-{AppPackage.Version}-{buildPlatform}.msi")); } - - // Copied from https://github.com/oleg-shilo/wixsharp/blob/c4f8615ce8e47c7162edb30656669d0d326f79ff/Source/src/WixSharp/Utilities/WixBinLocator.cs#L117 - private static string GetWixBinLocationForPackage() - { - //The global packages may be redirected with environment variable - //https://docs.microsoft.com/en-us/nuget/consume-packages/managing-the-global-packages-and-cache-folders - - string wixBinPackageDir; - var nugetPackagesEnvironmentVariable = Environment.GetEnvironmentVariable("NUGET_PACKAGES"); - if (nugetPackagesEnvironmentVariable.IsNotEmpty() && Directory.Exists(nugetPackagesEnvironmentVariable)) - { - wixBinPackageDir = Path.Combine(nugetPackagesEnvironmentVariable, "wixsharp.wix.bin"); - } - else - { - wixBinPackageDir = @"%userprofile%\.nuget\packages\wixsharp.wix.bin".ExpandEnvVars(); - } - - if (Directory.Exists(wixBinPackageDir)) - { - Version greatestWixBinVersion = System.IO.Directory.GetDirectories(wixBinPackageDir) - .Select(dirPath => new Version(dirPath.PathGetFileName())) - .OrderDescending() - .FirstOrDefault(); - - if (greatestWixBinVersion != null) - { - return wixBinPackageDir.PathJoin(greatestWixBinVersion.ToString(), @"tools\bin"); - } - } - - return ""; - } } } diff --git a/ILSpy.Installer/winui.wxl b/ILSpy.Installer/winui.wxl index b600ba1ea..79daf4717 100644 --- a/ILSpy.Installer/winui.wxl +++ b/ILSpy.Installer/winui.wxl @@ -1,10 +1,4 @@  - - Click Install to begin the installation. Click Cancel to exit the wizard. - - - ILSpy will be installed for current user into following directory: - - [INSTALLDIR] - + + \ No newline at end of file diff --git a/publishlocaldev.ps1 b/publishlocaldev.ps1 index a8ebda02f..165423c2a 100644 --- a/publishlocaldev.ps1 +++ b/publishlocaldev.ps1 @@ -1,13 +1,13 @@ # For local development of the VSIX package - build and publish (VS2022 also needs arm64) -$output_x64 = "./ILSpy/bin/Debug/net8.0-windows/win-x64/publish/fwdependent" +$output_x64 = "./ILSpy/bin/Release/net8.0-windows/win-x64/publish/fwdependent" -dotnet publish ./ILSpy/ILSpy.csproj -c Debug --no-restore --no-self-contained -r win-x64 -o $output_x64 -dotnet publish ./ILSpy.ReadyToRun/ILSpy.ReadyToRun.csproj -c Debug --no-restore --no-self-contained -r win-x64 -o $output_x64 -dotnet publish ./ILSpy.BamlDecompiler/ILSpy.BamlDecompiler.csproj -c Debug --no-restore --no-self-contained -r win-x64 -o $output_x64 +dotnet publish ./ILSpy/ILSpy.csproj -c Release --no-restore --no-self-contained -r win-x64 -o $output_x64 +dotnet publish ./ILSpy.ReadyToRun/ILSpy.ReadyToRun.csproj -c Release --no-restore --no-self-contained -r win-x64 -o $output_x64 +dotnet publish ./ILSpy.BamlDecompiler/ILSpy.BamlDecompiler.csproj -c Release --no-restore --no-self-contained -r win-x64 -o $output_x64 -$output_arm64 = "./ILSpy/bin/Debug/net8.0-windows/win-arm64/publish/fwdependent" +$output_arm64 = "./ILSpy/bin/Release/net8.0-windows/win-arm64/publish/fwdependent" -dotnet publish ./ILSpy/ILSpy.csproj -c Debug --no-restore --no-self-contained -r win-arm64 -o $output_arm64 -dotnet publish ./ILSpy.ReadyToRun/ILSpy.ReadyToRun.csproj -c Debug --no-restore --no-self-contained -r win-arm64 -o $output_arm64 -dotnet publish ./ILSpy.BamlDecompiler/ILSpy.BamlDecompiler.csproj -c Debug --no-restore --no-self-contained -r win-arm64 -o $output_arm64 \ No newline at end of file +dotnet publish ./ILSpy/ILSpy.csproj -c Release --no-restore --no-self-contained -r win-arm64 -o $output_arm64 +dotnet publish ./ILSpy.ReadyToRun/ILSpy.ReadyToRun.csproj -c Release --no-restore --no-self-contained -r win-arm64 -o $output_arm64 +dotnet publish ./ILSpy.BamlDecompiler/ILSpy.BamlDecompiler.csproj -c Release --no-restore --no-self-contained -r win-arm64 -o $output_arm64 \ No newline at end of file