diff options
Diffstat (limited to 'src/test/WixToolsetTest.CoreIntegration/MsiQueryFixture.cs')
| -rw-r--r-- | src/test/WixToolsetTest.CoreIntegration/MsiQueryFixture.cs | 1040 |
1 files changed, 0 insertions, 1040 deletions
diff --git a/src/test/WixToolsetTest.CoreIntegration/MsiQueryFixture.cs b/src/test/WixToolsetTest.CoreIntegration/MsiQueryFixture.cs deleted file mode 100644 index 71edddc6..00000000 --- a/src/test/WixToolsetTest.CoreIntegration/MsiQueryFixture.cs +++ /dev/null | |||
| @@ -1,1040 +0,0 @@ | |||
| 1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
| 2 | |||
| 3 | namespace WixToolsetTest.CoreIntegration | ||
| 4 | { | ||
| 5 | using System; | ||
| 6 | using System.IO; | ||
| 7 | using System.Linq; | ||
| 8 | using Example.Extension; | ||
| 9 | using WixBuildTools.TestSupport; | ||
| 10 | using WixToolset.Core.TestPackage; | ||
| 11 | using WixToolset.Data; | ||
| 12 | using WixToolset.Data.Symbols; | ||
| 13 | using WixToolset.Data.WindowsInstaller; | ||
| 14 | using Xunit; | ||
| 15 | |||
| 16 | public class MsiQueryFixture | ||
| 17 | { | ||
| 18 | [Fact] | ||
| 19 | public void PopulatesAppIdTableWhenAdvertised() | ||
| 20 | { | ||
| 21 | var folder = TestData.Get(@"TestData"); | ||
| 22 | |||
| 23 | using (var fs = new DisposableFileSystem()) | ||
| 24 | { | ||
| 25 | var baseFolder = fs.GetFolder(); | ||
| 26 | var intermediateFolder = Path.Combine(baseFolder, "obj"); | ||
| 27 | var msiPath = Path.Combine(baseFolder, @"bin\test.msi"); | ||
| 28 | |||
| 29 | var result = WixRunner.Execute(new[] | ||
| 30 | { | ||
| 31 | "build", | ||
| 32 | Path.Combine(folder, "AppId", "Advertised.wxs"), | ||
| 33 | Path.Combine(folder, "ProductWithComponentGroupRef", "MinimalComponentGroup.wxs"), | ||
| 34 | Path.Combine(folder, "ProductWithComponentGroupRef", "Product.wxs"), | ||
| 35 | "-bindpath", Path.Combine(folder, "SingleFile", "data"), | ||
| 36 | "-intermediateFolder", intermediateFolder, | ||
| 37 | "-o", msiPath | ||
| 38 | }); | ||
| 39 | |||
| 40 | result.AssertSuccess(); | ||
| 41 | |||
| 42 | Assert.True(File.Exists(msiPath)); | ||
| 43 | var results = Query.QueryDatabase(msiPath, new[] { "AppId" }); | ||
| 44 | WixAssert.CompareLineByLine(new[] | ||
| 45 | { | ||
| 46 | "AppId:{D6040299-B15C-4C94-AE26-0C9B60D14C35}\t\t\t\t\t\t", | ||
| 47 | }, results); | ||
| 48 | } | ||
| 49 | } | ||
| 50 | |||
| 51 | [Fact] | ||
| 52 | public void PopulatesAppSearchTablesFromComponentSearch() | ||
| 53 | { | ||
| 54 | var folder = TestData.Get(@"TestData"); | ||
| 55 | |||
| 56 | using (var fs = new DisposableFileSystem()) | ||
| 57 | { | ||
| 58 | var baseFolder = fs.GetFolder(); | ||
| 59 | var intermediateFolder = Path.Combine(baseFolder, "obj"); | ||
| 60 | var msiPath = Path.Combine(baseFolder, @"bin\test.msi"); | ||
| 61 | |||
| 62 | var result = WixRunner.Execute(new[] | ||
| 63 | { | ||
| 64 | "build", | ||
| 65 | Path.Combine(folder, "AppSearch", "ComponentSearch.wxs"), | ||
| 66 | Path.Combine(folder, "ProductWithComponentGroupRef", "MinimalComponentGroup.wxs"), | ||
| 67 | Path.Combine(folder, "ProductWithComponentGroupRef", "Product.wxs"), | ||
| 68 | "-bindpath", Path.Combine(folder, "SingleFile", "data"), | ||
| 69 | "-intermediateFolder", intermediateFolder, | ||
| 70 | "-o", msiPath | ||
| 71 | }); | ||
| 72 | |||
| 73 | result.AssertSuccess(); | ||
| 74 | |||
| 75 | Assert.True(File.Exists(msiPath)); | ||
| 76 | var results = Query.QueryDatabase(msiPath, new[] { "AppSearch", "CompLocator" }); | ||
| 77 | WixAssert.CompareLineByLine(new[] | ||
| 78 | { | ||
| 79 | "AppSearch:SAMPLECOMPFOUND\tSampleCompSearch", | ||
| 80 | "CompLocator:SampleCompSearch\t{4D9A0D20-D0CC-40DE-B580-EAD38B985217}\t1", | ||
| 81 | }, results); | ||
| 82 | } | ||
| 83 | } | ||
| 84 | |||
| 85 | [Fact] | ||
| 86 | public void PopulatesAppSearchTablesFromDirectorySearch() | ||
| 87 | { | ||
| 88 | var folder = TestData.Get(@"TestData"); | ||
| 89 | |||
| 90 | using (var fs = new DisposableFileSystem()) | ||
| 91 | { | ||
| 92 | var baseFolder = fs.GetFolder(); | ||
| 93 | var intermediateFolder = Path.Combine(baseFolder, "obj"); | ||
| 94 | var msiPath = Path.Combine(baseFolder, @"bin\test.msi"); | ||
| 95 | |||
| 96 | var result = WixRunner.Execute(new[] | ||
| 97 | { | ||
| 98 | "build", | ||
| 99 | Path.Combine(folder, "AppSearch", "DirectorySearch.wxs"), | ||
| 100 | Path.Combine(folder, "ProductWithComponentGroupRef", "MinimalComponentGroup.wxs"), | ||
| 101 | Path.Combine(folder, "ProductWithComponentGroupRef", "Product.wxs"), | ||
| 102 | "-bindpath", Path.Combine(folder, "SingleFile", "data"), | ||
| 103 | "-intermediateFolder", intermediateFolder, | ||
| 104 | "-o", msiPath | ||
| 105 | }); | ||
| 106 | |||
| 107 | result.AssertSuccess(); | ||
| 108 | |||
| 109 | Assert.True(File.Exists(msiPath)); | ||
| 110 | var results = Query.QueryDatabase(msiPath, new[] { "AppSearch", "DrLocator" }); | ||
| 111 | WixAssert.CompareLineByLine(new[] | ||
| 112 | { | ||
| 113 | "AppSearch:SAMPLEDIRFOUND\tSampleDirSearch", | ||
| 114 | "DrLocator:SampleDirSearch\t\tC:\\SampleDir\t", | ||
| 115 | }, results); | ||
| 116 | } | ||
| 117 | } | ||
| 118 | |||
| 119 | [Fact] | ||
| 120 | public void PopulatesAppSearchTablesFromFileSearch() | ||
| 121 | { | ||
| 122 | var folder = TestData.Get(@"TestData"); | ||
| 123 | |||
| 124 | using (var fs = new DisposableFileSystem()) | ||
| 125 | { | ||
| 126 | var baseFolder = fs.GetFolder(); | ||
| 127 | var intermediateFolder = Path.Combine(baseFolder, "obj"); | ||
| 128 | var msiPath = Path.Combine(baseFolder, @"bin\test.msi"); | ||
| 129 | |||
| 130 | var result = WixRunner.Execute(new[] | ||
| 131 | { | ||
| 132 | "build", | ||
| 133 | Path.Combine(folder, "AppSearch", "FileSearch.wxs"), | ||
| 134 | Path.Combine(folder, "ProductWithComponentGroupRef", "MinimalComponentGroup.wxs"), | ||
| 135 | Path.Combine(folder, "ProductWithComponentGroupRef", "Product.wxs"), | ||
| 136 | "-bindpath", Path.Combine(folder, "SingleFile", "data"), | ||
| 137 | "-intermediateFolder", intermediateFolder, | ||
| 138 | "-o", msiPath | ||
| 139 | }); | ||
| 140 | |||
| 141 | result.AssertSuccess(); | ||
| 142 | |||
| 143 | Assert.True(File.Exists(msiPath)); | ||
| 144 | var results = Query.QueryDatabase(msiPath, new[] { "AppSearch", "DrLocator", "IniLocator" }); | ||
| 145 | WixAssert.CompareLineByLine(new[] | ||
| 146 | { | ||
| 147 | "AppSearch:SAMPLEFILEFOUND\tSampleFileSearch", | ||
| 148 | "DrLocator:SampleFileSearch\tSampleIniFileSearch\t\t", | ||
| 149 | "IniLocator:SampleFileSearch\tsample.fil\tMySection\tMyKey\t\t1", | ||
| 150 | }, results); | ||
| 151 | } | ||
| 152 | } | ||
| 153 | |||
| 154 | [Fact] | ||
| 155 | public void PopulatesAppSearchTablesFromRegistrySearch() | ||
| 156 | { | ||
| 157 | var folder = TestData.Get(@"TestData"); | ||
| 158 | |||
| 159 | using (var fs = new DisposableFileSystem()) | ||
| 160 | { | ||
| 161 | var baseFolder = fs.GetFolder(); | ||
| 162 | var intermediateFolder = Path.Combine(baseFolder, "obj"); | ||
| 163 | var msiPath = Path.Combine(baseFolder, @"bin\test.msi"); | ||
| 164 | |||
| 165 | var result = WixRunner.Execute(new[] | ||
| 166 | { | ||
| 167 | "build", | ||
| 168 | Path.Combine(folder, "AppSearch", "RegistrySearch.wxs"), | ||
| 169 | Path.Combine(folder, "ProductWithComponentGroupRef", "MinimalComponentGroup.wxs"), | ||
| 170 | Path.Combine(folder, "ProductWithComponentGroupRef", "Product.wxs"), | ||
| 171 | "-bindpath", Path.Combine(folder, "SingleFile", "data"), | ||
| 172 | "-intermediateFolder", intermediateFolder, | ||
| 173 | "-o", msiPath | ||
| 174 | }); | ||
| 175 | |||
| 176 | result.AssertSuccess(); | ||
| 177 | |||
| 178 | Assert.True(File.Exists(msiPath)); | ||
| 179 | var results = Query.QueryDatabase(msiPath, new[] { "AppSearch", "RegLocator" }); | ||
| 180 | WixAssert.CompareLineByLine(new[] | ||
| 181 | { | ||
| 182 | "AppSearch:SAMPLEREGFOUND\tSampleRegSearch", | ||
| 183 | "RegLocator:SampleRegSearch\t2\tSampleReg\t\t2", | ||
| 184 | }, results); | ||
| 185 | } | ||
| 186 | } | ||
| 187 | |||
| 188 | [Fact] | ||
| 189 | public void PopulatesAppSearchTablesFromRegistrySearch64() | ||
| 190 | { | ||
| 191 | var folder = TestData.Get(@"TestData"); | ||
| 192 | |||
| 193 | using (var fs = new DisposableFileSystem()) | ||
| 194 | { | ||
| 195 | var baseFolder = fs.GetFolder(); | ||
| 196 | var intermediateFolder = Path.Combine(baseFolder, "obj"); | ||
| 197 | var msiPath = Path.Combine(baseFolder, @"bin\test.msi"); | ||
| 198 | |||
| 199 | var result = WixRunner.Execute(new[] | ||
| 200 | { | ||
| 201 | "build", | ||
| 202 | Path.Combine(folder, "AppSearch", "RegistrySearch64.wxs"), | ||
| 203 | Path.Combine(folder, "ProductWithComponentGroupRef", "MinimalComponentGroup.wxs"), | ||
| 204 | Path.Combine(folder, "ProductWithComponentGroupRef", "Product.wxs"), | ||
| 205 | "-bindpath", Path.Combine(folder, "SingleFile", "data"), | ||
| 206 | "-intermediateFolder", intermediateFolder, | ||
| 207 | "-o", msiPath | ||
| 208 | }); | ||
| 209 | |||
| 210 | result.AssertSuccess(); | ||
| 211 | |||
| 212 | Assert.True(File.Exists(msiPath)); | ||
| 213 | var results = Query.QueryDatabase(msiPath, new[] { "AppSearch", "RegLocator" }); | ||
| 214 | WixAssert.CompareLineByLine(new[] | ||
| 215 | { | ||
| 216 | "AppSearch:SAMPLEREGFOUND\tSampleRegSearch", | ||
| 217 | "RegLocator:SampleRegSearch\t2\tSampleReg\t\t18", | ||
| 218 | }, results); | ||
| 219 | } | ||
| 220 | } | ||
| 221 | |||
| 222 | [Fact] | ||
| 223 | public void PopulatesClassTablesWhenIconIndexIsZero() | ||
| 224 | { | ||
| 225 | var folder = TestData.Get(@"TestData"); | ||
| 226 | |||
| 227 | using (var fs = new DisposableFileSystem()) | ||
| 228 | { | ||
| 229 | var baseFolder = fs.GetFolder(); | ||
| 230 | var intermediateFolder = Path.Combine(baseFolder, "obj"); | ||
| 231 | var msiPath = Path.Combine(baseFolder, @"bin\test.msi"); | ||
| 232 | |||
| 233 | var result = WixRunner.Execute(new[] | ||
| 234 | { | ||
| 235 | "build", | ||
| 236 | Path.Combine(folder, "Class", "IconIndex0.wxs"), | ||
| 237 | Path.Combine(folder, "Icon", "SampleIcon.wxs"), | ||
| 238 | Path.Combine(folder, "ProductWithComponentGroupRef", "MinimalComponentGroup.wxs"), | ||
| 239 | Path.Combine(folder, "ProductWithComponentGroupRef", "Product.wxs"), | ||
| 240 | "-bindpath", Path.Combine(folder, ".Data"), | ||
| 241 | "-bindpath", Path.Combine(folder, "SingleFile", "data"), | ||
| 242 | "-intermediateFolder", intermediateFolder, | ||
| 243 | "-o", msiPath | ||
| 244 | }); | ||
| 245 | |||
| 246 | result.AssertSuccess(); | ||
| 247 | |||
| 248 | Assert.True(File.Exists(msiPath)); | ||
| 249 | var results = Query.QueryDatabase(msiPath, new[] { "Class" }); | ||
| 250 | WixAssert.CompareLineByLine(new[] | ||
| 251 | { | ||
| 252 | "Class:{3FAED4CC-C473-4B8A-BE8B-303871377A4A}\tLocalServer32\tClassComp\t\tFakeClass3FAE\t\t\tSampleIcon\t0\t\t\tProductFeature\t", | ||
| 253 | }, results); | ||
| 254 | } | ||
| 255 | } | ||
| 256 | |||
| 257 | [Fact] | ||
| 258 | public void PopulatesClassTablesWhenProgIdIsNestedUnderAdvertisedClass() | ||
| 259 | { | ||
| 260 | var folder = TestData.Get(@"TestData"); | ||
| 261 | |||
| 262 | using (var fs = new DisposableFileSystem()) | ||
| 263 | { | ||
| 264 | var baseFolder = fs.GetFolder(); | ||
| 265 | var intermediateFolder = Path.Combine(baseFolder, "obj"); | ||
| 266 | var msiPath = Path.Combine(baseFolder, @"bin\test.msi"); | ||
| 267 | |||
| 268 | var result = WixRunner.Execute(new[] | ||
| 269 | { | ||
| 270 | "build", | ||
| 271 | Path.Combine(folder, "ProgId", "NestedUnderClass.wxs"), | ||
| 272 | Path.Combine(folder, "ProductWithComponentGroupRef", "MinimalComponentGroup.wxs"), | ||
| 273 | Path.Combine(folder, "ProductWithComponentGroupRef", "Product.wxs"), | ||
| 274 | "-bindpath", Path.Combine(folder, "SingleFile", "data"), | ||
| 275 | "-intermediateFolder", intermediateFolder, | ||
| 276 | "-o", msiPath | ||
| 277 | }); | ||
| 278 | |||
| 279 | result.AssertSuccess(); | ||
| 280 | |||
| 281 | Assert.True(File.Exists(msiPath)); | ||
| 282 | var results = Query.QueryDatabase(msiPath, new[] { "Class", "ProgId", "Registry" }); | ||
| 283 | WixAssert.CompareLineByLine(new[] | ||
| 284 | { | ||
| 285 | "Class:{F12A6F69-117F-471F-AE73-F8E74218F498}\tLocalServer32\tProgIdComp\t73E7DF7E-EFAC-4E11-90E2-6EBAEB8DE58D\tFakeClassF12A\t\t\t\t\t\t\tProductFeature\t", | ||
| 286 | "ProgId:73E7DF7E-EFAC-4E11-90E2-6EBAEB8DE58D\t\t{F12A6F69-117F-471F-AE73-F8E74218F498}\tFakeClassF12A\t\t", | ||
| 287 | "Registry:regUIIK326nDZpkWHuexeF58EikQvA\t0\t73E7DF7E-EFAC-4E11-90E2-6EBAEB8DE58D\tNoOpen\tNoOpen73E7\tProgIdComp", | ||
| 288 | "Registry:regvrhMurMp98anbQJkpgA8yJCefdM\t0\tCLSID\\{F12A6F69-117F-471F-AE73-F8E74218F498}\\Version\t\t0.0.0.1\tProgIdComp", | ||
| 289 | "Registry:regY1F4E2lvu_Up6gV6c3jeN5ukn8s\t0\tCLSID\\{F12A6F69-117F-471F-AE73-F8E74218F498}\\LocalServer32\tThreadingModel\tApartment\tProgIdComp", | ||
| 290 | }, results); | ||
| 291 | } | ||
| 292 | } | ||
| 293 | |||
| 294 | [Fact] | ||
| 295 | public void PopulatesControlTables() | ||
| 296 | { | ||
| 297 | var folder = TestData.Get(@"TestData"); | ||
| 298 | |||
| 299 | using (var fs = new DisposableFileSystem()) | ||
| 300 | { | ||
| 301 | var baseFolder = fs.GetFolder(); | ||
| 302 | var intermediateFolder = Path.Combine(baseFolder, "obj"); | ||
| 303 | var msiPath = Path.Combine(baseFolder, @"bin\test.msi"); | ||
| 304 | |||
| 305 | var result = WixRunner.Execute(new[] | ||
| 306 | { | ||
| 307 | "build", | ||
| 308 | Path.Combine(folder, "DialogsInInstallUISequence", "PackageComponents.wxs"), | ||
| 309 | Path.Combine(folder, "ProductWithComponentGroupRef", "MinimalComponentGroup.wxs"), | ||
| 310 | Path.Combine(folder, "ProductWithComponentGroupRef", "Product.wxs"), | ||
| 311 | "-bindpath", Path.Combine(folder, "SingleFile", "data"), | ||
| 312 | "-intermediateFolder", intermediateFolder, | ||
| 313 | "-o", msiPath, | ||
| 314 | }); | ||
| 315 | |||
| 316 | result.AssertSuccess(); | ||
| 317 | |||
| 318 | Assert.True(File.Exists(msiPath)); | ||
| 319 | |||
| 320 | var results = Query.QueryDatabase(msiPath, new[] { "CheckBox", "Control", "ControlCondition", "InstallUISequence" }); | ||
| 321 | WixAssert.CompareLineByLine(new[] | ||
| 322 | { | ||
| 323 | "CheckBox:WIXUI_EXITDIALOGOPTIONALCHECKBOX\t1", | ||
| 324 | "Control:FirstDialog\tHeader\tText\t0\t13\t90\t13\t3\t\tFirstDialogHeader\tTitle\t", | ||
| 325 | "Control:FirstDialog\tTitle\tText\t0\t0\t90\t13\t3\t\tFirstDialogTitle\tHeader\t", | ||
| 326 | "Control:SecondDialog\tOptionalCheckBox\tCheckBox\t0\t13\t100\t40\t2\tWIXUI_EXITDIALOGOPTIONALCHECKBOX\t[WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT]\tTitle\tOptional checkbox|Check this box for fun", | ||
| 327 | "Control:SecondDialog\tTitle\tText\t0\t0\t90\t13\t3\t\tSecondDialogTitle\tOptionalCheckBox\t", | ||
| 328 | "ControlCondition:FirstDialog\tHeader\tDisable\tInstalled", | ||
| 329 | "ControlCondition:FirstDialog\tHeader\tHide\tInstalled", | ||
| 330 | "ControlCondition:SecondDialog\tOptionalCheckBox\tShow\tWIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT AND NOT Installed", | ||
| 331 | "InstallUISequence:CostFinalize\t\t1000", | ||
| 332 | "InstallUISequence:CostInitialize\t\t800", | ||
| 333 | "InstallUISequence:ExecuteAction\t\t1300", | ||
| 334 | "InstallUISequence:FileCost\t\t900", | ||
| 335 | "InstallUISequence:FindRelatedProducts\t\t25", | ||
| 336 | "InstallUISequence:FirstDialog\tInstalled AND PATCH\t1298", | ||
| 337 | "InstallUISequence:LaunchConditions\t\t100", | ||
| 338 | "InstallUISequence:MigrateFeatureStates\t\t1200", | ||
| 339 | "InstallUISequence:SecondDialog\tNOT Installed\t1299", | ||
| 340 | "InstallUISequence:ValidateProductID\t\t700", | ||
| 341 | }, results); | ||
| 342 | } | ||
| 343 | } | ||
| 344 | |||
| 345 | [Fact] | ||
| 346 | public void PopulatesCreateFolderTableForNullKeypathComponents() | ||
| 347 | { | ||
| 348 | var folder = TestData.Get(@"TestData\Components"); | ||
| 349 | |||
| 350 | using (var fs = new DisposableFileSystem()) | ||
| 351 | { | ||
| 352 | var baseFolder = fs.GetFolder(); | ||
| 353 | var intermediateFolder = Path.Combine(baseFolder, "obj"); | ||
| 354 | var msiPath = Path.Combine(baseFolder, @"bin\test.msi"); | ||
| 355 | |||
| 356 | var result = WixRunner.Execute(new[] | ||
| 357 | { | ||
| 358 | "build", | ||
| 359 | Path.Combine(folder, "Package.wxs"), | ||
| 360 | Path.Combine(folder, "PackageComponents.wxs"), | ||
| 361 | "-loc", Path.Combine(folder, "Package.en-us.wxl"), | ||
| 362 | "-bindpath", Path.Combine(folder, "data"), | ||
| 363 | "-intermediateFolder", intermediateFolder, | ||
| 364 | "-o", msiPath | ||
| 365 | }); | ||
| 366 | |||
| 367 | result.AssertSuccess(); | ||
| 368 | |||
| 369 | Assert.True(File.Exists(msiPath)); | ||
| 370 | var results = Query.QueryDatabase(msiPath, new[] { "CreateFolder" }); | ||
| 371 | WixAssert.CompareLineByLine(new[] | ||
| 372 | { | ||
| 373 | "CreateFolder:INSTALLFOLDER\tNullKeypathComponent", | ||
| 374 | }, results); | ||
| 375 | } | ||
| 376 | } | ||
| 377 | |||
| 378 | [Fact] | ||
| 379 | public void PopulatesDirectoryTableWithValidDefaultDir() | ||
| 380 | { | ||
| 381 | var folder = TestData.Get(@"TestData"); | ||
| 382 | |||
| 383 | using (var fs = new DisposableFileSystem()) | ||
| 384 | { | ||
| 385 | var baseFolder = fs.GetFolder(); | ||
| 386 | var intermediateFolder = Path.Combine(baseFolder, "obj"); | ||
| 387 | var msiPath = Path.Combine(baseFolder, @"bin\test.msi"); | ||
| 388 | |||
| 389 | var result = WixRunner.Execute(new[] | ||
| 390 | { | ||
| 391 | "build", | ||
| 392 | "-sw1031", // this is expected for this test | ||
| 393 | Path.Combine(folder, "DefaultDir", "DefaultDir.wxs"), | ||
| 394 | Path.Combine(folder, "ProductWithComponentGroupRef", "Product.wxs"), | ||
| 395 | "-bindpath", Path.Combine(folder, "SingleFile", "data"), | ||
| 396 | "-intermediateFolder", intermediateFolder, | ||
| 397 | "-o", msiPath | ||
| 398 | }); | ||
| 399 | |||
| 400 | result.AssertSuccess(); | ||
| 401 | |||
| 402 | Assert.True(File.Exists(msiPath)); | ||
| 403 | var results = Query.QueryDatabase(msiPath, new[] { "Directory" }); | ||
| 404 | WixAssert.CompareLineByLine(new[] | ||
| 405 | { | ||
| 406 | "Directory:DUPLICATENAMEANDSHORTNAME\tINSTALLFOLDER\tduplicat", | ||
| 407 | "Directory:Folder1\tINSTALLFOLDER\tFolder.1", | ||
| 408 | "Directory:Folder12\tINSTALLFOLDER\tFolder.12", | ||
| 409 | "Directory:Folder123\tINSTALLFOLDER\tFolder.123", | ||
| 410 | "Directory:Folder1234\tINSTALLFOLDER\tyakwclwy|Folder.1234", | ||
| 411 | "Directory:INSTALLFOLDER\tProgramFiles6432Folder\t1egc1laj|MsiPackage", | ||
| 412 | "Directory:NAMEANDSHORTNAME\tINSTALLFOLDER\tSHORTNAM|NameAndShortName", | ||
| 413 | "Directory:NAMEANDSHORTSOURCENAME\tINSTALLFOLDER\tNAMEASSN|NameAndShortSourceName", | ||
| 414 | "Directory:NAMEWITHSHORTVALUE\tINSTALLFOLDER\tSHORTVAL", | ||
| 415 | "Directory:ProgramFiles6432Folder\tProgramFilesFolder\t.", | ||
| 416 | "Directory:ProgramFilesFolder\tTARGETDIR\tPFiles", | ||
| 417 | "Directory:SHORTNAMEANDLONGSOURCENAME\tINSTALLFOLDER\tSHNALSNM:6ukthv5q|ShortNameAndLongSourceName", | ||
| 418 | "Directory:SHORTNAMEONLY\tINSTALLFOLDER\tSHORTONL", | ||
| 419 | "Directory:SOURCENAME\tINSTALLFOLDER\ts2s5bq-i|NameAndSourceName:dhnqygng|SourceNameWithName", | ||
| 420 | "Directory:SOURCENAMESONLY\tINSTALLFOLDER\t.:SRCNAMON|SourceNameOnly", | ||
| 421 | "Directory:SOURCENAMEWITHSHORTVALUE\tINSTALLFOLDER\t.:SRTSRCVL", | ||
| 422 | "Directory:TARGETDIR\t\tSourceDir", | ||
| 423 | }, results); | ||
| 424 | } | ||
| 425 | } | ||
| 426 | |||
| 427 | [Fact] | ||
| 428 | public void PopulatesEnvironmentTable() | ||
| 429 | { | ||
| 430 | var folder = TestData.Get(@"TestData"); | ||
| 431 | |||
| 432 | using (var fs = new DisposableFileSystem()) | ||
| 433 | { | ||
| 434 | var baseFolder = fs.GetFolder(); | ||
| 435 | var intermediateFolder = Path.Combine(baseFolder, "obj"); | ||
| 436 | var msiPath = Path.Combine(baseFolder, @"bin\test.msi"); | ||
| 437 | |||
| 438 | var result = WixRunner.Execute(new[] | ||
| 439 | { | ||
| 440 | "build", | ||
| 441 | Path.Combine(folder, "Environment", "Environment.wxs"), | ||
| 442 | Path.Combine(folder, "ProductWithComponentGroupRef", "Product.wxs"), | ||
| 443 | "-bindpath", Path.Combine(folder, "SingleFile", "data"), | ||
| 444 | "-intermediateFolder", intermediateFolder, | ||
| 445 | "-o", msiPath | ||
| 446 | }); | ||
| 447 | |||
| 448 | result.AssertSuccess(); | ||
| 449 | |||
| 450 | Assert.True(File.Exists(msiPath)); | ||
| 451 | var results = Query.QueryDatabase(msiPath, new[] { "Environment" }); | ||
| 452 | WixAssert.CompareLineByLine(new[] | ||
| 453 | { | ||
| 454 | "Environment:PATH\t=-*PATH\t[INSTALLFOLDER]; ;[~]\tWixEnvironmentTest", | ||
| 455 | "Environment:WixEnvironmentTest1\t=-WixEnvTest1\t\tWixEnvironmentTest", | ||
| 456 | "Environment:WixEnvironmentTest2\t+-WixEnvTest1\t\tWixEnvironmentTest", | ||
| 457 | "Environment:WixEnvironmentTest3\t!-WixEnvTest1\t\tWixEnvironmentTest", | ||
| 458 | "Environment:WixEnvironmentTest4\t=-*WIX\t[INSTALLFOLDER]\tWixEnvironmentTest", | ||
| 459 | }, results); | ||
| 460 | } | ||
| 461 | } | ||
| 462 | |||
| 463 | [Fact(Skip = "Test demonstrates failure")] | ||
| 464 | public void PopulatesExampleTableBecauseOfEnsureTable() | ||
| 465 | { | ||
| 466 | var folder = TestData.Get(@"TestData"); | ||
| 467 | var extensionPath = Path.GetFullPath(new Uri(typeof(ExampleExtensionFactory).Assembly.CodeBase).LocalPath); | ||
| 468 | |||
| 469 | using (var fs = new DisposableFileSystem()) | ||
| 470 | { | ||
| 471 | var baseFolder = fs.GetFolder(); | ||
| 472 | var intermediateFolder = Path.Combine(baseFolder, "obj"); | ||
| 473 | var msiPath = Path.Combine(baseFolder, @"bin\test.msi"); | ||
| 474 | |||
| 475 | var result = WixRunner.Execute(new[] | ||
| 476 | { | ||
| 477 | "build", | ||
| 478 | Path.Combine(folder, "EnsureTable", "EnsureTable.wxs"), | ||
| 479 | Path.Combine(folder, "ProductWithComponentGroupRef", "MinimalComponentGroup.wxs"), | ||
| 480 | Path.Combine(folder, "ProductWithComponentGroupRef", "Product.wxs"), | ||
| 481 | "-ext", extensionPath, | ||
| 482 | "-bindpath", Path.Combine(folder, "SingleFile", "data"), | ||
| 483 | "-intermediateFolder", intermediateFolder, | ||
| 484 | "-o", msiPath | ||
| 485 | }); | ||
| 486 | |||
| 487 | result.AssertSuccess(); | ||
| 488 | |||
| 489 | Assert.True(File.Exists(msiPath)); | ||
| 490 | var results = Query.QueryDatabaseByTable(msiPath, new[] { "Wix4Example" }); | ||
| 491 | Assert.Empty(results["Wix4Example"]); | ||
| 492 | } | ||
| 493 | } | ||
| 494 | |||
| 495 | [Fact] | ||
| 496 | public void PopulatesFeatureTableWithParent() | ||
| 497 | { | ||
| 498 | var folder = TestData.Get(@"TestData"); | ||
| 499 | |||
| 500 | using (var fs = new DisposableFileSystem()) | ||
| 501 | { | ||
| 502 | var baseFolder = fs.GetFolder(); | ||
| 503 | var intermediateFolder = Path.Combine(baseFolder, "obj"); | ||
| 504 | var msiPath = Path.Combine(baseFolder, @"bin\test.msi"); | ||
| 505 | |||
| 506 | var result = WixRunner.Execute(new[] | ||
| 507 | { | ||
| 508 | "build", | ||
| 509 | Path.Combine(folder, "FeatureGroup", "FeatureGroup.wxs"), | ||
| 510 | Path.Combine(folder, "ProductWithComponentGroupRef", "MinimalComponentGroup.wxs"), | ||
| 511 | Path.Combine(folder, "ProductWithComponentGroupRef", "Product.wxs"), | ||
| 512 | "-bindpath", Path.Combine(folder, "SingleFile", "data"), | ||
| 513 | "-intermediateFolder", intermediateFolder, | ||
| 514 | "-o", msiPath | ||
| 515 | }); | ||
| 516 | |||
| 517 | result.AssertSuccess(); | ||
| 518 | |||
| 519 | Assert.True(File.Exists(msiPath)); | ||
| 520 | var results = Query.QueryDatabase(msiPath, new[] { "Feature" }); | ||
| 521 | WixAssert.CompareLineByLine(new[] | ||
| 522 | { | ||
| 523 | "Feature:ChildFeature\tParentFeature\tChildFeatureTitle\t\t2\t1\t\t0", | ||
| 524 | "Feature:ParentFeature\t\tParentFeatureTitle\t\t2\t1\t\t0", | ||
| 525 | "Feature:ProductFeature\t\tMsiPackageTitle\t\t2\t1\t\t0", | ||
| 526 | }, results); | ||
| 527 | } | ||
| 528 | } | ||
| 529 | |||
| 530 | [Fact] | ||
| 531 | public void PopulatesFontTableFromFontTitle() | ||
| 532 | { | ||
| 533 | var folder = TestData.Get(@"TestData"); | ||
| 534 | |||
| 535 | using (var fs = new DisposableFileSystem()) | ||
| 536 | { | ||
| 537 | var baseFolder = fs.GetFolder(); | ||
| 538 | var intermediateFolder = Path.Combine(baseFolder, "obj"); | ||
| 539 | var msiPath = Path.Combine(baseFolder, @"bin\test.msi"); | ||
| 540 | |||
| 541 | var result = WixRunner.Execute(new[] | ||
| 542 | { | ||
| 543 | "build", | ||
| 544 | Path.Combine(folder, "Font", "FontTitle.wxs"), | ||
| 545 | Path.Combine(folder, "ProductWithComponentGroupRef", "MinimalComponentGroup.wxs"), | ||
| 546 | Path.Combine(folder, "ProductWithComponentGroupRef", "Product.wxs"), | ||
| 547 | "-bindpath", Path.Combine(folder, "SingleFile", "data"), | ||
| 548 | "-intermediateFolder", intermediateFolder, | ||
| 549 | "-o", msiPath | ||
| 550 | }); | ||
| 551 | |||
| 552 | result.AssertSuccess(); | ||
| 553 | |||
| 554 | Assert.True(File.Exists(msiPath)); | ||
| 555 | var results = Query.QueryDatabase(msiPath, new[] { "Font" }); | ||
| 556 | WixAssert.CompareLineByLine(new[] | ||
| 557 | { | ||
| 558 | "Font:test.txt\tFakeFont", | ||
| 559 | }, results); | ||
| 560 | } | ||
| 561 | } | ||
| 562 | |||
| 563 | [Fact] | ||
| 564 | public void PopulatesFontTableFromTrueType() | ||
| 565 | { | ||
| 566 | var folder = TestData.Get(@"TestData"); | ||
| 567 | |||
| 568 | using (var fs = new DisposableFileSystem()) | ||
| 569 | { | ||
| 570 | var baseFolder = fs.GetFolder(); | ||
| 571 | var intermediateFolder = Path.Combine(baseFolder, "obj"); | ||
| 572 | var msiPath = Path.Combine(baseFolder, @"bin\test.msi"); | ||
| 573 | |||
| 574 | var result = WixRunner.Execute(new[] | ||
| 575 | { | ||
| 576 | "build", | ||
| 577 | Path.Combine(folder, "Font", "TrueType.wxs"), | ||
| 578 | Path.Combine(folder, "ProductWithComponentGroupRef", "MinimalComponentGroup.wxs"), | ||
| 579 | Path.Combine(folder, "ProductWithComponentGroupRef", "Product.wxs"), | ||
| 580 | "-bindpath", Path.Combine(folder, "SingleFile", "data"), | ||
| 581 | "-intermediateFolder", intermediateFolder, | ||
| 582 | "-o", msiPath | ||
| 583 | }); | ||
| 584 | |||
| 585 | result.AssertSuccess(); | ||
| 586 | |||
| 587 | Assert.True(File.Exists(msiPath)); | ||
| 588 | var results = Query.QueryDatabase(msiPath, new[] { "Font" }); | ||
| 589 | WixAssert.CompareLineByLine(new[] | ||
| 590 | { | ||
| 591 | "Font:TrueTypeFontFile\t", | ||
| 592 | }, results); | ||
| 593 | } | ||
| 594 | } | ||
| 595 | |||
| 596 | [Fact] | ||
| 597 | public void PopulatesInstallExecuteSequenceTable() | ||
| 598 | { | ||
| 599 | var folder = TestData.Get(@"TestData"); | ||
| 600 | |||
| 601 | using (var fs = new DisposableFileSystem()) | ||
| 602 | { | ||
| 603 | var baseFolder = fs.GetFolder(); | ||
| 604 | var intermediateFolder = Path.Combine(baseFolder, "obj"); | ||
| 605 | var msiPath = Path.Combine(baseFolder, @"bin\test.msi"); | ||
| 606 | |||
| 607 | var result = WixRunner.Execute(new[] | ||
| 608 | { | ||
| 609 | "build", | ||
| 610 | Path.Combine(folder, "Upgrade", "DetectOnly.wxs"), | ||
| 611 | Path.Combine(folder, "ProductWithComponentGroupRef", "MinimalComponentGroup.wxs"), | ||
| 612 | Path.Combine(folder, "ProductWithComponentGroupRef", "Product.wxs"), | ||
| 613 | "-bindpath", Path.Combine(folder, "SingleFile", "data"), | ||
| 614 | "-intermediateFolder", intermediateFolder, | ||
| 615 | "-o", msiPath | ||
| 616 | }); | ||
| 617 | |||
| 618 | result.AssertSuccess(); | ||
| 619 | |||
| 620 | Assert.True(File.Exists(msiPath)); | ||
| 621 | var results = Query.QueryDatabase(msiPath, new[] { "InstallExecuteSequence" }); | ||
| 622 | WixAssert.CompareLineByLine(new[] | ||
| 623 | { | ||
| 624 | "InstallExecuteSequence:CostFinalize\t\t1000", | ||
| 625 | "InstallExecuteSequence:CostInitialize\t\t800", | ||
| 626 | "InstallExecuteSequence:CreateFolders\t\t3700", | ||
| 627 | "InstallExecuteSequence:FileCost\t\t900", | ||
| 628 | "InstallExecuteSequence:FindRelatedProducts\t\t25", | ||
| 629 | "InstallExecuteSequence:InstallFiles\t\t4000", | ||
| 630 | "InstallExecuteSequence:InstallFinalize\t\t6600", | ||
| 631 | "InstallExecuteSequence:InstallInitialize\t\t1500", | ||
| 632 | "InstallExecuteSequence:InstallValidate\t\t1400", | ||
| 633 | "InstallExecuteSequence:LaunchConditions\t\t100", | ||
| 634 | "InstallExecuteSequence:MigrateFeatureStates\t\t1200", | ||
| 635 | "InstallExecuteSequence:ProcessComponents\t\t1600", | ||
| 636 | "InstallExecuteSequence:PublishFeatures\t\t6300", | ||
| 637 | "InstallExecuteSequence:PublishProduct\t\t6400", | ||
| 638 | "InstallExecuteSequence:RegisterProduct\t\t6100", | ||
| 639 | "InstallExecuteSequence:RegisterUser\t\t6000", | ||
| 640 | "InstallExecuteSequence:RemoveExistingProducts\t\t1401", | ||
| 641 | "InstallExecuteSequence:RemoveFiles\t\t3500", | ||
| 642 | "InstallExecuteSequence:RemoveFolders\t\t3600", | ||
| 643 | "InstallExecuteSequence:UnpublishFeatures\t\t1800", | ||
| 644 | "InstallExecuteSequence:ValidateProductID\t\t700", | ||
| 645 | }, results); | ||
| 646 | } | ||
| 647 | } | ||
| 648 | |||
| 649 | [Fact] | ||
| 650 | public void PopulatesLockPermissionsTableWithEmptyPermissions() | ||
| 651 | { | ||
| 652 | var folder = TestData.Get(@"TestData"); | ||
| 653 | |||
| 654 | using (var fs = new DisposableFileSystem()) | ||
| 655 | { | ||
| 656 | var baseFolder = fs.GetFolder(); | ||
| 657 | var intermediateFolder = Path.Combine(baseFolder, "obj"); | ||
| 658 | var msiPath = Path.Combine(baseFolder, @"bin\test.msi"); | ||
| 659 | |||
| 660 | var result = WixRunner.Execute(new[] | ||
| 661 | { | ||
| 662 | "build", | ||
| 663 | Path.Combine(folder, "LockPermissions", "EmptyPermissions.wxs"), | ||
| 664 | Path.Combine(folder, "ProductWithComponentGroupRef", "MinimalComponentGroup.wxs"), | ||
| 665 | Path.Combine(folder, "ProductWithComponentGroupRef", "Product.wxs"), | ||
| 666 | "-bindpath", Path.Combine(folder, "SingleFile", "data"), | ||
| 667 | "-intermediateFolder", intermediateFolder, | ||
| 668 | "-o", msiPath | ||
| 669 | }); | ||
| 670 | |||
| 671 | result.AssertSuccess(); | ||
| 672 | |||
| 673 | Assert.True(File.Exists(msiPath)); | ||
| 674 | var results = Query.QueryDatabase(msiPath, new[] { "LockPermissions" }); | ||
| 675 | WixAssert.CompareLineByLine(new[] | ||
| 676 | { | ||
| 677 | "LockPermissions:INSTALLFOLDER\tCreateFolder\t\tAdministrator\t0", | ||
| 678 | }, results); | ||
| 679 | } | ||
| 680 | } | ||
| 681 | |||
| 682 | [Fact] | ||
| 683 | public void PopulatesMsiAssemblyTables() | ||
| 684 | { | ||
| 685 | var folder = TestData.Get(@"TestData"); | ||
| 686 | |||
| 687 | using (var fs = new DisposableFileSystem()) | ||
| 688 | { | ||
| 689 | var baseFolder = fs.GetFolder(); | ||
| 690 | var intermediateFolder = Path.Combine(baseFolder, "obj"); | ||
| 691 | var msiPath = Path.Combine(baseFolder, @"bin\test.msi"); | ||
| 692 | |||
| 693 | var result = WixRunner.Execute(new[] | ||
| 694 | { | ||
| 695 | "build", | ||
| 696 | Path.Combine(folder, "Assembly", "Win32Assembly.wxs"), | ||
| 697 | Path.Combine(folder, "ProductWithComponentGroupRef", "MinimalComponentGroup.wxs"), | ||
| 698 | Path.Combine(folder, "ProductWithComponentGroupRef", "Product.wxs"), | ||
| 699 | "-bindpath", Path.Combine(folder, "Assembly", "data"), | ||
| 700 | "-bindpath", Path.Combine(folder, "SingleFile", "data"), | ||
| 701 | "-intermediateFolder", intermediateFolder, | ||
| 702 | "-o", msiPath | ||
| 703 | }); | ||
| 704 | |||
| 705 | result.AssertSuccess(); | ||
| 706 | |||
| 707 | Assert.True(File.Exists(msiPath)); | ||
| 708 | var results = Query.QueryDatabase(msiPath, new[] { "MsiAssembly", "MsiAssemblyName" }); | ||
| 709 | WixAssert.CompareLineByLine(new[] | ||
| 710 | { | ||
| 711 | "MsiAssembly:test.txt\tProductFeature\ttest.dll.manifest\t\t1", | ||
| 712 | "MsiAssemblyName:test.txt\tname\tMyApplication.app", | ||
| 713 | "MsiAssemblyName:test.txt\tversion\t1.0.0.0", | ||
| 714 | }, results); | ||
| 715 | } | ||
| 716 | } | ||
| 717 | |||
| 718 | [Fact] | ||
| 719 | public void PopulatesReserveCostTable() | ||
| 720 | { | ||
| 721 | var folder = TestData.Get(@"TestData"); | ||
| 722 | |||
| 723 | using (var fs = new DisposableFileSystem()) | ||
| 724 | { | ||
| 725 | var baseFolder = fs.GetFolder(); | ||
| 726 | var intermediateFolder = Path.Combine(baseFolder, "obj"); | ||
| 727 | var msiPath = Path.Combine(baseFolder, @"bin\test.msi"); | ||
| 728 | |||
| 729 | var result = WixRunner.Execute(new[] | ||
| 730 | { | ||
| 731 | "build", | ||
| 732 | Path.Combine(folder, "ReserveCost", "ReserveCost.wxs"), | ||
| 733 | Path.Combine(folder, "ProductWithComponentGroupRef", "MinimalComponentGroup.wxs"), | ||
| 734 | Path.Combine(folder, "ProductWithComponentGroupRef", "Product.wxs"), | ||
| 735 | "-bindpath", Path.Combine(folder, "SingleFile", "data"), | ||
| 736 | "-intermediateFolder", intermediateFolder, | ||
| 737 | "-o", msiPath | ||
| 738 | }); | ||
| 739 | |||
| 740 | result.AssertSuccess(); | ||
| 741 | |||
| 742 | Assert.True(File.Exists(msiPath)); | ||
| 743 | var results = Query.QueryDatabase(msiPath, new[] { "ReserveCost" }); | ||
| 744 | WixAssert.CompareLineByLine(new[] | ||
| 745 | { | ||
| 746 | "ReserveCost:TestCost\tReserveCostComp\tINSTALLFOLDER\t100\t200", | ||
| 747 | }, results); | ||
| 748 | } | ||
| 749 | } | ||
| 750 | |||
| 751 | [Fact] | ||
| 752 | public void PopulatesServiceTables() | ||
| 753 | { | ||
| 754 | var folder = TestData.Get(@"TestData"); | ||
| 755 | |||
| 756 | using (var fs = new DisposableFileSystem()) | ||
| 757 | { | ||
| 758 | var baseFolder = fs.GetFolder(); | ||
| 759 | var intermediateFolder = Path.Combine(baseFolder, "obj"); | ||
| 760 | var msiPath = Path.Combine(baseFolder, @"bin\test.msi"); | ||
| 761 | |||
| 762 | var result = WixRunner.Execute(new[] | ||
| 763 | { | ||
| 764 | "build", | ||
| 765 | Path.Combine(folder, "ServiceInstall", "OwnProcess.wxs"), | ||
| 766 | Path.Combine(folder, "ProductWithComponentGroupRef", "MinimalComponentGroup.wxs"), | ||
| 767 | Path.Combine(folder, "ProductWithComponentGroupRef", "Product.wxs"), | ||
| 768 | "-bindpath", Path.Combine(folder, "SingleFile", "data"), | ||
| 769 | "-intermediateFolder", intermediateFolder, | ||
| 770 | "-o", msiPath | ||
| 771 | }); | ||
| 772 | |||
| 773 | result.AssertSuccess(); | ||
| 774 | |||
| 775 | Assert.True(File.Exists(msiPath)); | ||
| 776 | var results = Query.QueryDatabase(msiPath, new[] { "ServiceInstall", "ServiceControl" }); | ||
| 777 | WixAssert.CompareLineByLine(new[] | ||
| 778 | { | ||
| 779 | "ServiceControl:SampleService\tSampleService\t161\t\t1\ttest.txt", | ||
| 780 | "ServiceInstall:SampleService\tSampleService\t\t16\t4\t0\t\t\t\t\t\ttest.txt\t", | ||
| 781 | }, results); | ||
| 782 | } | ||
| 783 | } | ||
| 784 | |||
| 785 | [Fact] | ||
| 786 | public void PopulatesTextStyleTableWhenColorIsNull() | ||
| 787 | { | ||
| 788 | var folder = TestData.Get(@"TestData"); | ||
| 789 | |||
| 790 | using (var fs = new DisposableFileSystem()) | ||
| 791 | { | ||
| 792 | var baseFolder = fs.GetFolder(); | ||
| 793 | var intermediateFolder = Path.Combine(baseFolder, "obj"); | ||
| 794 | var msiPath = Path.Combine(baseFolder, @"bin\test.msi"); | ||
| 795 | |||
| 796 | var result = WixRunner.Execute(new[] | ||
| 797 | { | ||
| 798 | "build", | ||
| 799 | Path.Combine(folder, "TextStyle", "ColorNull.wxs"), | ||
| 800 | Path.Combine(folder, "ProductWithComponentGroupRef", "MinimalComponentGroup.wxs"), | ||
| 801 | Path.Combine(folder, "ProductWithComponentGroupRef", "Product.wxs"), | ||
| 802 | "-bindpath", Path.Combine(folder, "SingleFile", "data"), | ||
| 803 | "-intermediateFolder", intermediateFolder, | ||
| 804 | "-o", msiPath | ||
| 805 | }); | ||
| 806 | |||
| 807 | result.AssertSuccess(); | ||
| 808 | |||
| 809 | Assert.True(File.Exists(msiPath)); | ||
| 810 | var results = Query.QueryDatabase(msiPath, new[] { "TextStyle" }); | ||
| 811 | WixAssert.CompareLineByLine(new[] | ||
| 812 | { | ||
| 813 | "TextStyle:FirstTextStyle\tArial\t2\t\t", | ||
| 814 | }, results); | ||
| 815 | } | ||
| 816 | } | ||
| 817 | |||
| 818 | [Fact] | ||
| 819 | public void PopulatesTextStyleTableWhenSizeIsLocalized() | ||
| 820 | { | ||
| 821 | var folder = TestData.Get(@"TestData"); | ||
| 822 | |||
| 823 | using (var fs = new DisposableFileSystem()) | ||
| 824 | { | ||
| 825 | var baseFolder = fs.GetFolder(); | ||
| 826 | var intermediateFolder = Path.Combine(baseFolder, "obj"); | ||
| 827 | var msiPath = Path.Combine(baseFolder, @"bin\test.msi"); | ||
| 828 | |||
| 829 | var result = WixRunner.Execute(new[] | ||
| 830 | { | ||
| 831 | "build", | ||
| 832 | Path.Combine(folder, "TextStyle", "SizeLocalized.wxs"), | ||
| 833 | Path.Combine(folder, "ProductWithComponentGroupRef", "MinimalComponentGroup.wxs"), | ||
| 834 | Path.Combine(folder, "ProductWithComponentGroupRef", "Product.wxs"), | ||
| 835 | "-loc", Path.Combine(folder, "TextStyle", "SizeLocalized.en-us.wxl"), | ||
| 836 | "-bindpath", Path.Combine(folder, "SingleFile", "data"), | ||
| 837 | "-intermediateFolder", intermediateFolder, | ||
| 838 | "-o", msiPath, | ||
| 839 | }); | ||
| 840 | |||
| 841 | result.AssertSuccess(); | ||
| 842 | |||
| 843 | Assert.True(File.Exists(msiPath)); | ||
| 844 | var results = Query.QueryDatabase(msiPath, new[] { "TextStyle" }); | ||
| 845 | WixAssert.CompareLineByLine(new[] | ||
| 846 | { | ||
| 847 | "TextStyle:CustomFont\tTahoma\t8\t\t", | ||
| 848 | }, results); | ||
| 849 | } | ||
| 850 | } | ||
| 851 | |||
| 852 | [Fact] | ||
| 853 | public void PopulatesTypeLibTableWhenLanguageIsZero() | ||
| 854 | { | ||
| 855 | var folder = TestData.Get(@"TestData"); | ||
| 856 | |||
| 857 | using (var fs = new DisposableFileSystem()) | ||
| 858 | { | ||
| 859 | var baseFolder = fs.GetFolder(); | ||
| 860 | var intermediateFolder = Path.Combine(baseFolder, "obj"); | ||
| 861 | var msiPath = Path.Combine(baseFolder, @"bin\test.msi"); | ||
| 862 | |||
| 863 | var result = WixRunner.Execute(new[] | ||
| 864 | { | ||
| 865 | "build", | ||
| 866 | Path.Combine(folder, "TypeLib", "Language0.wxs"), | ||
| 867 | Path.Combine(folder, "ProductWithComponentGroupRef", "Product.wxs"), | ||
| 868 | "-bindpath", Path.Combine(folder, "SingleFile", "data"), | ||
| 869 | "-intermediateFolder", intermediateFolder, | ||
| 870 | "-o", msiPath | ||
| 871 | }); | ||
| 872 | |||
| 873 | result.AssertSuccess(); | ||
| 874 | |||
| 875 | Assert.True(File.Exists(msiPath)); | ||
| 876 | var results = Query.QueryDatabase(msiPath, new[] { "TypeLib" }); | ||
| 877 | WixAssert.CompareLineByLine(new[] | ||
| 878 | { | ||
| 879 | "TypeLib:{765BE8EE-BD7F-491E-90D2-C5A972462B50}\t0\tTypeLibComp\t\t\t\tProductFeature\t", | ||
| 880 | }, results); | ||
| 881 | } | ||
| 882 | } | ||
| 883 | |||
| 884 | [Fact] | ||
| 885 | public void PopulatesUpgradeTableFromManualUpgrade() | ||
| 886 | { | ||
| 887 | var folder = TestData.Get(@"TestData\ManualUpgrade"); | ||
| 888 | |||
| 889 | using (var fs = new DisposableFileSystem()) | ||
| 890 | { | ||
| 891 | var intermediateFolder = fs.GetFolder(); | ||
| 892 | var msiPath = Path.Combine(intermediateFolder, @"bin\test.msi"); | ||
| 893 | |||
| 894 | var result = WixRunner.Execute(new[] | ||
| 895 | { | ||
| 896 | "build", | ||
| 897 | Path.Combine(folder, "Package.wxs"), | ||
| 898 | Path.Combine(folder, "PackageComponents.wxs"), | ||
| 899 | "-loc", Path.Combine(folder, "Package.en-us.wxl"), | ||
| 900 | "-bindpath", Path.Combine(folder, "data"), | ||
| 901 | "-intermediateFolder", intermediateFolder, | ||
| 902 | "-o", msiPath | ||
| 903 | }, out var messages); | ||
| 904 | |||
| 905 | Assert.Equal(0, result); | ||
| 906 | |||
| 907 | Assert.True(File.Exists(msiPath)); | ||
| 908 | var results = Query.QueryDatabase(msiPath, new[] { "Upgrade" }); | ||
| 909 | WixAssert.CompareLineByLine(new[] | ||
| 910 | { | ||
| 911 | "Upgrade:{01120000-00E0-0000-0000-0000000FF1CE}\t12.0.0\t13.0.0\t\t260\t\tBLAHBLAHBLAH", | ||
| 912 | }, results); | ||
| 913 | } | ||
| 914 | } | ||
| 915 | |||
| 916 | [Fact] | ||
| 917 | public void PopulatesUpgradeTableFromDetectOnlyUpgrade() | ||
| 918 | { | ||
| 919 | var folder = TestData.Get(@"TestData"); | ||
| 920 | |||
| 921 | using (var fs = new DisposableFileSystem()) | ||
| 922 | { | ||
| 923 | var baseFolder = fs.GetFolder(); | ||
| 924 | var intermediateFolder = Path.Combine(baseFolder, "obj"); | ||
| 925 | var msiPath = Path.Combine(baseFolder, @"bin\test.msi"); | ||
| 926 | |||
| 927 | var result = WixRunner.Execute(new[] | ||
| 928 | { | ||
| 929 | "build", | ||
| 930 | Path.Combine(folder, "Upgrade", "DetectOnly.wxs"), | ||
| 931 | Path.Combine(folder, "ProductWithComponentGroupRef", "MinimalComponentGroup.wxs"), | ||
| 932 | Path.Combine(folder, "ProductWithComponentGroupRef", "Product.wxs"), | ||
| 933 | "-bindpath", Path.Combine(folder, "SingleFile", "data"), | ||
| 934 | "-intermediateFolder", intermediateFolder, | ||
| 935 | "-o", msiPath | ||
| 936 | }); | ||
| 937 | |||
| 938 | result.AssertSuccess(); | ||
| 939 | |||
| 940 | Assert.True(File.Exists(msiPath)); | ||
| 941 | var results = Query.QueryDatabase(msiPath, new[] { "Upgrade" }); | ||
| 942 | WixAssert.CompareLineByLine(new[] | ||
| 943 | { | ||
| 944 | "Upgrade:{12E4699F-E774-4D05-8A01-5BDD41BBA127}\t\t1.0.0.0\t1033\t1\t\tWIX_UPGRADE_DETECTED", | ||
| 945 | "Upgrade:{12E4699F-E774-4D05-8A01-5BDD41BBA127}\t1.0.0.0\t\t1033\t2\t\tWIX_DOWNGRADE_DETECTED", | ||
| 946 | "Upgrade:{B05772EA-82B8-4DE0-B7EB-45B5F0CCFE6D}\t1.0.0\t\t\t256\t\tRELPRODFOUND", | ||
| 947 | }, results); | ||
| 948 | |||
| 949 | var prefix = "Property:SecureCustomProperties\t"; | ||
| 950 | var secureProperties = Query.QueryDatabase(msiPath, new[] { "Property" }).Where(p => p.StartsWith(prefix)).Single(); | ||
| 951 | WixAssert.CompareLineByLine(new[] | ||
| 952 | { | ||
| 953 | "RELPRODFOUND", | ||
| 954 | "WIX_DOWNGRADE_DETECTED", | ||
| 955 | "WIX_UPGRADE_DETECTED", | ||
| 956 | }, secureProperties.Substring(prefix.Length).Split(';').OrderBy(p => p).ToArray()); | ||
| 957 | } | ||
| 958 | } | ||
| 959 | |||
| 960 | [Fact] | ||
| 961 | public void CanMergeModule() | ||
| 962 | { | ||
| 963 | var folder = TestData.Get(@"TestData\SimpleMerge"); | ||
| 964 | |||
| 965 | using (var fs = new DisposableFileSystem()) | ||
| 966 | { | ||
| 967 | var intermediateFolder = fs.GetFolder(); | ||
| 968 | var msiPath = Path.Combine(intermediateFolder, @"bin\test.msi"); | ||
| 969 | var cabPath = Path.Combine(intermediateFolder, @"bin\cab1.cab"); | ||
| 970 | |||
| 971 | var result = WixRunner.Execute(new[] | ||
| 972 | { | ||
| 973 | "build", | ||
| 974 | Path.Combine(folder, "Package.wxs"), | ||
| 975 | "-loc", Path.Combine(folder, "Package.en-us.wxl"), | ||
| 976 | "-bindpath", Path.Combine(folder, ".data"), | ||
| 977 | "-intermediateFolder", intermediateFolder, | ||
| 978 | "-o", msiPath | ||
| 979 | }); | ||
| 980 | |||
| 981 | result.AssertSuccess(); | ||
| 982 | |||
| 983 | Assert.True(File.Exists(msiPath)); | ||
| 984 | Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\test.wixpdb"))); | ||
| 985 | |||
| 986 | var intermediate = Intermediate.Load(Path.Combine(intermediateFolder, @"bin\test.wixpdb")); | ||
| 987 | var section = intermediate.Sections.Single(); | ||
| 988 | Assert.Empty(section.Symbols.OfType<FileSymbol>()); | ||
| 989 | |||
| 990 | var data = WindowsInstallerData.Load(Path.Combine(intermediateFolder, @"bin\test.wixpdb")); | ||
| 991 | Assert.Empty(data.Tables["File"].Rows); | ||
| 992 | |||
| 993 | var results = Query.QueryDatabase(msiPath, new[] { "File" }); | ||
| 994 | WixAssert.CompareLineByLine(new[] | ||
| 995 | { | ||
| 996 | "File:filyIq8rqcxxf903Hsn5K9L0SWV73g.243FB739_4D05_472F_9CFB_EF6B1017B6DE\tModuleComponent.243FB739_4D05_472F_9CFB_EF6B1017B6DE\ttest.txt\t17\t\t\t512\t0" | ||
| 997 | }, results); | ||
| 998 | |||
| 999 | var files = Query.GetCabinetFiles(cabPath); | ||
| 1000 | WixAssert.CompareLineByLine(new[] | ||
| 1001 | { | ||
| 1002 | "filyIq8rqcxxf903Hsn5K9L0SWV73g.243FB739_4D05_472F_9CFB_EF6B1017B6DE" | ||
| 1003 | }, files.Select(f => f.Name).ToArray()); | ||
| 1004 | } | ||
| 1005 | } | ||
| 1006 | |||
| 1007 | [Fact] | ||
| 1008 | public void CanPublishComponentWithMultipleFeatureComponents() | ||
| 1009 | { | ||
| 1010 | var folder = TestData.Get(@"TestData\PublishComponent"); | ||
| 1011 | |||
| 1012 | using (var fs = new DisposableFileSystem()) | ||
| 1013 | { | ||
| 1014 | var baseFolder = fs.GetFolder(); | ||
| 1015 | var intermediateFolder = Path.Combine(baseFolder, "obj"); | ||
| 1016 | var msiPath = Path.Combine(baseFolder, @"bin\test.msi"); | ||
| 1017 | |||
| 1018 | var result = WixRunner.Execute(new[] | ||
| 1019 | { | ||
| 1020 | "build", | ||
| 1021 | Path.Combine(folder, "Package.wxs"), | ||
| 1022 | "-loc", Path.Combine(folder, "Package.en-us.wxl"), | ||
| 1023 | "-bindpath", Path.Combine(folder, "data"), | ||
| 1024 | "-intermediateFolder", intermediateFolder, | ||
| 1025 | "-o", msiPath | ||
| 1026 | }); | ||
| 1027 | |||
| 1028 | result.AssertSuccess(); | ||
| 1029 | |||
| 1030 | Assert.True(File.Exists(msiPath)); | ||
| 1031 | var results = Query.QueryDatabase(msiPath, new[] { "PublishComponent" }); | ||
| 1032 | WixAssert.CompareLineByLine(new[] | ||
| 1033 | { | ||
| 1034 | "PublishComponent:{0A82C8F6-9CE9-4336-B8BE-91A39B5F7081} Qualifier2 Component2 AppData2 ProductFeature2", | ||
| 1035 | "PublishComponent:{BD245B5A-EC33-46ED-98FF-E9D3D416AD04} Qualifier1 Component1 AppData1 ProductFeature1", | ||
| 1036 | }, results); | ||
| 1037 | } | ||
| 1038 | } | ||
| 1039 | } | ||
| 1040 | } | ||
