diff options
| author | Rob Mensching <rob@firegiant.com> | 2021-04-10 15:24:33 -0700 |
|---|---|---|
| committer | Rob Mensching <rob@firegiant.com> | 2021-04-12 10:24:01 -0700 |
| commit | d77302d94b356a1db2b2b834e45c8962381eae6b (patch) | |
| tree | af44629cacb074bafb7b561e2e0db9d45a6a1727 /src | |
| parent | 3441afb46c4dc056493ab84f9b27434c4185d713 (diff) | |
| download | wix-d77302d94b356a1db2b2b834e45c8962381eae6b.tar.gz wix-d77302d94b356a1db2b2b834e45c8962381eae6b.tar.bz2 wix-d77302d94b356a1db2b2b834e45c8962381eae6b.zip | |
Add support for RepairCondition on Exe, Msi and Msp packages
Diffstat (limited to 'src')
| -rw-r--r-- | src/WixToolset.Core.Burn/Bundles/CreateBurnManifestCommand.cs | 13 | ||||
| -rw-r--r-- | src/WixToolset.Core/Compiler_Bundle.cs | 8 |
2 files changed, 21 insertions, 0 deletions
diff --git a/src/WixToolset.Core.Burn/Bundles/CreateBurnManifestCommand.cs b/src/WixToolset.Core.Burn/Bundles/CreateBurnManifestCommand.cs index fa44a8e3..128c7a5f 100644 --- a/src/WixToolset.Core.Burn/Bundles/CreateBurnManifestCommand.cs +++ b/src/WixToolset.Core.Burn/Bundles/CreateBurnManifestCommand.cs | |||
| @@ -399,6 +399,10 @@ namespace WixToolset.Core.Burn.Bundles | |||
| 399 | writer.WriteAttributeString("InstallArguments", exePackage.InstallCommand); | 399 | writer.WriteAttributeString("InstallArguments", exePackage.InstallCommand); |
| 400 | writer.WriteAttributeString("UninstallArguments", exePackage.UninstallCommand); | 400 | writer.WriteAttributeString("UninstallArguments", exePackage.UninstallCommand); |
| 401 | writer.WriteAttributeString("RepairArguments", exePackage.RepairCommand); | 401 | writer.WriteAttributeString("RepairArguments", exePackage.RepairCommand); |
| 402 | if (!String.IsNullOrEmpty(exePackage.RepairCondition)) | ||
| 403 | { | ||
| 404 | writer.WriteAttributeString("RepairCondition", exePackage.RepairCondition); | ||
| 405 | } | ||
| 402 | writer.WriteAttributeString("Repairable", exePackage.Repairable ? "yes" : "no"); | 406 | writer.WriteAttributeString("Repairable", exePackage.Repairable ? "yes" : "no"); |
| 403 | if (!String.IsNullOrEmpty(exePackage.ExeProtocol)) | 407 | if (!String.IsNullOrEmpty(exePackage.ExeProtocol)) |
| 404 | { | 408 | { |
| @@ -410,6 +414,10 @@ namespace WixToolset.Core.Burn.Bundles | |||
| 410 | writer.WriteAttributeString("ProductCode", msiPackage.ProductCode); | 414 | writer.WriteAttributeString("ProductCode", msiPackage.ProductCode); |
| 411 | writer.WriteAttributeString("Language", msiPackage.ProductLanguage.ToString(CultureInfo.InvariantCulture)); | 415 | writer.WriteAttributeString("Language", msiPackage.ProductLanguage.ToString(CultureInfo.InvariantCulture)); |
| 412 | writer.WriteAttributeString("Version", msiPackage.ProductVersion); | 416 | writer.WriteAttributeString("Version", msiPackage.ProductVersion); |
| 417 | if (!String.IsNullOrEmpty(msiPackage.RepairCondition)) | ||
| 418 | { | ||
| 419 | writer.WriteAttributeString("RepairCondition", msiPackage.RepairCondition); | ||
| 420 | } | ||
| 413 | if (!String.IsNullOrEmpty(msiPackage.UpgradeCode)) | 421 | if (!String.IsNullOrEmpty(msiPackage.UpgradeCode)) |
| 414 | { | 422 | { |
| 415 | writer.WriteAttributeString("UpgradeCode", msiPackage.UpgradeCode); | 423 | writer.WriteAttributeString("UpgradeCode", msiPackage.UpgradeCode); |
| @@ -420,6 +428,11 @@ namespace WixToolset.Core.Burn.Bundles | |||
| 420 | writer.WriteAttributeString("PatchCode", mspPackage.PatchCode); | 428 | writer.WriteAttributeString("PatchCode", mspPackage.PatchCode); |
| 421 | writer.WriteAttributeString("PatchXml", mspPackage.PatchXml); | 429 | writer.WriteAttributeString("PatchXml", mspPackage.PatchXml); |
| 422 | 430 | ||
| 431 | if (!String.IsNullOrEmpty(mspPackage.RepairCondition)) | ||
| 432 | { | ||
| 433 | writer.WriteAttributeString("RepairCondition", mspPackage.RepairCondition); | ||
| 434 | } | ||
| 435 | |||
| 423 | // If there is still a chance that all of our patches will target a narrow set of | 436 | // If there is still a chance that all of our patches will target a narrow set of |
| 424 | // product codes, add the patch list to the overall list. | 437 | // product codes, add the patch list to the overall list. |
| 425 | if (null != targetCodes) | 438 | if (null != targetCodes) |
diff --git a/src/WixToolset.Core/Compiler_Bundle.cs b/src/WixToolset.Core/Compiler_Bundle.cs index 779ad376..d6e9e7af 100644 --- a/src/WixToolset.Core/Compiler_Bundle.cs +++ b/src/WixToolset.Core/Compiler_Bundle.cs | |||
| @@ -1974,6 +1974,7 @@ namespace WixToolset.Core | |||
| 1974 | var perMachine = YesNoDefaultType.NotSet; | 1974 | var perMachine = YesNoDefaultType.NotSet; |
| 1975 | string detectCondition = null; | 1975 | string detectCondition = null; |
| 1976 | string protocol = null; | 1976 | string protocol = null; |
| 1977 | string repairCondition = null; | ||
| 1977 | var installSize = CompilerConstants.IntegerNotSet; | 1978 | var installSize = CompilerConstants.IntegerNotSet; |
| 1978 | string msuKB = null; | 1979 | string msuKB = null; |
| 1979 | var enableFeatureSelection = YesNoType.NotSet; | 1980 | var enableFeatureSelection = YesNoType.NotSet; |
| @@ -2093,6 +2094,10 @@ namespace WixToolset.Core | |||
| 2093 | protocol = this.Core.GetAttributeValue(sourceLineNumbers, attrib); | 2094 | protocol = this.Core.GetAttributeValue(sourceLineNumbers, attrib); |
| 2094 | allowed = (packageType == WixBundlePackageType.Exe); | 2095 | allowed = (packageType == WixBundlePackageType.Exe); |
| 2095 | break; | 2096 | break; |
| 2097 | case "RepairCondition": | ||
| 2098 | repairCondition = this.Core.GetAttributeValue(sourceLineNumbers, attrib, EmptyRule.CanBeEmpty); | ||
| 2099 | allowed = (packageType == WixBundlePackageType.Exe || packageType == WixBundlePackageType.Msi || packageType == WixBundlePackageType.Msp); | ||
| 2100 | break; | ||
| 2096 | case "InstallSize": | 2101 | case "InstallSize": |
| 2097 | installSize = this.Core.GetAttributeIntegerValue(sourceLineNumbers, attrib, 0, Int32.MaxValue); | 2102 | installSize = this.Core.GetAttributeIntegerValue(sourceLineNumbers, attrib, 0, Int32.MaxValue); |
| 2098 | break; | 2103 | break; |
| @@ -2340,6 +2345,7 @@ namespace WixToolset.Core | |||
| 2340 | InstallCommand = installArguments, | 2345 | InstallCommand = installArguments, |
| 2341 | RepairCommand = repairArguments, | 2346 | RepairCommand = repairArguments, |
| 2342 | UninstallCommand = uninstallArguments, | 2347 | UninstallCommand = uninstallArguments, |
| 2348 | RepairCondition = repairCondition, | ||
| 2343 | ExeProtocol = protocol | 2349 | ExeProtocol = protocol |
| 2344 | }); | 2350 | }); |
| 2345 | break; | 2351 | break; |
| @@ -2351,6 +2357,7 @@ namespace WixToolset.Core | |||
| 2351 | 2357 | ||
| 2352 | this.Core.AddSymbol(new WixBundleMsiPackageSymbol(sourceLineNumbers, id) | 2358 | this.Core.AddSymbol(new WixBundleMsiPackageSymbol(sourceLineNumbers, id) |
| 2353 | { | 2359 | { |
| 2360 | RepairCondition = repairCondition, | ||
| 2354 | Attributes = msiAttributes | 2361 | Attributes = msiAttributes |
| 2355 | }); | 2362 | }); |
| 2356 | break; | 2363 | break; |
| @@ -2361,6 +2368,7 @@ namespace WixToolset.Core | |||
| 2361 | 2368 | ||
| 2362 | this.Core.AddSymbol(new WixBundleMspPackageSymbol(sourceLineNumbers, id) | 2369 | this.Core.AddSymbol(new WixBundleMspPackageSymbol(sourceLineNumbers, id) |
| 2363 | { | 2370 | { |
| 2371 | RepairCondition = repairCondition, | ||
| 2364 | Attributes = mspAttributes | 2372 | Attributes = mspAttributes |
| 2365 | }); | 2373 | }); |
| 2366 | break; | 2374 | break; |
