From bbbaf9d63500a0d43c3952721f28a00875a30aad Mon Sep 17 00:00:00 2001 From: wcheng-msft <45372824+wcheng-msft@users.noreply.github.com> Date: Tue, 13 Aug 2019 16:59:35 -0700 Subject: [PATCH] Wix setup project (#198) * in progress, tryng to figure out how to best handle different error modes * Revert "in progress, tryng to figure out how to best handle different error modes" This reverts commit e9ab631ba32e0d23bff547fa06a78e4e84d2d977. * playing around with trying to get full ui (instead of basic ui) when double clicked from ARP * Progress so far on getting the full UX to show up on uninstall through ARP. * mostly working, may need to tweak UI locations/wordings * Rename things and add comments * remove bad indentation in product.wxs --- .../GetMsixmgrProductsCA/CustomAction.config | 32 ++++ .../GetMsixmgrProducts.cs | 73 +++++++++ .../GetMsixmgrProducts.csproj | 54 +++++++ .../Properties/AssemblyInfo.cs | 35 +++++ .../MsixCore/MsixMgrWix/MsixMgrWix.wixproj | 53 +++++++ preview/MsixCore/MsixMgrWix/Product.wxs | 147 ++++++++++++++++++ preview/MsixCore/MsixMgrWix/msixicon.ico | Bin 0 -> 27612 bytes preview/MsixCore/msixmgr.sln | 16 ++ 8 files changed, 410 insertions(+) create mode 100644 preview/MsixCore/GetMsixmgrProductsCA/CustomAction.config create mode 100644 preview/MsixCore/GetMsixmgrProductsCA/GetMsixmgrProducts.cs create mode 100644 preview/MsixCore/GetMsixmgrProductsCA/GetMsixmgrProducts.csproj create mode 100644 preview/MsixCore/GetMsixmgrProductsCA/Properties/AssemblyInfo.cs create mode 100644 preview/MsixCore/MsixMgrWix/MsixMgrWix.wixproj create mode 100644 preview/MsixCore/MsixMgrWix/Product.wxs create mode 100644 preview/MsixCore/MsixMgrWix/msixicon.ico diff --git a/preview/MsixCore/GetMsixmgrProductsCA/CustomAction.config b/preview/MsixCore/GetMsixmgrProductsCA/CustomAction.config new file mode 100644 index 00000000..c837a2ce --- /dev/null +++ b/preview/MsixCore/GetMsixmgrProductsCA/CustomAction.config @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + diff --git a/preview/MsixCore/GetMsixmgrProductsCA/GetMsixmgrProducts.cs b/preview/MsixCore/GetMsixmgrProductsCA/GetMsixmgrProducts.cs new file mode 100644 index 00000000..f4601006 --- /dev/null +++ b/preview/MsixCore/GetMsixmgrProductsCA/GetMsixmgrProducts.cs @@ -0,0 +1,73 @@ +using System; +using System.Collections.Generic; +using System.Text; +using Microsoft.Deployment.WindowsInstaller; +using Microsoft.Win32; + +namespace GetMsixmgrProducts +{ + public class CustomActions + { + [CustomAction] + public static ActionResult GetMsixmgrProducts(Session session) + { + session.Log("Begin GetMsixmgrProducts"); + + // Determine all the MSIX packages installed by the msixmgr installed to this location. + // It could be possible other MSIX packages are installed using msixmgrLib or clickonce msixmgr. + // So, we check the Uninstall key specifically for the install location this uninstall would uninstall + // instead of using msixmgr to enumerate products + String msixmgrInstalledProducts = ""; + session.Log(session["INSTALLFOLDER"]); + + using (RegistryKey hklm64 = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64)) + { + using (RegistryKey uninstallKey = hklm64.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall", false)) + { + if (uninstallKey != null) + { + foreach (String uninstallKeyName in uninstallKey.GetSubKeyNames()) + { + session.Log("Uninstallkeyname " + uninstallKeyName); + using (RegistryKey productKey = uninstallKey.OpenSubKey(uninstallKeyName, false)) + { + if (productKey != null) + { + String uninstallString = (String)productKey.GetValue("UninstallString", ""); + + if (uninstallString.Length > 0) + { + session.Log("UninstallString " + uninstallString); + if (uninstallString.Contains(session["INSTALLFOLDER"])) + { + // found a product, add the displayName to our string to return + String displayName = (String)productKey.GetValue("DisplayName", uninstallKeyName); + + if (msixmgrInstalledProducts.Length > 0) + { + msixmgrInstalledProducts += " "; + } + msixmgrInstalledProducts += displayName; + } + } + } + } + } + } + } + } + + session.Log("Products found: " + msixmgrInstalledProducts); + if (msixmgrInstalledProducts.Length > 0) + { + session["MSIXMGR_PRODUCTS"] = msixmgrInstalledProducts; + } + else + { + session["WixUI_InstallMode"] = "Remove"; + } + + return ActionResult.Success; + } + } +} diff --git a/preview/MsixCore/GetMsixmgrProductsCA/GetMsixmgrProducts.csproj b/preview/MsixCore/GetMsixmgrProductsCA/GetMsixmgrProducts.csproj new file mode 100644 index 00000000..4699fc4e --- /dev/null +++ b/preview/MsixCore/GetMsixmgrProductsCA/GetMsixmgrProducts.csproj @@ -0,0 +1,54 @@ + + + + Debug + x86 + 8.0.30703 + 2.0 + {048748AB-B84C-4CEC-A468-3F6914953A3D} + Library + Properties + GetMsixmgrProducts + GetMsixmgrProducts + v4.7.2 + 512 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + True + + + + + + + + + + + + + + \ No newline at end of file diff --git a/preview/MsixCore/GetMsixmgrProductsCA/Properties/AssemblyInfo.cs b/preview/MsixCore/GetMsixmgrProductsCA/Properties/AssemblyInfo.cs new file mode 100644 index 00000000..4bc2f9cd --- /dev/null +++ b/preview/MsixCore/GetMsixmgrProductsCA/Properties/AssemblyInfo.cs @@ -0,0 +1,35 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("GetMsixmgrProducts")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyCompany("Microsoft")] +[assembly: AssemblyProduct("GetMsixmgrProducts")] +[assembly: AssemblyCopyright("Copyright © 2019")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("048748ab-b84c-4cec-a468-3f6914953a3d")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/preview/MsixCore/MsixMgrWix/MsixMgrWix.wixproj b/preview/MsixCore/MsixMgrWix/MsixMgrWix.wixproj new file mode 100644 index 00000000..26a409eb --- /dev/null +++ b/preview/MsixCore/MsixMgrWix/MsixMgrWix.wixproj @@ -0,0 +1,53 @@ + + + + Debug + x86 + 3.10 + ce395dc5-a1d0-4a35-8699-fc57a84ccf48 + 2.0 + MsixMgrSetup + Package + + + bin\$(Configuration)\ + obj\$(Configuration)\ + Debug + + + bin\$(Configuration)\ + obj\$(Configuration)\ + + + + + + + msixmgr + {aad31763-5e65-47fd-958a-08e35ab83025} + True + True + Binaries;Content;Satellites + INSTALLFOLDER + + + + + $(WixExtDir)\WixUIExtension.dll + WixUIExtension + + + + + + + + + \ No newline at end of file diff --git a/preview/MsixCore/MsixMgrWix/Product.wxs b/preview/MsixCore/MsixMgrWix/Product.wxs new file mode 100644 index 00000000..62b0210a --- /dev/null +++ b/preview/MsixCore/MsixMgrWix/Product.wxs @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + Installed AND NOT RESUME AND NOT Preselected AND NOT PATCH + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + 1 + + + + + + + + + Installed AND NOT RESUME AND NOT Preselected AND NOT PATCH AND MSIXMGR_PRODUCTS + Installed AND NOT RESUME AND NOT Preselected AND NOT PATCH AND NOT MSIXMGR_PRODUCTS + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + "1"]]> + + 1 + + NOT Installed + Installed AND PATCH + + 1 + 1 + NOT WIXUI_DONTVALIDATEPATH + "1"]]> + WIXUI_DONTVALIDATEPATH OR WIXUI_INSTALLDIR_VALID="1" + 1 + 1 + + NOT Installed + Installed AND NOT PATCH + Installed AND PATCH + + 1 + + + + + + + + + + + + + + + + diff --git a/preview/MsixCore/MsixMgrWix/msixicon.ico b/preview/MsixCore/MsixMgrWix/msixicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..84a7825425b6e42e07d6882bc75af329d86dc192 GIT binary patch literal 27612 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 literal 0 HcmV?d00001 diff --git a/preview/MsixCore/msixmgr.sln b/preview/MsixCore/msixmgr.sln index 152a26ef..fd5460ff 100644 --- a/preview/MsixCore/msixmgr.sln +++ b/preview/MsixCore/msixmgr.sln @@ -16,6 +16,10 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution .editorconfig = .editorconfig EndProjectSection EndProject +Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "MsixMgrWix", "MsixMgrWix\MsixMgrWix.wixproj", "{CE395DC5-A1D0-4A35-8699-FC57A84CCF48}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GetMsixmgrProducts", "GetMsixmgrProductsCA\GetMsixmgrProducts.csproj", "{048748AB-B84C-4CEC-A468-3F6914953A3D}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|x64 = Debug|x64 @@ -48,6 +52,18 @@ Global {46BE19BD-72E0-4452-9919-33A1F8A5F064}.Release|x64.Build.0 = Release|x64 {46BE19BD-72E0-4452-9919-33A1F8A5F064}.Release|x86.ActiveCfg = Release|Win32 {46BE19BD-72E0-4452-9919-33A1F8A5F064}.Release|x86.Build.0 = Release|Win32 + {CE395DC5-A1D0-4A35-8699-FC57A84CCF48}.Debug|x64.ActiveCfg = Debug|x86 + {CE395DC5-A1D0-4A35-8699-FC57A84CCF48}.Debug|x86.ActiveCfg = Debug|x86 + {CE395DC5-A1D0-4A35-8699-FC57A84CCF48}.Debug|x86.Build.0 = Debug|x86 + {CE395DC5-A1D0-4A35-8699-FC57A84CCF48}.Release|x64.ActiveCfg = Release|x86 + {CE395DC5-A1D0-4A35-8699-FC57A84CCF48}.Release|x86.ActiveCfg = Release|x86 + {CE395DC5-A1D0-4A35-8699-FC57A84CCF48}.Release|x86.Build.0 = Release|x86 + {048748AB-B84C-4CEC-A468-3F6914953A3D}.Debug|x64.ActiveCfg = Debug|x86 + {048748AB-B84C-4CEC-A468-3F6914953A3D}.Debug|x86.ActiveCfg = Debug|x86 + {048748AB-B84C-4CEC-A468-3F6914953A3D}.Debug|x86.Build.0 = Debug|x86 + {048748AB-B84C-4CEC-A468-3F6914953A3D}.Release|x64.ActiveCfg = Release|x86 + {048748AB-B84C-4CEC-A468-3F6914953A3D}.Release|x86.ActiveCfg = Release|x86 + {048748AB-B84C-4CEC-A468-3F6914953A3D}.Release|x86.Build.0 = Release|x86 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE