aboutsummaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
authorSean Hall <r.sean.hall@gmail.com>2022-06-03 17:48:57 -0500
committerSean Hall <r.sean.hall@gmail.com>2022-06-07 19:44:36 -0500
commit648f370f7966b2738c1446601057d888bbd2c70f (patch)
tree9022566b1016f94127dfb7e84c9b4dfa057993cd /src/test
parent6b0f2d978504da82070523eb6adb0b59f9812e93 (diff)
downloadwix-648f370f7966b2738c1446601057d888bbd2c70f.tar.gz
wix-648f370f7966b2738c1446601057d888bbd2c70f.tar.bz2
wix-648f370f7966b2738c1446601057d888bbd2c70f.zip
Make PathGetSystemPath return an array of paths ordered by preference.
Diffstat (limited to 'src/test')
-rw-r--r--src/test/burn/WixTestTools/BundleVerifier.cs12
-rw-r--r--src/test/burn/WixToolsetTest.BurnE2E/CacheTests.cs68
2 files changed, 78 insertions, 2 deletions
diff --git a/src/test/burn/WixTestTools/BundleVerifier.cs b/src/test/burn/WixTestTools/BundleVerifier.cs
index 594b19aa..103171cd 100644
--- a/src/test/burn/WixTestTools/BundleVerifier.cs
+++ b/src/test/burn/WixTestTools/BundleVerifier.cs
@@ -15,7 +15,8 @@ namespace WixTestTools
15 public partial class BundleInstaller 15 public partial class BundleInstaller
16 { 16 {
17 public const string DependencyRegistryRoot = "Software\\Classes\\Installer\\Dependencies"; 17 public const string DependencyRegistryRoot = "Software\\Classes\\Installer\\Dependencies";
18 public const string FULL_BURN_POLICY_REGISTRY_PATH = "SOFTWARE\\WOW6432Node\\Policies\\WiX\\Burn"; 18 public const string FULL_BURN_POLICY_REGISTRY_PATH = "SOFTWARE\\Policies\\WiX\\Burn";
19 public const string FULL_BURN_POLICY_REGISTRY_PATH_WOW6432NODE = "SOFTWARE\\WOW6432Node\\Policies\\WiX\\Burn";
19 public const string PACKAGE_CACHE_FOLDER_NAME = "Package Cache"; 20 public const string PACKAGE_CACHE_FOLDER_NAME = "Package Cache";
20 21
21 public string BundlePdb { get; } 22 public string BundlePdb { get; }
@@ -35,12 +36,19 @@ namespace WixTestTools
35 return this.BundleSymbol; 36 return this.BundleSymbol;
36 } 37 }
37 38
39 public string GetFullBurnPolicyRegistryPath()
40 {
41 var bundleSymbol = this.GetBundleSymbol();
42 var x64 = bundleSymbol.Platform != Platform.X86;
43 return x64 ? FULL_BURN_POLICY_REGISTRY_PATH : FULL_BURN_POLICY_REGISTRY_PATH_WOW6432NODE;
44 }
45
38 public string GetPackageCachePathForCacheId(string cacheId, bool perMachine) 46 public string GetPackageCachePathForCacheId(string cacheId, bool perMachine)
39 { 47 {
40 string cachePath; 48 string cachePath;
41 if (perMachine) 49 if (perMachine)
42 { 50 {
43 using var policyKey = Registry.LocalMachine.OpenSubKey(FULL_BURN_POLICY_REGISTRY_PATH); 51 using var policyKey = Registry.LocalMachine.OpenSubKey(this.GetFullBurnPolicyRegistryPath());
44 var redirectedCachePath = policyKey?.GetValue("PackageCache") as string; 52 var redirectedCachePath = policyKey?.GetValue("PackageCache") as string;
45 cachePath = redirectedCachePath ?? Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), PACKAGE_CACHE_FOLDER_NAME); 53 cachePath = redirectedCachePath ?? Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), PACKAGE_CACHE_FOLDER_NAME);
46 } 54 }
diff --git a/src/test/burn/WixToolsetTest.BurnE2E/CacheTests.cs b/src/test/burn/WixToolsetTest.BurnE2E/CacheTests.cs
index 6c8250d9..f5a1cda8 100644
--- a/src/test/burn/WixToolsetTest.BurnE2E/CacheTests.cs
+++ b/src/test/burn/WixToolsetTest.BurnE2E/CacheTests.cs
@@ -5,6 +5,7 @@ namespace WixToolsetTest.BurnE2E
5 using System; 5 using System;
6 using System.Collections.Generic; 6 using System.Collections.Generic;
7 using System.IO; 7 using System.IO;
8 using Microsoft.Win32;
8 using WixBuildTools.TestSupport; 9 using WixBuildTools.TestSupport;
9 using WixTestTools; 10 using WixTestTools;
10 using WixToolset.Mba.Core; 11 using WixToolset.Mba.Core;
@@ -201,5 +202,72 @@ namespace WixToolsetTest.BurnE2E
201 packageB.VerifyInstalled(true); 202 packageB.VerifyInstalled(true);
202 } 203 }
203 } 204 }
205
206 [RuntimeFact]
207 public void CanGetEngineWorkingDirectoryFromCommandLine()
208 {
209 var bundleA = this.CreateBundleInstaller("BundleA");
210 var testBAController = this.CreateTestBAController();
211
212 testBAController.SetImmediatelyQuit();
213
214 using (var dfs = new DisposableFileSystem())
215 {
216 var baseTempPath = dfs.GetFolder(true);
217 var logPath = bundleA.Install(0, $"-burn.engine.working.directory=\"{baseTempPath}\"");
218 LogVerifier.MessageInLogFileRegex(logPath, $"Burn x86 v4.*, Windows v.* \\(Build .*: Service Pack .*\\), path: {baseTempPath.Replace("\\", "\\\\")}\\\\.*\\\\.cr\\\\BundleA.exe");
219 }
220 }
221
222 [RuntimeFact]
223 public void CanGetEngineWorkingDirectoryFromPolicy()
224 {
225 var deletePolicyKey = false;
226 string originalPolicyValue = null;
227
228 var bundleA = this.CreateBundleInstaller("BundleA");
229 var testBAController = this.CreateTestBAController();
230 var policyPath = bundleA.GetFullBurnPolicyRegistryPath();
231
232 testBAController.SetImmediatelyQuit();
233
234 try
235 {
236 using (var dfs = new DisposableFileSystem())
237 {
238 var baseTempPath = dfs.GetFolder(true);
239
240 var policyKey = Registry.LocalMachine.OpenSubKey(policyPath, writable: true);
241 if (policyKey == null)
242 {
243 policyKey = Registry.LocalMachine.CreateSubKey(policyPath, writable: true);
244 deletePolicyKey = true;
245 }
246
247 using (policyKey)
248 {
249 originalPolicyValue = policyKey.GetValue("EngineWorkingDirectory") as string;
250 policyKey.SetValue("EngineWorkingDirectory", baseTempPath);
251 }
252
253 var logPath = bundleA.Install();
254 LogVerifier.MessageInLogFileRegex(logPath, $"Burn x86 v4.*, Windows v.* \\(Build .*: Service Pack .*\\), path: {baseTempPath.Replace("\\", "\\\\")}\\\\.*\\\\.cr\\\\BundleA.exe");
255 }
256 }
257 finally
258 {
259 if (deletePolicyKey)
260 {
261 Registry.LocalMachine.DeleteSubKeyTree(policyPath);
262 }
263 else if (originalPolicyValue != null)
264 {
265 using (var policyKey = Registry.LocalMachine.CreateSubKey(policyPath, writable: true))
266 {
267 policyKey.SetValue("EngineWorkingDirectory", originalPolicyValue);
268 }
269 }
270 }
271 }
204 } 272 }
205} 273}