From d97c0d1685ef4c3840776327e76ce25d4dbdbeb1 Mon Sep 17 00:00:00 2001 From: Sean Hall Date: Wed, 30 Mar 2022 17:07:12 -0500 Subject: Update PackageVerifier to calculate installed path of file. Fixes 6676 --- src/test/burn/WixTestTools/PackageVerifier.cs | 43 +++++++++++++++++----- .../BasicFunctionalityTests.cs | 12 ++++-- 2 files changed, 41 insertions(+), 14 deletions(-) (limited to 'src/test') diff --git a/src/test/burn/WixTestTools/PackageVerifier.cs b/src/test/burn/WixTestTools/PackageVerifier.cs index 2f42dd21..fd8378e0 100644 --- a/src/test/burn/WixTestTools/PackageVerifier.cs +++ b/src/test/burn/WixTestTools/PackageVerifier.cs @@ -19,19 +19,42 @@ namespace WixTestTools public string GetInstalledFilePath(string filename) { - return this.TestContext.GetTestInstallFolder(this.IsX64, Path.Combine(this.GetInstallFolderName(), filename)); - } + var fileRow = this.WiData.Tables["File"].Rows.Single(r => r.FieldAsString(2).Contains(filename)); + var componentRow = this.WiData.Tables["Component"].Rows.Single(r => r.FieldAsString(0) == fileRow.FieldAsString(1)); + var directoryId = componentRow.FieldAsString(2); + var path = filename; - public string GetInstallFolderName() - { - var row = this.WiData.Tables["Directory"].Rows.Single(r => r.FieldAsString(0) == "INSTALLFOLDER"); - var value = row.FieldAsString(2); - var longNameIndex = value.IndexOf('|') + 1; - if (longNameIndex > 0) + while (directoryId != null) { - return value.Substring(longNameIndex); + string directoryName; + + if (directoryId == "ProgramFiles6432Folder") + { + var baseDirectory = this.IsX64 ? Environment.SpecialFolder.ProgramFiles : Environment.SpecialFolder.ProgramFilesX86; + directoryName = Environment.GetFolderPath(baseDirectory); + + directoryId = null; + } + else if (directoryId == "LocalAppDataFolder") + { + directoryName = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData); + + directoryId = null; + } + else + { + var directoryRow = this.WiData.Tables["Directory"].Rows.Single(r => r.FieldAsString(0) == directoryId); + var value = directoryRow.FieldAsString(2); + var longNameIndex = value.IndexOf('|') + 1; + directoryName = longNameIndex > 0 ? value.Substring(longNameIndex) : value; + + directoryId = directoryRow.FieldAsString(1); + } + + path = Path.Combine(directoryName, path); } - return value; + + return path; } public string GetProperty(string name) diff --git a/src/test/burn/WixToolsetTest.BurnE2E/BasicFunctionalityTests.cs b/src/test/burn/WixToolsetTest.BurnE2E/BasicFunctionalityTests.cs index b3b06995..89c5be9b 100644 --- a/src/test/burn/WixToolsetTest.BurnE2E/BasicFunctionalityTests.cs +++ b/src/test/burn/WixToolsetTest.BurnE2E/BasicFunctionalityTests.cs @@ -41,10 +41,14 @@ namespace WixToolsetTest.BurnE2E this.CanInstallAndUninstallSimpleBundle("PackageA_x64", "BundleA_x64"); } - [Fact(Skip = "Need to update assertions for per-user-ness.")] +#if DEBUG + [Fact(Skip = "0xc0000005 during shutdown from tiptsf.dll")] +#else + [Fact] +#endif public void CanInstallAndUninstallSimplePerUserBundle_x64_wixstdba() { - this.CanInstallAndUninstallSimpleBundle("PackageApu_x64", "BundleApu_x64"); + this.CanInstallAndUninstallSimpleBundle("PackageApu_x64", "BundleApu_x64", "PackagePerUser.wxs"); } [Fact] @@ -65,13 +69,13 @@ namespace WixToolsetTest.BurnE2E this.CanInstallAndUninstallSimpleBundle("PackageA_x64", "BundleD_x64"); } - private void CanInstallAndUninstallSimpleBundle(string packageName, string bundleName) + private void CanInstallAndUninstallSimpleBundle(string packageName, string bundleName, string fileName = "Package.wxs") { var package = this.CreatePackageInstaller(packageName); var bundle = this.CreateBundleInstaller(bundleName); - var packageSourceCodeInstalled = package.GetInstalledFilePath("Package.wxs"); + var packageSourceCodeInstalled = package.GetInstalledFilePath(fileName); // Source file should *not* be installed Assert.False(File.Exists(packageSourceCodeInstalled), $"{packageName} payload should not be there on test start: {packageSourceCodeInstalled}"); -- cgit v1.2.3-55-g6feb