Correctly schedule custom actions in Merge Modules
Fixes 7098
Rob Mensching committed
Dec 22, 2022 at 01:04 UTC
34692d57dcc693ec017dda1711f25adbc7759a1c
5 files changed
+99
-1
src/wix/WixToolset.Core.WindowsInstaller/Bind/CreateWindowsInstallerDataFromIRCommand.cs
+1
-1
@@ -1136,7 +1136,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
1136
if (SectionType.Module == this.Section.Type)
1137
{
1138
row[0] = symbol.Action;
1139
- if (0 != symbol.Sequence)
1139
+ if (symbol.Sequence.HasValue && symbol.Sequence.Value != 0)
1140
{
1141
row[1] = symbol.Sequence;
1142
}
src/wix/test/WixToolsetTest.CoreIntegration/CustomActionFixture.cs
+72
@@ -64,6 +64,78 @@ namespace WixToolsetTest.CoreIntegration
64
}
65
}
66
67
+ [Fact]
68
+ public void CanScheduleCustomActionInModule()
69
+ {
70
+ var folder = TestData.Get(@"TestData");
71
+
72
+ using (var fs = new DisposableFileSystem())
73
+ {
74
+ var baseFolder = fs.GetFolder();
75
+ var intermediateFolder = Path.Combine(baseFolder, "obj");
76
+ var msmPath = Path.Combine(baseFolder, "bin", "test.msm");
77
+
78
+ var result = WixRunner.Execute(new[]
79
+ {
80
+ "build",
81
+ Path.Combine(folder, "CustomAction", "MsmCustomAction.wxs"),
82
+ Path.Combine(folder, "CustomAction", "SimpleCustomAction.wxs"),
83
+ "-bindpath", Path.Combine(folder, ".Data"),
84
+ "-intermediateFolder", intermediateFolder,
85
+ "-o", msmPath
86
+ });
87
+
88
+ result.AssertSuccess();
89
+
90
+ var rows = Query.QueryDatabase(msmPath, new[] { "CustomAction", "ModuleInstallExecuteSequence" });
91
+ WixAssert.CompareLineByLine(new[]
92
+ {
93
+ "CustomAction:Action1.243FB739_4D05_472F_9CFB_EF6B1017B6DE\t1\tBinary1.243FB739_4D05_472F_9CFB_EF6B1017B6DE\tEntryPoint1\t",
94
+ "ModuleInstallExecuteSequence:Action1.243FB739_4D05_472F_9CFB_EF6B1017B6DE\t\tInstallFiles\t1\t",
95
+ "ModuleInstallExecuteSequence:CreateFolders\t3700\t\t\t",
96
+ "ModuleInstallExecuteSequence:InstallFiles\t4000\t\t\t",
97
+ "ModuleInstallExecuteSequence:RemoveFiles\t3500\t\t\t",
98
+ "ModuleInstallExecuteSequence:RemoveFolders\t3600\t\t\t"
99
+ }, rows);
100
+ }
101
+ }
102
+
103
+ [Fact]
104
+ public void CanScheduleSetPropertyInModule()
105
+ {
106
+ var folder = TestData.Get(@"TestData");
107
+
108
+ using (var fs = new DisposableFileSystem())
109
+ {
110
+ var baseFolder = fs.GetFolder();
111
+ var intermediateFolder = Path.Combine(baseFolder, "obj");
112
+ var msmPath = Path.Combine(baseFolder, "bin", "test.msm");
113
+
114
+ var result = WixRunner.Execute(new[]
115
+ {
116
+ "build",
117
+ Path.Combine(folder, "SetProperty", "MsmSetProperty.wxs"),
118
+ "-bindpath", Path.Combine(folder, "SetProperty", "data"),
119
+ "-intermediateFolder", intermediateFolder,
120
+ "-o", msmPath
121
+ });
122
+
123
+ result.AssertSuccess();
124
+
125
+ var rows = Query.QueryDatabase(msmPath, new[] { "CustomAction", "ModuleInstallExecuteSequence" });
126
+ WixAssert.CompareLineByLine(new[]
127
+ {
128
+ "CustomAction:SetINSTALLLOCATION.243FB739_4D05_472F_9CFB_EF6B1017B6DE\t51\tINSTALLLOCATION.243FB739_4D05_472F_9CFB_EF6B1017B6DE\t[INSTALLFOLDER.243FB739_4D05_472F_9CFB_EF6B1017B6DE]\t",
129
+ "ModuleInstallExecuteSequence:CostFinalize\t1000\t\t\t",
130
+ "ModuleInstallExecuteSequence:CreateFolders\t3700\t\t\t",
131
+ "ModuleInstallExecuteSequence:InstallFiles\t4000\t\t\t",
132
+ "ModuleInstallExecuteSequence:RemoveFiles\t3500\t\t\t",
133
+ "ModuleInstallExecuteSequence:RemoveFolders\t3600\t\t\t","" +
134
+ "ModuleInstallExecuteSequence:SetINSTALLLOCATION.243FB739_4D05_472F_9CFB_EF6B1017B6DE\t\tCostFinalize\t1\t"
135
+ }, rows);
136
+ }
137
+ }
138
+
139
[Fact]
140
public void PopulatesCustomActionTable()
141
{
src/wix/test/WixToolsetTest.CoreIntegration/TestData/.Data/test.txt
new
+1
@@ -0,0 +1 @@
1
+This is test.txt in .Data.
src/wix/test/WixToolsetTest.CoreIntegration/TestData/CustomAction/MsmCustomAction.wxs
new
+13
@@ -0,0 +1,13 @@
1
+<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
2
+ <Module Id="MergeModule1" Language="1033" Version="1.0.0.0" Guid="243FB739-4D05-472F-9CFB-EF6B1017B6DE">
3
+ <ComponentGroupRef Id="ProductComponents" />
4
+ </Module>
5
+
6
+ <Fragment>
7
+ <ComponentGroup Id="MinimalComponentGroup" Directory="TARGETDIR">
8
+ <Component Guid="243FB739-4D05-472F-9CFB-EF6B1017B6DE">
9
+ <File Source="test.txt" />
10
+ </Component>
11
+ </ComponentGroup>
12
+ </Fragment>
13
+</Wix>
src/wix/test/WixToolsetTest.CoreIntegration/TestData/SetProperty/MsmSetProperty.wxs
new
+12
@@ -0,0 +1,12 @@
1
+<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
2
+ <Module Id="MergeModule1" Language="1033" Version="1.0.0.0" Guid="243FB739-4D05-472F-9CFB-EF6B1017B6DE">
3
+
4
+ <Directory Id="InstallFolder">
5
+ <Component Guid="243FB739-4D05-472F-9CFB-EF6B1017B6DE">
6
+ <File Source="test.txt" />
7
+ </Component>
8
+ </Directory>
9
+
10
+ <SetProperty Id="INSTALLLOCATION" Value="[INSTALLFOLDER]" After="CostFinalize" />
11
+ </Module>
12
+</Wix>