diff options
author | Rob Mensching <rob@firegiant.com> | 2022-12-22 01:04:23 -0800 |
---|---|---|
committer | Rob Mensching <rob@firegiant.com> | 2022-12-22 01:52:49 -0800 |
commit | 34692d57dcc693ec017dda1711f25adbc7759a1c (patch) | |
tree | 6448a0245c3c35cafa80d5e41d8bf6e055519d8f /src | |
parent | 6bc32281a99bea30541f77dd0bf9e9658753afdc (diff) | |
download | wix-34692d57dcc693ec017dda1711f25adbc7759a1c.tar.gz wix-34692d57dcc693ec017dda1711f25adbc7759a1c.tar.bz2 wix-34692d57dcc693ec017dda1711f25adbc7759a1c.zip |
Correctly schedule custom actions in Merge Modules
Fixes 7098
Diffstat (limited to 'src')
5 files changed, 99 insertions, 1 deletions
diff --git a/src/wix/WixToolset.Core.WindowsInstaller/Bind/CreateWindowsInstallerDataFromIRCommand.cs b/src/wix/WixToolset.Core.WindowsInstaller/Bind/CreateWindowsInstallerDataFromIRCommand.cs index e634a50e..49ae1256 100644 --- a/src/wix/WixToolset.Core.WindowsInstaller/Bind/CreateWindowsInstallerDataFromIRCommand.cs +++ b/src/wix/WixToolset.Core.WindowsInstaller/Bind/CreateWindowsInstallerDataFromIRCommand.cs | |||
@@ -1136,7 +1136,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
1136 | if (SectionType.Module == this.Section.Type) | 1136 | if (SectionType.Module == this.Section.Type) |
1137 | { | 1137 | { |
1138 | row[0] = symbol.Action; | 1138 | row[0] = symbol.Action; |
1139 | if (0 != symbol.Sequence) | 1139 | if (symbol.Sequence.HasValue && symbol.Sequence.Value != 0) |
1140 | { | 1140 | { |
1141 | row[1] = symbol.Sequence; | 1141 | row[1] = symbol.Sequence; |
1142 | } | 1142 | } |
diff --git a/src/wix/test/WixToolsetTest.CoreIntegration/CustomActionFixture.cs b/src/wix/test/WixToolsetTest.CoreIntegration/CustomActionFixture.cs index fea82267..035b0641 100644 --- a/src/wix/test/WixToolsetTest.CoreIntegration/CustomActionFixture.cs +++ b/src/wix/test/WixToolsetTest.CoreIntegration/CustomActionFixture.cs | |||
@@ -65,6 +65,78 @@ namespace WixToolsetTest.CoreIntegration | |||
65 | } | 65 | } |
66 | 66 | ||
67 | [Fact] | 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] | ||
68 | public void PopulatesCustomActionTable() | 140 | public void PopulatesCustomActionTable() |
69 | { | 141 | { |
70 | var folder = TestData.Get(@"TestData"); | 142 | var folder = TestData.Get(@"TestData"); |
diff --git a/src/wix/test/WixToolsetTest.CoreIntegration/TestData/.Data/test.txt b/src/wix/test/WixToolsetTest.CoreIntegration/TestData/.Data/test.txt new file mode 100644 index 00000000..fb6c6684 --- /dev/null +++ b/src/wix/test/WixToolsetTest.CoreIntegration/TestData/.Data/test.txt | |||
@@ -0,0 +1 @@ | |||
This is test.txt in .Data. | |||
diff --git a/src/wix/test/WixToolsetTest.CoreIntegration/TestData/CustomAction/MsmCustomAction.wxs b/src/wix/test/WixToolsetTest.CoreIntegration/TestData/CustomAction/MsmCustomAction.wxs new file mode 100644 index 00000000..3bae1783 --- /dev/null +++ b/src/wix/test/WixToolsetTest.CoreIntegration/TestData/CustomAction/MsmCustomAction.wxs | |||
@@ -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> | ||
diff --git a/src/wix/test/WixToolsetTest.CoreIntegration/TestData/SetProperty/MsmSetProperty.wxs b/src/wix/test/WixToolsetTest.CoreIntegration/TestData/SetProperty/MsmSetProperty.wxs new file mode 100644 index 00000000..156922c2 --- /dev/null +++ b/src/wix/test/WixToolsetTest.CoreIntegration/TestData/SetProperty/MsmSetProperty.wxs | |||
@@ -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> | ||