@joebigelow / wix / commits / 72601392

Set ExePackage/@Uninstallable in bundle manifests

Rob Mensching committed Mar 2, 2022 at 11:37 UTC 726013926b7cef670d228fabb0a65c6a13fc5835
7 files changed +19 -7
src/api/api.v3.ncrunchsolution new
+6
@@ -0,0 +1,6 @@
1 +<SolutionConfiguration>
2 + <Settings>
3 + <AllowParallelTestExecution>True</AllowParallelTestExecution>
4 + <SolutionConfigured>True</SolutionConfigured>
5 + </Settings>
6 +</SolutionConfiguration>
\ No newline at end of file
src/api/wix/WixToolset.Data/Symbols/WixBundleExePackageSymbol.cs
+3 -1
@@ -89,6 +89,8 @@ namespace WixToolset.Data.Symbols
89 set => this.Set((int)WixBundleExePackageSymbolFields.ExeProtocol, value);
90 }
91
92 - public bool Repairable => !String.IsNullOrEmpty(this.RepairCommand);
92 + public bool Repairable => this.RepairCommand != null;
93 +
94 + public bool Uninstallable => this.UninstallCommand != null;
95 }
96 }
src/api/wix/test/WixToolsetTest.Data/SerializeFixture.cs
+4 -1
@@ -25,9 +25,10 @@ namespace WixToolsetTest.Data
25
26 section.AddSymbol(new ComponentSymbol(sln, new Identifier(AccessModifier.Global, "TestComponent"))
27 {
28 - ComponentId = new Guid(1, 0, 0, new byte[8]).ToString("B"),
28 + ComponentId = String.Empty,
29 DirectoryRef = "TestFolder",
30 Location = ComponentLocation.Either,
31 + KeyPath = null,
32 });
33
34 var intermediate = new Intermediate("TestIntermediate", IntermediateLevels.Compiled, new[] { section }, null);
@@ -50,8 +51,10 @@ namespace WixToolsetTest.Data
51
52 Assert.Equal("TestComponent", symbol.Id.Id);
53 Assert.Equal(AccessModifier.Global, symbol.Id.Access);
54 + Assert.Equal(String.Empty, symbol.ComponentId);
55 Assert.Equal("TestFolder", symbol.DirectoryRef);
56 Assert.Equal(ComponentLocation.Either, symbol.Location);
57 + Assert.Null(symbol.KeyPath);
58 }
59 finally
60 {
src/wix/WixToolset.Core.Burn/Bundles/CreateBurnManifestCommand.cs
+1
@@ -386,6 +386,7 @@ namespace WixToolset.Core.Burn.Bundles
386 writer.WriteAttributeString("DetectCondition", exePackage.DetectCondition);
387 writer.WriteAttributeString("InstallArguments", exePackage.InstallCommand);
388 writer.WriteAttributeString("UninstallArguments", exePackage.UninstallCommand);
389 + writer.WriteAttributeString("Uninstallable", exePackage.Uninstallable ? "yes" : "no");
390 writer.WriteAttributeString("RepairArguments", exePackage.RepairCommand);
391 writer.WriteAttributeString("Repairable", exePackage.Repairable ? "yes" : "no");
392 if (!String.IsNullOrEmpty(exePackage.ExeProtocol))
src/wix/test/WixToolsetTest.CoreIntegration/BundleManifestFixture.cs
+2 -2
@@ -311,8 +311,8 @@ namespace WixToolsetTest.CoreIntegration
311 { "ExePackage", new List<string> { "CacheId", "InstallSize", "Size" } },
312 };
313 Assert.Equal(2, exePackageElements.Count);
314 - Assert.Equal("<ExePackage Id='credwiz.exe' Cache='keep' CacheId='*' InstallSize='*' Size='*' PerMachine='yes' Permanent='yes' Vital='yes' RollbackBoundaryForward='WixDefaultBoundary' LogPathVariable='WixBundleLog_credwiz.exe' RollbackLogPathVariable='WixBundleRollbackLog_credwiz.exe' DetectCondition='none' InstallArguments='' UninstallArguments='' RepairArguments='' Repairable='no'><PayloadRef Id='credwiz.exe' /><PayloadRef Id='SourceFilePayload' /></ExePackage>", exePackageElements[0].GetTestXml(ignoreAttributesByElementName));
315 - Assert.Equal("<ExePackage Id='cscript.exe' Cache='keep' CacheId='*' InstallSize='*' Size='*' PerMachine='yes' Permanent='yes' Vital='yes' RollbackBoundaryBackward='WixDefaultBoundary' LogPathVariable='WixBundleLog_cscript.exe' RollbackLogPathVariable='WixBundleRollbackLog_cscript.exe' DetectCondition='none' InstallArguments='' UninstallArguments='' RepairArguments='' Repairable='no'><PayloadRef Id='cscript.exe' /><PayloadRef Id='SourceFilePayload' /></ExePackage>", exePackageElements[1].GetTestXml(ignoreAttributesByElementName));
314 + Assert.Equal("<ExePackage Id='credwiz.exe' Cache='keep' CacheId='*' InstallSize='*' Size='*' PerMachine='yes' Permanent='yes' Vital='yes' RollbackBoundaryForward='WixDefaultBoundary' LogPathVariable='WixBundleLog_credwiz.exe' RollbackLogPathVariable='WixBundleRollbackLog_credwiz.exe' DetectCondition='none' InstallArguments='' UninstallArguments='-foo' Uninstallable='yes' RepairArguments='' Repairable='no'><PayloadRef Id='credwiz.exe' /><PayloadRef Id='SourceFilePayload' /></ExePackage>", exePackageElements[0].GetTestXml(ignoreAttributesByElementName));
315 + Assert.Equal("<ExePackage Id='cscript.exe' Cache='keep' CacheId='*' InstallSize='*' Size='*' PerMachine='yes' Permanent='yes' Vital='yes' RollbackBoundaryBackward='WixDefaultBoundary' LogPathVariable='WixBundleLog_cscript.exe' RollbackLogPathVariable='WixBundleRollbackLog_cscript.exe' DetectCondition='none' InstallArguments='' UninstallArguments='' Uninstallable='yes' RepairArguments='' Repairable='no'><PayloadRef Id='cscript.exe' /><PayloadRef Id='SourceFilePayload' /></ExePackage>", exePackageElements[1].GetTestXml(ignoreAttributesByElementName));
316 }
317 }
318
src/wix/test/WixToolsetTest.CoreIntegration/PackagePayloadFixture.cs
+1 -1
@@ -48,7 +48,7 @@ namespace WixToolsetTest.CoreIntegration
48 { "ExePackage", new List<string> { "CacheId", "InstallSize", "Size" } },
49 };
50 Assert.Equal(1, exePackageElements.Count);
51 - Assert.Equal("<ExePackage Id='PackagePayloadInPayloadGroup' Cache='keep' CacheId='*' InstallSize='*' Size='*' PerMachine='yes' Permanent='yes' Vital='yes' RollbackBoundaryForward='WixDefaultBoundary' RollbackBoundaryBackward='WixDefaultBoundary' LogPathVariable='WixBundleLog_PackagePayloadInPayloadGroup' RollbackLogPathVariable='WixBundleRollbackLog_PackagePayloadInPayloadGroup' DetectCondition='none' InstallArguments='' UninstallArguments='' RepairArguments='' Repairable='no'><PayloadRef Id='burn.exe' /></ExePackage>", exePackageElements[0].GetTestXml(ignoreAttributesByElementName));
51 + Assert.Equal("<ExePackage Id='PackagePayloadInPayloadGroup' Cache='keep' CacheId='*' InstallSize='*' Size='*' PerMachine='yes' Permanent='yes' Vital='yes' RollbackBoundaryForward='WixDefaultBoundary' RollbackBoundaryBackward='WixDefaultBoundary' LogPathVariable='WixBundleLog_PackagePayloadInPayloadGroup' RollbackLogPathVariable='WixBundleRollbackLog_PackagePayloadInPayloadGroup' DetectCondition='none' InstallArguments='' UninstallArguments='' Uninstallable='no' RepairArguments='' Repairable='no'><PayloadRef Id='burn.exe' /></ExePackage>", exePackageElements[0].GetTestXml(ignoreAttributesByElementName));
52
53 var payloadElements = extractResult.SelectManifestNodes("/burn:BurnManifest/burn:Payload[@Id='burn.exe']");
54 Assert.Equal(1, payloadElements.Count);
src/wix/test/WixToolsetTest.CoreIntegration/TestData/SharedPayloadsBetweenPackages/SharedPayloadsBetweenPackages.wxs
+2 -2
@@ -2,10 +2,10 @@
2 <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
3 <Fragment>
4 <PackageGroup Id="BundlePackages">
5 - <ExePackage SourceFile="C:\Windows\system32\credwiz.exe" Permanent="yes" DetectCondition="none">
5 + <ExePackage SourceFile="C:\Windows\system32\credwiz.exe" Permanent="yes" DetectCondition="none" UninstallArguments="-foo">
6 <PayloadGroupRef Id="SharedPayloads" />
7 </ExePackage>
8 - <ExePackage SourceFile="C:\Windows\system32\cscript.exe" Permanent="yes" DetectCondition="none">
8 + <ExePackage SourceFile="C:\Windows\system32\cscript.exe" Permanent="yes" DetectCondition="none" UninstallArguments="">
9 <PayloadGroupRef Id="SharedPayloads" />
10 </ExePackage>
11 </PackageGroup>