diff options
Diffstat (limited to 'src/test/burn/WixTestTools/PackageVerifier.cs')
-rw-r--r-- | src/test/burn/WixTestTools/PackageVerifier.cs | 43 |
1 files changed, 33 insertions, 10 deletions
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 | |||
19 | 19 | ||
20 | public string GetInstalledFilePath(string filename) | 20 | public string GetInstalledFilePath(string filename) |
21 | { | 21 | { |
22 | return this.TestContext.GetTestInstallFolder(this.IsX64, Path.Combine(this.GetInstallFolderName(), filename)); | 22 | var fileRow = this.WiData.Tables["File"].Rows.Single(r => r.FieldAsString(2).Contains(filename)); |
23 | } | 23 | var componentRow = this.WiData.Tables["Component"].Rows.Single(r => r.FieldAsString(0) == fileRow.FieldAsString(1)); |
24 | var directoryId = componentRow.FieldAsString(2); | ||
25 | var path = filename; | ||
24 | 26 | ||
25 | public string GetInstallFolderName() | 27 | while (directoryId != null) |
26 | { | ||
27 | var row = this.WiData.Tables["Directory"].Rows.Single(r => r.FieldAsString(0) == "INSTALLFOLDER"); | ||
28 | var value = row.FieldAsString(2); | ||
29 | var longNameIndex = value.IndexOf('|') + 1; | ||
30 | if (longNameIndex > 0) | ||
31 | { | 28 | { |
32 | return value.Substring(longNameIndex); | 29 | string directoryName; |
30 | |||
31 | if (directoryId == "ProgramFiles6432Folder") | ||
32 | { | ||
33 | var baseDirectory = this.IsX64 ? Environment.SpecialFolder.ProgramFiles : Environment.SpecialFolder.ProgramFilesX86; | ||
34 | directoryName = Environment.GetFolderPath(baseDirectory); | ||
35 | |||
36 | directoryId = null; | ||
37 | } | ||
38 | else if (directoryId == "LocalAppDataFolder") | ||
39 | { | ||
40 | directoryName = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData); | ||
41 | |||
42 | directoryId = null; | ||
43 | } | ||
44 | else | ||
45 | { | ||
46 | var directoryRow = this.WiData.Tables["Directory"].Rows.Single(r => r.FieldAsString(0) == directoryId); | ||
47 | var value = directoryRow.FieldAsString(2); | ||
48 | var longNameIndex = value.IndexOf('|') + 1; | ||
49 | directoryName = longNameIndex > 0 ? value.Substring(longNameIndex) : value; | ||
50 | |||
51 | directoryId = directoryRow.FieldAsString(1); | ||
52 | } | ||
53 | |||
54 | path = Path.Combine(directoryName, path); | ||
33 | } | 55 | } |
34 | return value; | 56 | |
57 | return path; | ||
35 | } | 58 | } |
36 | 59 | ||
37 | public string GetProperty(string name) | 60 | public string GetProperty(string name) |