diff --git a/Installer/VirtualPrinter.WixSharpInstaller/Script.cs b/Installer/VirtualPrinter.WixSharpInstaller/Script.cs index d8ce3bd..5a0147c 100644 --- a/Installer/VirtualPrinter.WixSharpInstaller/Script.cs +++ b/Installer/VirtualPrinter.WixSharpInstaller/Script.cs @@ -4,9 +4,10 @@ using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; - +using System.Windows.Forms; using JetBrains.Annotations; - +using Microsoft.Deployment.WindowsInstaller; +using Microsoft.Win32; using VirtualPrinter.Utils; using WixSharp; @@ -14,6 +15,7 @@ using WixSharp; using Action = WixSharp.Action; using File = WixSharp.File; using Files = VirtualPrinter.Utils.Files; +using Keys = VirtualPrinter.Utils.Keys; using RegistryHive = WixSharp.RegistryHive; namespace VirtualPrinter.WixSharpInstaller @@ -72,9 +74,43 @@ namespace VirtualPrinter.WixSharpInstaller InstallPrivileges = InstallPrivileges.elevated }; + project.BeforeInstall += ProjectOnBeforeInstall; + project.BuildMsi(); } + private static void ProjectOnBeforeInstall(SetupEventArgs e) + { + const string gsNotFound = "Ghostscript not found!\n" + + "Please install Ghostscript version 9.52 or higher.\n" + + "You can find the installer on the official website:\n" + + "https://www.ghostscript.com/download/gsdnld.html"; + + var registryView = Environment.Is64BitOperatingSystem ? RegistryView.Registry64 : RegistryView.Registry32; + + var gsKey = RegistryKey + .OpenBaseKey(Microsoft.Win32.RegistryHive.LocalMachine, registryView) + .OpenSubKey(@"SOFTWARE\GPL Ghostscript\9.52"); + + if (gsKey == null) + { + MessageBox.Show(gsNotFound); + e.Result = ActionResult.Failure; + return; + } + + var gsAssembly = (string)gsKey.GetValue("GS_DLL"); + + if (System.IO.File.Exists(gsAssembly)) + { + e.Result = ActionResult.Success; + return; + } + + MessageBox.Show("gsNotFound"); + e.Result = ActionResult.Failure; + } + [NotNull, ItemNotNull] private static Dir[] CreateProjectDirs ( diff --git a/Installer/VirtualPrinter.WixSharpInstaller/VirtualPrinter.WixSharpInstaller.csproj b/Installer/VirtualPrinter.WixSharpInstaller/VirtualPrinter.WixSharpInstaller.csproj index 422a157..d63a317 100644 --- a/Installer/VirtualPrinter.WixSharpInstaller/VirtualPrinter.WixSharpInstaller.csproj +++ b/Installer/VirtualPrinter.WixSharpInstaller/VirtualPrinter.WixSharpInstaller.csproj @@ -56,6 +56,9 @@ + + +