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>