diff options
| author | Rob Mensching <rob@firegiant.com> | 2020-01-24 15:27:20 -0800 |
|---|---|---|
| committer | Rob Mensching <rob@firegiant.com> | 2020-02-05 16:15:47 -0800 |
| commit | 6ff680e386b1543ad1a58d1b1d465ce8aa20bc7d (patch) | |
| tree | c717333cd10d5592e59dfb898b391275bba1f389 /src/WixToolset.Core.WindowsInstaller/Bind/CreateOutputFromIRCommand.cs | |
| parent | 6e2e67ab55c75f4655397588c0dcc64f50d22f92 (diff) | |
| download | wix-6ff680e386b1543ad1a58d1b1d465ce8aa20bc7d.tar.gz wix-6ff680e386b1543ad1a58d1b1d465ce8aa20bc7d.tar.bz2 wix-6ff680e386b1543ad1a58d1b1d465ce8aa20bc7d.zip | |
Start on new patch infrastructure
Diffstat (limited to 'src/WixToolset.Core.WindowsInstaller/Bind/CreateOutputFromIRCommand.cs')
| -rw-r--r-- | src/WixToolset.Core.WindowsInstaller/Bind/CreateOutputFromIRCommand.cs | 353 |
1 files changed, 166 insertions, 187 deletions
diff --git a/src/WixToolset.Core.WindowsInstaller/Bind/CreateOutputFromIRCommand.cs b/src/WixToolset.Core.WindowsInstaller/Bind/CreateOutputFromIRCommand.cs index 31d0b3a6..5707f7ce 100644 --- a/src/WixToolset.Core.WindowsInstaller/Bind/CreateOutputFromIRCommand.cs +++ b/src/WixToolset.Core.WindowsInstaller/Bind/CreateOutputFromIRCommand.cs | |||
| @@ -40,193 +40,193 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
| 40 | 40 | ||
| 41 | public void Execute() | 41 | public void Execute() |
| 42 | { | 42 | { |
| 43 | var output = new WindowsInstallerData(this.Section.Tuples.First().SourceLineNumbers); | 43 | this.Output = new WindowsInstallerData(this.Section.Tuples.First().SourceLineNumbers) |
| 44 | output.Codepage = this.Section.Codepage; | 44 | { |
| 45 | output.Type = SectionTypeToOutputType(this.Section.Type); | 45 | Codepage = this.Section.Codepage, |
| 46 | 46 | Type = SectionTypeToOutputType(this.Section.Type) | |
| 47 | this.AddSectionToOutput(this.Section, output); | 47 | }; |
| 48 | 48 | ||
| 49 | this.Output = output; | 49 | this.AddSectionToOutput(); |
| 50 | } | 50 | } |
| 51 | 51 | ||
| 52 | private void AddSectionToOutput(IntermediateSection section, WindowsInstallerData output) | 52 | private void AddSectionToOutput() |
| 53 | { | 53 | { |
| 54 | foreach (var tuple in section.Tuples) | 54 | foreach (var tuple in this.Section.Tuples) |
| 55 | { | 55 | { |
| 56 | switch (tuple.Definition.Type) | 56 | switch (tuple.Definition.Type) |
| 57 | { | 57 | { |
| 58 | case TupleDefinitionType.AppSearch: | 58 | case TupleDefinitionType.AppSearch: |
| 59 | this.AddTupleDefaultly(tuple, output); | 59 | this.AddTupleDefaultly(tuple); |
| 60 | output.EnsureTable(this.TableDefinitions["Signature"]); | 60 | this.Output.EnsureTable(this.TableDefinitions["Signature"]); |
| 61 | break; | 61 | break; |
| 62 | 62 | ||
| 63 | case TupleDefinitionType.Assembly: | 63 | case TupleDefinitionType.Assembly: |
| 64 | this.AddAssemblyTuple((AssemblyTuple)tuple, output); | 64 | this.AddAssemblyTuple((AssemblyTuple)tuple); |
| 65 | break; | 65 | break; |
| 66 | 66 | ||
| 67 | case TupleDefinitionType.Binary: | 67 | case TupleDefinitionType.Binary: |
| 68 | this.AddTupleDefaultly(tuple, output, idIsPrimaryKey: true); | 68 | this.AddTupleDefaultly(tuple, idIsPrimaryKey: true); |
| 69 | break; | 69 | break; |
| 70 | 70 | ||
| 71 | case TupleDefinitionType.BBControl: | 71 | case TupleDefinitionType.BBControl: |
| 72 | this.AddBBControlTuple((BBControlTuple)tuple, output); | 72 | this.AddBBControlTuple((BBControlTuple)tuple); |
| 73 | break; | 73 | break; |
| 74 | 74 | ||
| 75 | case TupleDefinitionType.Class: | 75 | case TupleDefinitionType.Class: |
| 76 | this.AddClassTuple((ClassTuple)tuple, output); | 76 | this.AddClassTuple((ClassTuple)tuple); |
| 77 | break; | 77 | break; |
| 78 | 78 | ||
| 79 | case TupleDefinitionType.Control: | 79 | case TupleDefinitionType.Control: |
| 80 | this.AddControlTuple((ControlTuple)tuple, output); | 80 | this.AddControlTuple((ControlTuple)tuple); |
| 81 | break; | 81 | break; |
| 82 | 82 | ||
| 83 | case TupleDefinitionType.Component: | 83 | case TupleDefinitionType.Component: |
| 84 | this.AddComponentTuple((ComponentTuple)tuple, output); | 84 | this.AddComponentTuple((ComponentTuple)tuple); |
| 85 | break; | 85 | break; |
| 86 | 86 | ||
| 87 | case TupleDefinitionType.CustomAction: | 87 | case TupleDefinitionType.CustomAction: |
| 88 | this.AddCustomActionTuple((CustomActionTuple)tuple, output); | 88 | this.AddCustomActionTuple((CustomActionTuple)tuple); |
| 89 | break; | 89 | break; |
| 90 | 90 | ||
| 91 | case TupleDefinitionType.Dialog: | 91 | case TupleDefinitionType.Dialog: |
| 92 | this.AddDialogTuple((DialogTuple)tuple, output); | 92 | this.AddDialogTuple((DialogTuple)tuple); |
| 93 | break; | 93 | break; |
| 94 | 94 | ||
| 95 | case TupleDefinitionType.Directory: | 95 | case TupleDefinitionType.Directory: |
| 96 | this.AddDirectoryTuple((DirectoryTuple)tuple, output); | 96 | this.AddDirectoryTuple((DirectoryTuple)tuple); |
| 97 | break; | 97 | break; |
| 98 | 98 | ||
| 99 | case TupleDefinitionType.Environment: | 99 | case TupleDefinitionType.Environment: |
| 100 | this.AddEnvironmentTuple((EnvironmentTuple)tuple, output); | 100 | this.AddEnvironmentTuple((EnvironmentTuple)tuple); |
| 101 | break; | 101 | break; |
| 102 | 102 | ||
| 103 | case TupleDefinitionType.Error: | 103 | case TupleDefinitionType.Error: |
| 104 | this.AddErrorTuple((ErrorTuple)tuple, output); | 104 | this.AddErrorTuple((ErrorTuple)tuple); |
| 105 | break; | 105 | break; |
| 106 | 106 | ||
| 107 | case TupleDefinitionType.Feature: | 107 | case TupleDefinitionType.Feature: |
| 108 | this.AddFeatureTuple((FeatureTuple)tuple, output); | 108 | this.AddFeatureTuple((FeatureTuple)tuple); |
| 109 | break; | 109 | break; |
| 110 | 110 | ||
| 111 | case TupleDefinitionType.File: | 111 | case TupleDefinitionType.File: |
| 112 | this.AddFileTuple((FileTuple)tuple, output); | 112 | this.AddFileTuple((FileTuple)tuple); |
| 113 | break; | 113 | break; |
| 114 | 114 | ||
| 115 | case TupleDefinitionType.Icon: | 115 | case TupleDefinitionType.Icon: |
| 116 | this.AddTupleDefaultly(tuple, output, idIsPrimaryKey: true); | 116 | this.AddTupleDefaultly(tuple, idIsPrimaryKey: true); |
| 117 | break; | 117 | break; |
| 118 | 118 | ||
| 119 | case TupleDefinitionType.IniFile: | 119 | case TupleDefinitionType.IniFile: |
| 120 | this.AddIniFileTuple((IniFileTuple)tuple, output); | 120 | this.AddIniFileTuple((IniFileTuple)tuple); |
| 121 | break; | 121 | break; |
| 122 | 122 | ||
| 123 | case TupleDefinitionType.Media: | 123 | case TupleDefinitionType.Media: |
| 124 | this.AddMediaTuple((MediaTuple)tuple, output); | 124 | this.AddMediaTuple((MediaTuple)tuple); |
| 125 | break; | 125 | break; |
| 126 | 126 | ||
| 127 | case TupleDefinitionType.ModuleConfiguration: | 127 | case TupleDefinitionType.ModuleConfiguration: |
| 128 | this.AddModuleConfigurationTuple((ModuleConfigurationTuple)tuple, output); | 128 | this.AddModuleConfigurationTuple((ModuleConfigurationTuple)tuple); |
| 129 | break; | 129 | break; |
| 130 | 130 | ||
| 131 | case TupleDefinitionType.MsiEmbeddedUI: | 131 | case TupleDefinitionType.MsiEmbeddedUI: |
| 132 | this.AddMsiEmbeddedUITuple((MsiEmbeddedUITuple)tuple, output); | 132 | this.AddMsiEmbeddedUITuple((MsiEmbeddedUITuple)tuple); |
| 133 | break; | 133 | break; |
| 134 | 134 | ||
| 135 | case TupleDefinitionType.MsiFileHash: | 135 | case TupleDefinitionType.MsiFileHash: |
| 136 | this.AddMsiFileHashTuple((MsiFileHashTuple)tuple, output); | 136 | this.AddMsiFileHashTuple((MsiFileHashTuple)tuple); |
| 137 | break; | 137 | break; |
| 138 | 138 | ||
| 139 | case TupleDefinitionType.MsiServiceConfig: | 139 | case TupleDefinitionType.MsiServiceConfig: |
| 140 | this.AddMsiServiceConfigTuple((MsiServiceConfigTuple)tuple, output); | 140 | this.AddMsiServiceConfigTuple((MsiServiceConfigTuple)tuple); |
| 141 | break; | 141 | break; |
| 142 | 142 | ||
| 143 | case TupleDefinitionType.MsiServiceConfigFailureActions: | 143 | case TupleDefinitionType.MsiServiceConfigFailureActions: |
| 144 | this.AddMsiServiceConfigFailureActionsTuple((MsiServiceConfigFailureActionsTuple)tuple, output); | 144 | this.AddMsiServiceConfigFailureActionsTuple((MsiServiceConfigFailureActionsTuple)tuple); |
| 145 | break; | 145 | break; |
| 146 | 146 | ||
| 147 | case TupleDefinitionType.MsiShortcutProperty: | 147 | case TupleDefinitionType.MsiShortcutProperty: |
| 148 | this.AddTupleDefaultly(tuple, output, idIsPrimaryKey: true); | 148 | this.AddTupleDefaultly(tuple, idIsPrimaryKey: true); |
| 149 | break; | 149 | break; |
| 150 | 150 | ||
| 151 | case TupleDefinitionType.MoveFile: | 151 | case TupleDefinitionType.MoveFile: |
| 152 | this.AddMoveFileTuple((MoveFileTuple)tuple, output); | 152 | this.AddMoveFileTuple((MoveFileTuple)tuple); |
| 153 | break; | 153 | break; |
| 154 | 154 | ||
| 155 | case TupleDefinitionType.ProgId: | 155 | case TupleDefinitionType.ProgId: |
| 156 | this.AddTupleDefaultly(tuple, output); | 156 | this.AddTupleDefaultly(tuple); |
| 157 | output.EnsureTable(this.TableDefinitions["Extension"]); | 157 | this.Output.EnsureTable(this.TableDefinitions["Extension"]); |
| 158 | break; | 158 | break; |
| 159 | 159 | ||
| 160 | case TupleDefinitionType.Property: | 160 | case TupleDefinitionType.Property: |
| 161 | this.AddPropertyTuple((PropertyTuple)tuple, output); | 161 | this.AddPropertyTuple((PropertyTuple)tuple); |
| 162 | break; | 162 | break; |
| 163 | 163 | ||
| 164 | case TupleDefinitionType.RemoveFile: | 164 | case TupleDefinitionType.RemoveFile: |
| 165 | this.AddRemoveFileTuple((RemoveFileTuple)tuple, output); | 165 | this.AddRemoveFileTuple((RemoveFileTuple)tuple); |
| 166 | break; | 166 | break; |
| 167 | 167 | ||
| 168 | case TupleDefinitionType.Registry: | 168 | case TupleDefinitionType.Registry: |
| 169 | this.AddRegistryTuple((RegistryTuple)tuple, output); | 169 | this.AddRegistryTuple((RegistryTuple)tuple); |
| 170 | break; | 170 | break; |
| 171 | 171 | ||
| 172 | case TupleDefinitionType.RegLocator: | 172 | case TupleDefinitionType.RegLocator: |
| 173 | this.AddRegLocatorTuple((RegLocatorTuple)tuple, output); | 173 | this.AddRegLocatorTuple((RegLocatorTuple)tuple); |
| 174 | break; | 174 | break; |
| 175 | 175 | ||
| 176 | case TupleDefinitionType.RemoveRegistry: | 176 | case TupleDefinitionType.RemoveRegistry: |
| 177 | this.AddRemoveRegistryTuple((RemoveRegistryTuple)tuple, output); | 177 | this.AddRemoveRegistryTuple((RemoveRegistryTuple)tuple); |
| 178 | break; | 178 | break; |
| 179 | 179 | ||
| 180 | case TupleDefinitionType.ReserveCost: | 180 | case TupleDefinitionType.ReserveCost: |
| 181 | this.AddTupleDefaultly(tuple, output, idIsPrimaryKey: true); | 181 | this.AddTupleDefaultly(tuple, idIsPrimaryKey: true); |
| 182 | break; | 182 | break; |
| 183 | 183 | ||
| 184 | case TupleDefinitionType.ServiceControl: | 184 | case TupleDefinitionType.ServiceControl: |
| 185 | this.AddServiceControlTuple((ServiceControlTuple)tuple, output); | 185 | this.AddServiceControlTuple((ServiceControlTuple)tuple); |
| 186 | break; | 186 | break; |
| 187 | 187 | ||
| 188 | case TupleDefinitionType.ServiceInstall: | 188 | case TupleDefinitionType.ServiceInstall: |
| 189 | this.AddServiceInstallTuple((ServiceInstallTuple)tuple, output); | 189 | this.AddServiceInstallTuple((ServiceInstallTuple)tuple); |
| 190 | break; | 190 | break; |
| 191 | 191 | ||
| 192 | case TupleDefinitionType.Shortcut: | 192 | case TupleDefinitionType.Shortcut: |
| 193 | this.AddShortcutTuple((ShortcutTuple)tuple, output); | 193 | this.AddShortcutTuple((ShortcutTuple)tuple); |
| 194 | break; | 194 | break; |
| 195 | 195 | ||
| 196 | case TupleDefinitionType.Signature: | 196 | case TupleDefinitionType.Signature: |
| 197 | this.AddTupleDefaultly(tuple, output, idIsPrimaryKey: true); | 197 | this.AddTupleDefaultly(tuple, idIsPrimaryKey: true); |
| 198 | break; | 198 | break; |
| 199 | 199 | ||
| 200 | case TupleDefinitionType.SummaryInformation: | 200 | case TupleDefinitionType.SummaryInformation: |
| 201 | this.AddTupleDefaultly(tuple, output, tableName: "_SummaryInformation"); | 201 | this.AddTupleDefaultly(tuple, tableName: "_SummaryInformation"); |
| 202 | break; | 202 | break; |
| 203 | 203 | ||
| 204 | case TupleDefinitionType.TextStyle: | 204 | case TupleDefinitionType.TextStyle: |
| 205 | this.AddTextStyleTuple((TextStyleTuple)tuple, output); | 205 | this.AddTextStyleTuple((TextStyleTuple)tuple); |
| 206 | break; | 206 | break; |
| 207 | 207 | ||
| 208 | case TupleDefinitionType.Upgrade: | 208 | case TupleDefinitionType.Upgrade: |
| 209 | this.AddUpgradeTuple((UpgradeTuple)tuple, output); | 209 | this.AddUpgradeTuple((UpgradeTuple)tuple); |
| 210 | break; | 210 | break; |
| 211 | 211 | ||
| 212 | case TupleDefinitionType.WixAction: | 212 | case TupleDefinitionType.WixAction: |
| 213 | this.AddWixActionTuple((WixActionTuple)tuple, output); | 213 | this.AddWixActionTuple((WixActionTuple)tuple); |
| 214 | break; | 214 | break; |
| 215 | 215 | ||
| 216 | case TupleDefinitionType.WixMediaTemplate: | 216 | case TupleDefinitionType.WixMediaTemplate: |
| 217 | this.AddWixMediaTemplateTuple((WixMediaTemplateTuple)tuple, output); | 217 | this.AddWixMediaTemplateTuple((WixMediaTemplateTuple)tuple); |
| 218 | break; | 218 | break; |
| 219 | 219 | ||
| 220 | case TupleDefinitionType.MustBeFromAnExtension: | 220 | case TupleDefinitionType.MustBeFromAnExtension: |
| 221 | this.AddTupleFromExtension(tuple, output); | 221 | this.AddTupleFromExtension(tuple); |
| 222 | break; | 222 | break; |
| 223 | 223 | ||
| 224 | case TupleDefinitionType.WixCustomRow: | 224 | case TupleDefinitionType.WixCustomRow: |
| 225 | this.AddWixCustomRowTuple((WixCustomRowTuple)tuple, output); | 225 | this.AddWixCustomRowTuple((WixCustomRowTuple)tuple); |
| 226 | break; | 226 | break; |
| 227 | 227 | ||
| 228 | case TupleDefinitionType.WixEnsureTable: | 228 | case TupleDefinitionType.WixEnsureTable: |
| 229 | this.AddWixEnsureTableTuple((WixEnsureTableTuple)tuple, output); | 229 | this.AddWixEnsureTableTuple((WixEnsureTableTuple)tuple); |
| 230 | break; | 230 | break; |
| 231 | 231 | ||
| 232 | // ignored. | 232 | // ignored. |
| @@ -234,25 +234,25 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
| 234 | case TupleDefinitionType.WixComponentGroup: | 234 | case TupleDefinitionType.WixComponentGroup: |
| 235 | case TupleDefinitionType.WixDeltaPatchFile: | 235 | case TupleDefinitionType.WixDeltaPatchFile: |
| 236 | case TupleDefinitionType.WixFeatureGroup: | 236 | case TupleDefinitionType.WixFeatureGroup: |
| 237 | break; | 237 | case TupleDefinitionType.WixPatchBaseline: |
| 238 | break; | ||
| 238 | 239 | ||
| 239 | // Already processed. | 240 | // Already processed. |
| 240 | case TupleDefinitionType.WixCustomTable: | 241 | case TupleDefinitionType.WixCustomTable: |
| 241 | break; | 242 | break; |
| 242 | 243 | ||
| 243 | default: | 244 | default: |
| 244 | this.AddTupleDefaultly(tuple, output); | 245 | this.AddTupleDefaultly(tuple); |
| 245 | break; | 246 | break; |
| 246 | } | 247 | } |
| 247 | } | 248 | } |
| 248 | } | 249 | } |
| 249 | 250 | ||
| 250 | private void AddAssemblyTuple(AssemblyTuple tuple, WindowsInstallerData output) | 251 | private void AddAssemblyTuple(AssemblyTuple tuple) |
| 251 | { | 252 | { |
| 252 | var attributes = tuple.Type == AssemblyType.Win32Assembly ? 1 : (int?)null; | 253 | var attributes = tuple.Type == AssemblyType.Win32Assembly ? 1 : (int?)null; |
| 253 | 254 | ||
| 254 | var table = output.EnsureTable(this.TableDefinitions["MsiAssembly"]); | 255 | var row = this.CreateRow(tuple, "MsiAssembly"); |
| 255 | var row = table.CreateRow(tuple.SourceLineNumbers); | ||
| 256 | row[0] = tuple.ComponentRef; | 256 | row[0] = tuple.ComponentRef; |
| 257 | row[1] = tuple.FeatureRef; | 257 | row[1] = tuple.FeatureRef; |
| 258 | row[2] = tuple.ManifestFileRef; | 258 | row[2] = tuple.ManifestFileRef; |
| @@ -260,7 +260,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
| 260 | row[4] = attributes; | 260 | row[4] = attributes; |
| 261 | } | 261 | } |
| 262 | 262 | ||
| 263 | private void AddBBControlTuple(BBControlTuple tuple, WindowsInstallerData output) | 263 | private void AddBBControlTuple(BBControlTuple tuple) |
| 264 | { | 264 | { |
| 265 | var attributes = tuple.Attributes; | 265 | var attributes = tuple.Attributes; |
| 266 | attributes |= tuple.Enabled ? WindowsInstallerConstants.MsidbControlAttributesEnabled : 0; | 266 | attributes |= tuple.Enabled ? WindowsInstallerConstants.MsidbControlAttributesEnabled : 0; |
| @@ -272,8 +272,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
| 272 | attributes |= tuple.Sunken ? WindowsInstallerConstants.MsidbControlAttributesSunken : 0; | 272 | attributes |= tuple.Sunken ? WindowsInstallerConstants.MsidbControlAttributesSunken : 0; |
| 273 | attributes |= tuple.Visible ? WindowsInstallerConstants.MsidbControlAttributesVisible : 0; | 273 | attributes |= tuple.Visible ? WindowsInstallerConstants.MsidbControlAttributesVisible : 0; |
| 274 | 274 | ||
| 275 | var table = output.EnsureTable(this.TableDefinitions["BBControl"]); | 275 | var row = this.CreateRow(tuple, "BBControl"); |
| 276 | var row = table.CreateRow(tuple.SourceLineNumbers); | ||
| 277 | row[0] = tuple.BillboardRef; | 276 | row[0] = tuple.BillboardRef; |
| 278 | row[1] = tuple.BBControl; | 277 | row[1] = tuple.BBControl; |
| 279 | row[2] = tuple.Type; | 278 | row[2] = tuple.Type; |
| @@ -285,10 +284,9 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
| 285 | row[8] = tuple.Text; | 284 | row[8] = tuple.Text; |
| 286 | } | 285 | } |
| 287 | 286 | ||
| 288 | private void AddClassTuple(ClassTuple tuple, WindowsInstallerData output) | 287 | private void AddClassTuple(ClassTuple tuple) |
| 289 | { | 288 | { |
| 290 | var table = output.EnsureTable(this.TableDefinitions["Class"]); | 289 | var row = this.CreateRow(tuple, "Class"); |
| 291 | var row = table.CreateRow(tuple.SourceLineNumbers); | ||
| 292 | row[0] = tuple.CLSID; | 290 | row[0] = tuple.CLSID; |
| 293 | row[1] = tuple.Context; | 291 | row[1] = tuple.Context; |
| 294 | row[2] = tuple.ComponentRef; | 292 | row[2] = tuple.ComponentRef; |
| @@ -304,7 +302,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
| 304 | row[12] = tuple.RelativePath ? (int?)1 : null; | 302 | row[12] = tuple.RelativePath ? (int?)1 : null; |
| 305 | } | 303 | } |
| 306 | 304 | ||
| 307 | private void AddControlTuple(ControlTuple tuple, WindowsInstallerData output) | 305 | private void AddControlTuple(ControlTuple tuple) |
| 308 | { | 306 | { |
| 309 | var text = tuple.Text; | 307 | var text = tuple.Text; |
| 310 | var attributes = tuple.Attributes; | 308 | var attributes = tuple.Attributes; |
| @@ -329,8 +327,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
| 329 | text = String.Concat(text, " "); | 327 | text = String.Concat(text, " "); |
| 330 | } | 328 | } |
| 331 | 329 | ||
| 332 | var table = output.EnsureTable(this.TableDefinitions["Control"]); | 330 | var row = this.CreateRow(tuple, "Control"); |
| 333 | var row = table.CreateRow(tuple.SourceLineNumbers); | ||
| 334 | row[0] = tuple.DialogRef; | 331 | row[0] = tuple.DialogRef; |
| 335 | row[1] = tuple.Control; | 332 | row[1] = tuple.Control; |
| 336 | row[2] = tuple.Type; | 333 | row[2] = tuple.Type; |
| @@ -344,7 +341,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
| 344 | row[10] = tuple.Help; | 341 | row[10] = tuple.Help; |
| 345 | } | 342 | } |
| 346 | 343 | ||
| 347 | private void AddComponentTuple(ComponentTuple tuple, WindowsInstallerData output) | 344 | private void AddComponentTuple(ComponentTuple tuple) |
| 348 | { | 345 | { |
| 349 | var attributes = ComponentLocation.Either == tuple.Location ? WindowsInstallerConstants.MsidbComponentAttributesOptional : 0; | 346 | var attributes = ComponentLocation.Either == tuple.Location ? WindowsInstallerConstants.MsidbComponentAttributesOptional : 0; |
| 350 | attributes |= ComponentLocation.SourceOnly == tuple.Location ? WindowsInstallerConstants.MsidbComponentAttributesSourceOnly : 0; | 347 | attributes |= ComponentLocation.SourceOnly == tuple.Location ? WindowsInstallerConstants.MsidbComponentAttributesSourceOnly : 0; |
| @@ -359,8 +356,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
| 359 | attributes |= tuple.UninstallWhenSuperseded ? WindowsInstallerConstants.MsidbComponentAttributesUninstallOnSupersedence : 0; | 356 | attributes |= tuple.UninstallWhenSuperseded ? WindowsInstallerConstants.MsidbComponentAttributesUninstallOnSupersedence : 0; |
| 360 | attributes |= tuple.Win64 ? WindowsInstallerConstants.MsidbComponentAttributes64bit : 0; | 357 | attributes |= tuple.Win64 ? WindowsInstallerConstants.MsidbComponentAttributes64bit : 0; |
| 361 | 358 | ||
| 362 | var table = output.EnsureTable(this.TableDefinitions["Component"]); | 359 | var row = this.CreateRow(tuple, "Component"); |
| 363 | var row = table.CreateRow(tuple.SourceLineNumbers); | ||
| 364 | row[0] = tuple.Id.Id; | 360 | row[0] = tuple.Id.Id; |
| 365 | row[1] = tuple.ComponentId; | 361 | row[1] = tuple.ComponentId; |
| 366 | row[2] = tuple.DirectoryRef; | 362 | row[2] = tuple.DirectoryRef; |
| @@ -369,7 +365,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
| 369 | row[5] = tuple.KeyPath; | 365 | row[5] = tuple.KeyPath; |
| 370 | } | 366 | } |
| 371 | 367 | ||
| 372 | private void AddCustomActionTuple(CustomActionTuple tuple, WindowsInstallerData output) | 368 | private void AddCustomActionTuple(CustomActionTuple tuple) |
| 373 | { | 369 | { |
| 374 | var type = tuple.Win64 ? WindowsInstallerConstants.MsidbCustomActionType64BitScript : 0; | 370 | var type = tuple.Win64 ? WindowsInstallerConstants.MsidbCustomActionType64BitScript : 0; |
| 375 | type |= tuple.IgnoreResult ? WindowsInstallerConstants.MsidbCustomActionTypeContinue : 0; | 371 | type |= tuple.IgnoreResult ? WindowsInstallerConstants.MsidbCustomActionTypeContinue : 0; |
| @@ -396,8 +392,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
| 396 | type |= tuple.TSAware ? WindowsInstallerConstants.MsidbCustomActionTypeTSAware : 0; | 392 | type |= tuple.TSAware ? WindowsInstallerConstants.MsidbCustomActionTypeTSAware : 0; |
| 397 | } | 393 | } |
| 398 | 394 | ||
| 399 | var table = output.EnsureTable(this.TableDefinitions["CustomAction"]); | 395 | var row = this.CreateRow(tuple, "CustomAction"); |
| 400 | var row = table.CreateRow(tuple.SourceLineNumbers); | ||
| 401 | row[0] = tuple.Id.Id; | 396 | row[0] = tuple.Id.Id; |
| 402 | row[1] = type; | 397 | row[1] = type; |
| 403 | row[2] = tuple.Source; | 398 | row[2] = tuple.Source; |
| @@ -405,7 +400,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
| 405 | row[4] = tuple.PatchUninstall ? (int?)WindowsInstallerConstants.MsidbCustomActionTypePatchUninstall : null; | 400 | row[4] = tuple.PatchUninstall ? (int?)WindowsInstallerConstants.MsidbCustomActionTypePatchUninstall : null; |
| 406 | } | 401 | } |
| 407 | 402 | ||
| 408 | private void AddDialogTuple(DialogTuple tuple, WindowsInstallerData output) | 403 | private void AddDialogTuple(DialogTuple tuple) |
| 409 | { | 404 | { |
| 410 | var attributes = tuple.Visible ? WindowsInstallerConstants.MsidbDialogAttributesVisible : 0; | 405 | var attributes = tuple.Visible ? WindowsInstallerConstants.MsidbDialogAttributesVisible : 0; |
| 411 | attributes|= tuple.Modal ? WindowsInstallerConstants.MsidbDialogAttributesModal : 0; | 406 | attributes|= tuple.Modal ? WindowsInstallerConstants.MsidbDialogAttributesModal : 0; |
| @@ -419,8 +414,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
| 419 | attributes|= tuple.SystemModal ? WindowsInstallerConstants.MsidbDialogAttributesSysModal : 0; | 414 | attributes|= tuple.SystemModal ? WindowsInstallerConstants.MsidbDialogAttributesSysModal : 0; |
| 420 | attributes|= tuple.TrackDiskSpace ? WindowsInstallerConstants.MsidbDialogAttributesTrackDiskSpace : 0; | 415 | attributes|= tuple.TrackDiskSpace ? WindowsInstallerConstants.MsidbDialogAttributesTrackDiskSpace : 0; |
| 421 | 416 | ||
| 422 | var table = output.EnsureTable(this.TableDefinitions["Dialog"]); | 417 | var row = this.CreateRow(tuple, "Dialog"); |
| 423 | var row = table.CreateRow(tuple.SourceLineNumbers); | ||
| 424 | row[0] = tuple.Id.Id; | 418 | row[0] = tuple.Id.Id; |
| 425 | row[1] = tuple.HCentering; | 419 | row[1] = tuple.HCentering; |
| 426 | row[2] = tuple.VCentering; | 420 | row[2] = tuple.VCentering; |
| @@ -432,10 +426,10 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
| 432 | row[8] = tuple.DefaultControlRef; | 426 | row[8] = tuple.DefaultControlRef; |
| 433 | row[9] = tuple.CancelControlRef; | 427 | row[9] = tuple.CancelControlRef; |
| 434 | 428 | ||
| 435 | output.EnsureTable(this.TableDefinitions["ListBox"]); | 429 | this.Output.EnsureTable(this.TableDefinitions["ListBox"]); |
| 436 | } | 430 | } |
| 437 | 431 | ||
| 438 | private void AddDirectoryTuple(DirectoryTuple tuple, WindowsInstallerData output) | 432 | private void AddDirectoryTuple(DirectoryTuple tuple) |
| 439 | { | 433 | { |
| 440 | var sourceName = GetMsiFilenameValue(tuple.SourceShortName, tuple.SourceName); | 434 | var sourceName = GetMsiFilenameValue(tuple.SourceShortName, tuple.SourceName); |
| 441 | var targetName = GetMsiFilenameValue(tuple.ShortName, tuple.Name); | 435 | var targetName = GetMsiFilenameValue(tuple.ShortName, tuple.Name); |
| @@ -447,14 +441,13 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
| 447 | 441 | ||
| 448 | var defaultDir = String.IsNullOrEmpty(sourceName) ? targetName : targetName + ":" + sourceName ; | 442 | var defaultDir = String.IsNullOrEmpty(sourceName) ? targetName : targetName + ":" + sourceName ; |
| 449 | 443 | ||
| 450 | var table = output.EnsureTable(this.TableDefinitions["Directory"]); | 444 | var row = this.CreateRow(tuple, "Directory"); |
| 451 | var row = table.CreateRow(tuple.SourceLineNumbers); | ||
| 452 | row[0] = tuple.Id.Id; | 445 | row[0] = tuple.Id.Id; |
| 453 | row[1] = tuple.ParentDirectoryRef; | 446 | row[1] = tuple.ParentDirectoryRef; |
| 454 | row[2] = defaultDir; | 447 | row[2] = defaultDir; |
| 455 | } | 448 | } |
| 456 | 449 | ||
| 457 | private void AddEnvironmentTuple(EnvironmentTuple tuple, WindowsInstallerData output) | 450 | private void AddEnvironmentTuple(EnvironmentTuple tuple) |
| 458 | { | 451 | { |
| 459 | var action = String.Empty; | 452 | var action = String.Empty; |
| 460 | var system = tuple.System ? "*" : String.Empty; | 453 | var system = tuple.System ? "*" : String.Empty; |
| @@ -484,23 +477,21 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
| 484 | break; | 477 | break; |
| 485 | } | 478 | } |
| 486 | 479 | ||
| 487 | var table = output.EnsureTable(this.TableDefinitions["Environment"]); | 480 | var row = this.CreateRow(tuple, "Environment"); |
| 488 | var row = table.CreateRow(tuple.SourceLineNumbers); | ||
| 489 | row[0] = tuple.Id.Id; | 481 | row[0] = tuple.Id.Id; |
| 490 | row[1] = String.Concat(action, uninstall, system, tuple.Name); | 482 | row[1] = String.Concat(action, uninstall, system, tuple.Name); |
| 491 | row[2] = value; | 483 | row[2] = value; |
| 492 | row[3] = tuple.ComponentRef; | 484 | row[3] = tuple.ComponentRef; |
| 493 | } | 485 | } |
| 494 | 486 | ||
| 495 | private void AddErrorTuple(ErrorTuple tuple, WindowsInstallerData output) | 487 | private void AddErrorTuple(ErrorTuple tuple) |
| 496 | { | 488 | { |
| 497 | var table = output.EnsureTable(this.TableDefinitions["Error"]); | 489 | var row = this.CreateRow(tuple, "Error"); |
| 498 | var row = table.CreateRow(tuple.SourceLineNumbers); | ||
| 499 | row[0] = Convert.ToInt32(tuple.Id.Id); | 490 | row[0] = Convert.ToInt32(tuple.Id.Id); |
| 500 | row[1] = tuple.Message; | 491 | row[1] = tuple.Message; |
| 501 | } | 492 | } |
| 502 | 493 | ||
| 503 | private void AddFeatureTuple(FeatureTuple tuple, WindowsInstallerData output) | 494 | private void AddFeatureTuple(FeatureTuple tuple) |
| 504 | { | 495 | { |
| 505 | var attributes = tuple.DisallowAbsent ? WindowsInstallerConstants.MsidbFeatureAttributesUIDisallowAbsent : 0; | 496 | var attributes = tuple.DisallowAbsent ? WindowsInstallerConstants.MsidbFeatureAttributesUIDisallowAbsent : 0; |
| 506 | attributes |= tuple.DisallowAdvertise ? WindowsInstallerConstants.MsidbFeatureAttributesDisallowAdvertise : 0; | 497 | attributes |= tuple.DisallowAdvertise ? WindowsInstallerConstants.MsidbFeatureAttributesDisallowAdvertise : 0; |
| @@ -508,8 +499,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
| 508 | attributes |= FeatureInstallDefault.Source == tuple.InstallDefault ? WindowsInstallerConstants.MsidbFeatureAttributesFavorSource : 0; | 499 | attributes |= FeatureInstallDefault.Source == tuple.InstallDefault ? WindowsInstallerConstants.MsidbFeatureAttributesFavorSource : 0; |
| 509 | attributes |= FeatureTypicalDefault.Advertise == tuple.TypicalDefault ? WindowsInstallerConstants.MsidbFeatureAttributesFavorAdvertise : 0; | 500 | attributes |= FeatureTypicalDefault.Advertise == tuple.TypicalDefault ? WindowsInstallerConstants.MsidbFeatureAttributesFavorAdvertise : 0; |
| 510 | 501 | ||
| 511 | var table = output.EnsureTable(this.TableDefinitions["Feature"]); | 502 | var row = this.CreateRow(tuple, "Feature"); |
| 512 | var row = table.CreateRow(tuple.SourceLineNumbers); | ||
| 513 | row[0] = tuple.Id.Id; | 503 | row[0] = tuple.Id.Id; |
| 514 | row[1] = tuple.ParentFeatureRef; | 504 | row[1] = tuple.ParentFeatureRef; |
| 515 | row[2] = tuple.Title; | 505 | row[2] = tuple.Title; |
| @@ -520,16 +510,17 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
| 520 | row[7] = attributes; | 510 | row[7] = attributes; |
| 521 | } | 511 | } |
| 522 | 512 | ||
| 523 | private void AddFileTuple(FileTuple tuple, WindowsInstallerData output) | 513 | private void AddFileTuple(FileTuple tuple) |
| 524 | { | 514 | { |
| 525 | var table = output.EnsureTable(this.TableDefinitions["File"]); | 515 | var row = (FileRow)this.CreateRow(tuple, "File"); |
| 526 | var row = (FileRow)table.CreateRow(tuple.SourceLineNumbers); | ||
| 527 | row.File = tuple.Id.Id; | 516 | row.File = tuple.Id.Id; |
| 528 | row.Component = tuple.ComponentRef; | 517 | row.Component = tuple.ComponentRef; |
| 529 | row.FileName = GetMsiFilenameValue(tuple.ShortName, tuple.Name); | 518 | row.FileName = GetMsiFilenameValue(tuple.ShortName, tuple.Name); |
| 530 | row.FileSize = tuple.FileSize; | 519 | row.FileSize = tuple.FileSize; |
| 531 | row.Version = tuple.Version; | 520 | row.Version = tuple.Version; |
| 532 | row.Language = tuple.Language; | 521 | row.Language = tuple.Language; |
| 522 | row.DiskId = tuple.DiskId ?? 1; // TODO: is 0 the correct thing to default here | ||
| 523 | row.Source = tuple.Source.Path; | ||
| 533 | 524 | ||
| 534 | var attributes = (tuple.Attributes & FileTupleAttributes.Checksum) == FileTupleAttributes.Checksum ? WindowsInstallerConstants.MsidbFileAttributesChecksum : 0; | 525 | var attributes = (tuple.Attributes & FileTupleAttributes.Checksum) == FileTupleAttributes.Checksum ? WindowsInstallerConstants.MsidbFileAttributesChecksum : 0; |
| 535 | attributes |= (tuple.Attributes & FileTupleAttributes.Compressed) == FileTupleAttributes.Compressed ? WindowsInstallerConstants.MsidbFileAttributesCompressed : 0; | 526 | attributes |= (tuple.Attributes & FileTupleAttributes.Compressed) == FileTupleAttributes.Compressed ? WindowsInstallerConstants.MsidbFileAttributesCompressed : 0; |
| @@ -542,19 +533,17 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
| 542 | 533 | ||
| 543 | if (!String.IsNullOrEmpty(tuple.FontTitle)) | 534 | if (!String.IsNullOrEmpty(tuple.FontTitle)) |
| 544 | { | 535 | { |
| 545 | var fontTable = output.EnsureTable(this.TableDefinitions["Font"]); | 536 | var fontRow = this.CreateRow(tuple, "Font"); |
| 546 | var fontRow = fontTable.CreateRow(tuple.SourceLineNumbers); | ||
| 547 | fontRow[0] = tuple.Id.Id; | 537 | fontRow[0] = tuple.Id.Id; |
| 548 | fontRow[1] = tuple.FontTitle; | 538 | fontRow[1] = tuple.FontTitle; |
| 549 | } | 539 | } |
| 550 | } | 540 | } |
| 551 | 541 | ||
| 552 | private void AddIniFileTuple(IniFileTuple tuple, WindowsInstallerData output) | 542 | private void AddIniFileTuple(IniFileTuple tuple) |
| 553 | { | 543 | { |
| 554 | var tableName = (InifFileActionType.AddLine == tuple.Action || InifFileActionType.AddTag == tuple.Action || InifFileActionType.CreateLine == tuple.Action) ? "IniFile" : "RemoveIniFile"; | 544 | var tableName = (InifFileActionType.AddLine == tuple.Action || InifFileActionType.AddTag == tuple.Action || InifFileActionType.CreateLine == tuple.Action) ? "IniFile" : "RemoveIniFile"; |
| 555 | 545 | ||
| 556 | var table = output.EnsureTable(this.TableDefinitions[tableName]); | 546 | var row = this.CreateRow(tuple, tableName); |
| 557 | var row = table.CreateRow(tuple.SourceLineNumbers); | ||
| 558 | row[0] = tuple.Id.Id; | 547 | row[0] = tuple.Id.Id; |
| 559 | row[1] = tuple.FileName; | 548 | row[1] = tuple.FileName; |
| 560 | row[2] = tuple.DirProperty; | 549 | row[2] = tuple.DirProperty; |
| @@ -565,12 +554,11 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
| 565 | row[7] = tuple.ComponentRef; | 554 | row[7] = tuple.ComponentRef; |
| 566 | } | 555 | } |
| 567 | 556 | ||
| 568 | private void AddMediaTuple(MediaTuple tuple, WindowsInstallerData output) | 557 | private void AddMediaTuple(MediaTuple tuple) |
| 569 | { | 558 | { |
| 570 | if (this.Section.Type != SectionType.Module) | 559 | if (this.Section.Type != SectionType.Module) |
| 571 | { | 560 | { |
| 572 | var table = output.EnsureTable(this.TableDefinitions["Media"]); | 561 | var row = (MediaRow)this.CreateRow(tuple, "Media"); |
| 573 | var row = (MediaRow)table.CreateRow(tuple.SourceLineNumbers); | ||
| 574 | row.DiskId = tuple.DiskId; | 562 | row.DiskId = tuple.DiskId; |
| 575 | row.LastSequence = tuple.LastSequence ?? 0; | 563 | row.LastSequence = tuple.LastSequence ?? 0; |
| 576 | row.DiskPrompt = tuple.DiskPrompt; | 564 | row.DiskPrompt = tuple.DiskPrompt; |
| @@ -580,10 +568,9 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
| 580 | } | 568 | } |
| 581 | } | 569 | } |
| 582 | 570 | ||
| 583 | private void AddModuleConfigurationTuple(ModuleConfigurationTuple tuple, WindowsInstallerData output) | 571 | private void AddModuleConfigurationTuple(ModuleConfigurationTuple tuple) |
| 584 | { | 572 | { |
| 585 | var table = output.EnsureTable(this.TableDefinitions["ModuleConfiguration"]); | 573 | var row = this.CreateRow(tuple, "ModuleConfiguration"); |
| 586 | var row = table.CreateRow(tuple.SourceLineNumbers); | ||
| 587 | row[0] = tuple.Id.Id; | 574 | row[0] = tuple.Id.Id; |
| 588 | row[1] = tuple.Format; | 575 | row[1] = tuple.Format; |
| 589 | row[2] = tuple.Type; | 576 | row[2] = tuple.Type; |
| @@ -597,13 +584,12 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
| 597 | row[9] = tuple.HelpKeyword; | 584 | row[9] = tuple.HelpKeyword; |
| 598 | } | 585 | } |
| 599 | 586 | ||
| 600 | private void AddMsiEmbeddedUITuple(MsiEmbeddedUITuple tuple, WindowsInstallerData output) | 587 | private void AddMsiEmbeddedUITuple(MsiEmbeddedUITuple tuple) |
| 601 | { | 588 | { |
| 602 | var attributes = tuple.EntryPoint ? WindowsInstallerConstants.MsidbEmbeddedUI : 0; | 589 | var attributes = tuple.EntryPoint ? WindowsInstallerConstants.MsidbEmbeddedUI : 0; |
| 603 | attributes |= tuple.SupportsBasicUI ? WindowsInstallerConstants.MsidbEmbeddedHandlesBasic : 0; | 590 | attributes |= tuple.SupportsBasicUI ? WindowsInstallerConstants.MsidbEmbeddedHandlesBasic : 0; |
| 604 | 591 | ||
| 605 | var table = output.EnsureTable(this.TableDefinitions["MsiEmbeddedUI"]); | 592 | var row = this.CreateRow(tuple, "MsiEmbeddedUI"); |
| 606 | var row = table.CreateRow(tuple.SourceLineNumbers); | ||
| 607 | row[0] = tuple.Id.Id; | 593 | row[0] = tuple.Id.Id; |
| 608 | row[1] = tuple.FileName; | 594 | row[1] = tuple.FileName; |
| 609 | row[2] = attributes; | 595 | row[2] = attributes; |
| @@ -611,10 +597,9 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
| 611 | row[4] = tuple.Source; | 597 | row[4] = tuple.Source; |
| 612 | } | 598 | } |
| 613 | 599 | ||
| 614 | private void AddMsiFileHashTuple(MsiFileHashTuple tuple, WindowsInstallerData output) | 600 | private void AddMsiFileHashTuple(MsiFileHashTuple tuple) |
| 615 | { | 601 | { |
| 616 | var table = output.EnsureTable(this.TableDefinitions["MsiFileHash"]); | 602 | var row = this.CreateRow(tuple, "MsiFileHash"); |
| 617 | var row = table.CreateRow(tuple.SourceLineNumbers); | ||
| 618 | row[0] = tuple.Id.Id; | 603 | row[0] = tuple.Id.Id; |
| 619 | row[1] = tuple.Options; | 604 | row[1] = tuple.Options; |
| 620 | row[2] = tuple.HashPart1; | 605 | row[2] = tuple.HashPart1; |
| @@ -623,14 +608,13 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
| 623 | row[5] = tuple.HashPart4; | 608 | row[5] = tuple.HashPart4; |
| 624 | } | 609 | } |
| 625 | 610 | ||
| 626 | private void AddMsiServiceConfigTuple(MsiServiceConfigTuple tuple, WindowsInstallerData output) | 611 | private void AddMsiServiceConfigTuple(MsiServiceConfigTuple tuple) |
| 627 | { | 612 | { |
| 628 | var events = tuple.OnInstall ? WindowsInstallerConstants.MsidbServiceConfigEventInstall : 0; | 613 | var events = tuple.OnInstall ? WindowsInstallerConstants.MsidbServiceConfigEventInstall : 0; |
| 629 | events |= tuple.OnReinstall ? WindowsInstallerConstants.MsidbServiceConfigEventReinstall : 0; | 614 | events |= tuple.OnReinstall ? WindowsInstallerConstants.MsidbServiceConfigEventReinstall : 0; |
| 630 | events |= tuple.OnUninstall ? WindowsInstallerConstants.MsidbServiceConfigEventUninstall : 0; | 615 | events |= tuple.OnUninstall ? WindowsInstallerConstants.MsidbServiceConfigEventUninstall : 0; |
| 631 | 616 | ||
| 632 | var table = output.EnsureTable(this.TableDefinitions["MsiServiceConfigFailureActions"]); | 617 | var row = this.CreateRow(tuple, "MsiServiceConfigFailureActions"); |
| 633 | var row = table.CreateRow(tuple.SourceLineNumbers); | ||
| 634 | row[0] = tuple.Id.Id; | 618 | row[0] = tuple.Id.Id; |
| 635 | row[1] = tuple.Name; | 619 | row[1] = tuple.Name; |
| 636 | row[2] = events; | 620 | row[2] = events; |
| @@ -639,14 +623,13 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
| 639 | row[5] = tuple.ComponentRef; | 623 | row[5] = tuple.ComponentRef; |
| 640 | } | 624 | } |
| 641 | 625 | ||
| 642 | private void AddMsiServiceConfigFailureActionsTuple(MsiServiceConfigFailureActionsTuple tuple, WindowsInstallerData output) | 626 | private void AddMsiServiceConfigFailureActionsTuple(MsiServiceConfigFailureActionsTuple tuple) |
| 643 | { | 627 | { |
| 644 | var events = tuple.OnInstall ? WindowsInstallerConstants.MsidbServiceConfigEventInstall : 0; | 628 | var events = tuple.OnInstall ? WindowsInstallerConstants.MsidbServiceConfigEventInstall : 0; |
| 645 | events |= tuple.OnReinstall ? WindowsInstallerConstants.MsidbServiceConfigEventReinstall : 0; | 629 | events |= tuple.OnReinstall ? WindowsInstallerConstants.MsidbServiceConfigEventReinstall : 0; |
| 646 | events |= tuple.OnUninstall ? WindowsInstallerConstants.MsidbServiceConfigEventUninstall : 0; | 630 | events |= tuple.OnUninstall ? WindowsInstallerConstants.MsidbServiceConfigEventUninstall : 0; |
| 647 | 631 | ||
| 648 | var table = output.EnsureTable(this.TableDefinitions["MsiServiceConfig"]); | 632 | var row = this.CreateRow(tuple, "MsiServiceConfig"); |
| 649 | var row = table.CreateRow(tuple.SourceLineNumbers); | ||
| 650 | row[0] = tuple.Id.Id; | 633 | row[0] = tuple.Id.Id; |
| 651 | row[1] = tuple.Name; | 634 | row[1] = tuple.Name; |
| 652 | row[2] = events; | 635 | row[2] = events; |
| @@ -658,10 +641,9 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
| 658 | row[8] = tuple.ComponentRef; | 641 | row[8] = tuple.ComponentRef; |
| 659 | } | 642 | } |
| 660 | 643 | ||
| 661 | private void AddMoveFileTuple(MoveFileTuple tuple, WindowsInstallerData output) | 644 | private void AddMoveFileTuple(MoveFileTuple tuple) |
| 662 | { | 645 | { |
| 663 | var table = output.EnsureTable(this.TableDefinitions["MoveFile"]); | 646 | var row = this.CreateRow(tuple, "MoveFile"); |
| 664 | var row = table.CreateRow(tuple.SourceLineNumbers); | ||
| 665 | row[0] = tuple.Id.Id; | 647 | row[0] = tuple.Id.Id; |
| 666 | row[1] = tuple.ComponentRef; | 648 | row[1] = tuple.ComponentRef; |
| 667 | row[2] = tuple.SourceName; | 649 | row[2] = tuple.SourceName; |
| @@ -671,26 +653,24 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
| 671 | row[6] = tuple.Delete ? WindowsInstallerConstants.MsidbMoveFileOptionsMove : 0; | 653 | row[6] = tuple.Delete ? WindowsInstallerConstants.MsidbMoveFileOptionsMove : 0; |
| 672 | } | 654 | } |
| 673 | 655 | ||
| 674 | private void AddPropertyTuple(PropertyTuple tuple, WindowsInstallerData output) | 656 | private void AddPropertyTuple(PropertyTuple tuple) |
| 675 | { | 657 | { |
| 676 | if (String.IsNullOrEmpty(tuple.Value)) | 658 | if (String.IsNullOrEmpty(tuple.Value)) |
| 677 | { | 659 | { |
| 678 | return; | 660 | return; |
| 679 | } | 661 | } |
| 680 | 662 | ||
| 681 | var table = output.EnsureTable(this.TableDefinitions["Property"]); | 663 | var row = (PropertyRow)this.CreateRow(tuple, "Property"); |
| 682 | var row = (PropertyRow)table.CreateRow(tuple.SourceLineNumbers); | ||
| 683 | row.Property = tuple.Id.Id; | 664 | row.Property = tuple.Id.Id; |
| 684 | row.Value = tuple.Value; | 665 | row.Value = tuple.Value; |
| 685 | } | 666 | } |
| 686 | 667 | ||
| 687 | private void AddRemoveFileTuple(RemoveFileTuple tuple, WindowsInstallerData output) | 668 | private void AddRemoveFileTuple(RemoveFileTuple tuple) |
| 688 | { | 669 | { |
| 689 | var installMode = tuple.OnInstall == true ? WindowsInstallerConstants.MsidbRemoveFileInstallModeOnInstall : 0; | 670 | var installMode = tuple.OnInstall == true ? WindowsInstallerConstants.MsidbRemoveFileInstallModeOnInstall : 0; |
| 690 | installMode |= tuple.OnUninstall == true ? WindowsInstallerConstants.MsidbRemoveFileInstallModeOnRemove : 0; | 671 | installMode |= tuple.OnUninstall == true ? WindowsInstallerConstants.MsidbRemoveFileInstallModeOnRemove : 0; |
| 691 | 672 | ||
| 692 | var table = output.EnsureTable(this.TableDefinitions["RemoveFile"]); | 673 | var row = this.CreateRow(tuple, "RemoveFile"); |
| 693 | var row = table.CreateRow(tuple.SourceLineNumbers); | ||
| 694 | row[0] = tuple.Id.Id; | 674 | row[0] = tuple.Id.Id; |
| 695 | row[1] = tuple.ComponentRef; | 675 | row[1] = tuple.ComponentRef; |
| 696 | row[2] = tuple.FileName; | 676 | row[2] = tuple.FileName; |
| @@ -698,7 +678,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
| 698 | row[4] = installMode; | 678 | row[4] = installMode; |
| 699 | } | 679 | } |
| 700 | 680 | ||
| 701 | private void AddRegistryTuple(RegistryTuple tuple, WindowsInstallerData output) | 681 | private void AddRegistryTuple(RegistryTuple tuple) |
| 702 | { | 682 | { |
| 703 | var value = tuple.Value; | 683 | var value = tuple.Value; |
| 704 | 684 | ||
| @@ -740,8 +720,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
| 740 | break; | 720 | break; |
| 741 | } | 721 | } |
| 742 | 722 | ||
| 743 | var table = output.EnsureTable(this.TableDefinitions["Registry"]); | 723 | var row = this.CreateRow(tuple, "Registry"); |
| 744 | var row = table.CreateRow(tuple.SourceLineNumbers); | ||
| 745 | row[0] = tuple.Id.Id; | 724 | row[0] = tuple.Id.Id; |
| 746 | row[1] = tuple.Root; | 725 | row[1] = tuple.Root; |
| 747 | row[2] = tuple.Key; | 726 | row[2] = tuple.Key; |
| @@ -750,13 +729,12 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
| 750 | row[5] = tuple.ComponentRef; | 729 | row[5] = tuple.ComponentRef; |
| 751 | } | 730 | } |
| 752 | 731 | ||
| 753 | private void AddRegLocatorTuple(RegLocatorTuple tuple, WindowsInstallerData output) | 732 | private void AddRegLocatorTuple(RegLocatorTuple tuple) |
| 754 | { | 733 | { |
| 755 | var type = (int)tuple.Type; | 734 | var type = (int)tuple.Type; |
| 756 | type |= tuple.Win64 ? WindowsInstallerConstants.MsidbLocatorType64bit : 0; | 735 | type |= tuple.Win64 ? WindowsInstallerConstants.MsidbLocatorType64bit : 0; |
| 757 | 736 | ||
| 758 | var table = output.EnsureTable(this.TableDefinitions["RegLocator"]); | 737 | var row = this.CreateRow(tuple, "RegLocator"); |
| 759 | var row = table.CreateRow(tuple.SourceLineNumbers); | ||
| 760 | row[0] = tuple.Id.Id; | 738 | row[0] = tuple.Id.Id; |
| 761 | row[1] = tuple.Root; | 739 | row[1] = tuple.Root; |
| 762 | row[2] = tuple.Key; | 740 | row[2] = tuple.Key; |
| @@ -764,12 +742,11 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
| 764 | row[4] = type; | 742 | row[4] = type; |
| 765 | } | 743 | } |
| 766 | 744 | ||
| 767 | private void AddRemoveRegistryTuple(RemoveRegistryTuple tuple, WindowsInstallerData output) | 745 | private void AddRemoveRegistryTuple(RemoveRegistryTuple tuple) |
| 768 | { | 746 | { |
| 769 | if (tuple.Action == RemoveRegistryActionType.RemoveOnInstall) | 747 | if (tuple.Action == RemoveRegistryActionType.RemoveOnInstall) |
| 770 | { | 748 | { |
| 771 | var table = output.EnsureTable(this.TableDefinitions["RemoveRegistry"]); | 749 | var row = this.CreateRow(tuple, "RemoveRegistry"); |
| 772 | var row = table.CreateRow(tuple.SourceLineNumbers); | ||
| 773 | row[0] = tuple.Id.Id; | 750 | row[0] = tuple.Id.Id; |
| 774 | row[1] = tuple.Root; | 751 | row[1] = tuple.Root; |
| 775 | row[2] = tuple.Key; | 752 | row[2] = tuple.Key; |
| @@ -778,8 +755,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
| 778 | } | 755 | } |
| 779 | else // Registry table is used to remove registry keys on uninstall. | 756 | else // Registry table is used to remove registry keys on uninstall. |
| 780 | { | 757 | { |
| 781 | var table = output.EnsureTable(this.TableDefinitions["Registry"]); | 758 | var row = this.CreateRow(tuple, "Registry"); |
| 782 | var row = table.CreateRow(tuple.SourceLineNumbers); | ||
| 783 | row[0] = tuple.Id.Id; | 759 | row[0] = tuple.Id.Id; |
| 784 | row[1] = tuple.Root; | 760 | row[1] = tuple.Root; |
| 785 | row[2] = tuple.Key; | 761 | row[2] = tuple.Key; |
| @@ -788,7 +764,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
| 788 | } | 764 | } |
| 789 | } | 765 | } |
| 790 | 766 | ||
| 791 | private void AddServiceControlTuple(ServiceControlTuple tuple, WindowsInstallerData output) | 767 | private void AddServiceControlTuple(ServiceControlTuple tuple) |
| 792 | { | 768 | { |
| 793 | var events = tuple.InstallRemove ? WindowsInstallerConstants.MsidbServiceControlEventDelete : 0; | 769 | var events = tuple.InstallRemove ? WindowsInstallerConstants.MsidbServiceControlEventDelete : 0; |
| 794 | events |= tuple.UninstallRemove ? WindowsInstallerConstants.MsidbServiceControlEventUninstallDelete : 0; | 770 | events |= tuple.UninstallRemove ? WindowsInstallerConstants.MsidbServiceControlEventUninstallDelete : 0; |
| @@ -797,8 +773,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
| 797 | events |= tuple.InstallStop ? WindowsInstallerConstants.MsidbServiceControlEventStop : 0; | 773 | events |= tuple.InstallStop ? WindowsInstallerConstants.MsidbServiceControlEventStop : 0; |
| 798 | events |= tuple.UninstallStop ? WindowsInstallerConstants.MsidbServiceControlEventUninstallStop : 0; | 774 | events |= tuple.UninstallStop ? WindowsInstallerConstants.MsidbServiceControlEventUninstallStop : 0; |
| 799 | 775 | ||
| 800 | var table = output.EnsureTable(this.TableDefinitions["ServiceControl"]); | 776 | var row = this.CreateRow(tuple, "ServiceControl"); |
| 801 | var row = table.CreateRow(tuple.SourceLineNumbers); | ||
| 802 | row[0] = tuple.Id.Id; | 777 | row[0] = tuple.Id.Id; |
| 803 | row[1] = tuple.Name; | 778 | row[1] = tuple.Name; |
| 804 | row[2] = events; | 779 | row[2] = events; |
| @@ -810,7 +785,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
| 810 | row[5] = tuple.ComponentRef; | 785 | row[5] = tuple.ComponentRef; |
| 811 | } | 786 | } |
| 812 | 787 | ||
| 813 | private void AddServiceInstallTuple(ServiceInstallTuple tuple, WindowsInstallerData output) | 788 | private void AddServiceInstallTuple(ServiceInstallTuple tuple) |
| 814 | { | 789 | { |
| 815 | var errorControl = (int)tuple.ErrorControl; | 790 | var errorControl = (int)tuple.ErrorControl; |
| 816 | errorControl |= tuple.Vital ? WindowsInstallerConstants.MsidbServiceInstallErrorControlVital : 0; | 791 | errorControl |= tuple.Vital ? WindowsInstallerConstants.MsidbServiceInstallErrorControlVital : 0; |
| @@ -818,8 +793,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
| 818 | var serviceType = (int)tuple.ServiceType; | 793 | var serviceType = (int)tuple.ServiceType; |
| 819 | serviceType |= tuple.Interactive ? WindowsInstallerConstants.MsidbServiceInstallInteractive : 0; | 794 | serviceType |= tuple.Interactive ? WindowsInstallerConstants.MsidbServiceInstallInteractive : 0; |
| 820 | 795 | ||
| 821 | var table = output.EnsureTable(this.TableDefinitions["ServiceInstall"]); | 796 | var row = this.CreateRow(tuple, "ServiceInstall"); |
| 822 | var row = table.CreateRow(tuple.SourceLineNumbers); | ||
| 823 | row[0] = tuple.Id.Id; | 797 | row[0] = tuple.Id.Id; |
| 824 | row[1] = tuple.Name; | 798 | row[1] = tuple.Name; |
| 825 | row[2] = tuple.DisplayName; | 799 | row[2] = tuple.DisplayName; |
| @@ -835,10 +809,9 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
| 835 | row[12] = tuple.Description; | 809 | row[12] = tuple.Description; |
| 836 | } | 810 | } |
| 837 | 811 | ||
| 838 | private void AddShortcutTuple(ShortcutTuple tuple, WindowsInstallerData output) | 812 | private void AddShortcutTuple(ShortcutTuple tuple) |
| 839 | { | 813 | { |
| 840 | var table = output.EnsureTable(this.TableDefinitions["Shortcut"]); | 814 | var row = this.CreateRow(tuple, "Shortcut"); |
| 841 | var row = table.CreateRow(tuple.SourceLineNumbers); | ||
| 842 | row[0] = tuple.Id.Id; | 815 | row[0] = tuple.Id.Id; |
| 843 | row[1] = tuple.DirectoryRef; | 816 | row[1] = tuple.DirectoryRef; |
| 844 | row[2] = GetMsiFilenameValue(tuple.ShortName, tuple.Name); | 817 | row[2] = GetMsiFilenameValue(tuple.ShortName, tuple.Name); |
| @@ -857,7 +830,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
| 857 | row[15] = tuple.DescriptionResourceId; | 830 | row[15] = tuple.DescriptionResourceId; |
| 858 | } | 831 | } |
| 859 | 832 | ||
| 860 | private void AddTextStyleTuple(TextStyleTuple tuple, WindowsInstallerData output) | 833 | private void AddTextStyleTuple(TextStyleTuple tuple) |
| 861 | { | 834 | { |
| 862 | var styleBits = tuple.Bold ? WindowsInstallerConstants.MsidbTextStyleStyleBitsBold : 0; | 835 | var styleBits = tuple.Bold ? WindowsInstallerConstants.MsidbTextStyleStyleBitsBold : 0; |
| 863 | styleBits |= tuple.Italic ? WindowsInstallerConstants.MsidbTextStyleStyleBitsItalic : 0; | 836 | styleBits |= tuple.Italic ? WindowsInstallerConstants.MsidbTextStyleStyleBitsItalic : 0; |
| @@ -873,8 +846,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
| 873 | color += (long)(tuple.Blue ?? 0) * 65536; | 846 | color += (long)(tuple.Blue ?? 0) * 65536; |
| 874 | } | 847 | } |
| 875 | 848 | ||
| 876 | var table = output.EnsureTable(this.TableDefinitions["TextStyle"]); | 849 | var row = this.CreateRow(tuple, "TextStyle"); |
| 877 | var row = table.CreateRow(tuple.SourceLineNumbers); | ||
| 878 | row[0] = tuple.Id.Id; | 850 | row[0] = tuple.Id.Id; |
| 879 | row[1] = tuple.FaceName; | 851 | row[1] = tuple.FaceName; |
| 880 | row[2] = tuple.Size; | 852 | row[2] = tuple.Size; |
| @@ -882,10 +854,9 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
| 882 | row[4] = styleBits == 0 ? null : (int?)styleBits; | 854 | row[4] = styleBits == 0 ? null : (int?)styleBits; |
| 883 | } | 855 | } |
| 884 | 856 | ||
| 885 | private void AddUpgradeTuple(UpgradeTuple tuple, WindowsInstallerData output) | 857 | private void AddUpgradeTuple(UpgradeTuple tuple) |
| 886 | { | 858 | { |
| 887 | var table = output.EnsureTable(this.TableDefinitions["Upgrade"]); | 859 | var row = (UpgradeRow)this.CreateRow(tuple, "Upgrade"); |
| 888 | var row = (UpgradeRow)table.CreateRow(tuple.SourceLineNumbers); | ||
| 889 | row.UpgradeCode = tuple.UpgradeCode; | 860 | row.UpgradeCode = tuple.UpgradeCode; |
| 890 | row.VersionMin = tuple.VersionMin; | 861 | row.VersionMin = tuple.VersionMin; |
| 891 | row.VersionMax = tuple.VersionMax; | 862 | row.VersionMax = tuple.VersionMax; |
| @@ -902,72 +873,71 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
| 902 | row.Attributes = attributes; | 873 | row.Attributes = attributes; |
| 903 | } | 874 | } |
| 904 | 875 | ||
| 905 | private void AddWixActionTuple(WixActionTuple tuple, WindowsInstallerData output) | 876 | private void AddWixActionTuple(WixActionTuple tuple) |
| 906 | { | 877 | { |
| 907 | // Get the table definition for the action (and ensure the proper table exists for a module). | 878 | // Get the table definition for the action (and ensure the proper table exists for a module). |
| 908 | TableDefinition sequenceTableDefinition = null; | 879 | string sequenceTableName = null; |
| 909 | switch (tuple.SequenceTable) | 880 | switch (tuple.SequenceTable) |
| 910 | { | 881 | { |
| 911 | case SequenceTable.AdminExecuteSequence: | 882 | case SequenceTable.AdminExecuteSequence: |
| 912 | if (OutputType.Module == output.Type) | 883 | if (OutputType.Module == this.Output.Type) |
| 913 | { | 884 | { |
| 914 | output.EnsureTable(this.TableDefinitions["AdminExecuteSequence"]); | 885 | this.Output.EnsureTable(this.TableDefinitions["AdminExecuteSequence"]); |
| 915 | sequenceTableDefinition = this.TableDefinitions["ModuleAdminExecuteSequence"]; | 886 | sequenceTableName = "ModuleAdminExecuteSequence"; |
| 916 | } | 887 | } |
| 917 | else | 888 | else |
| 918 | { | 889 | { |
| 919 | sequenceTableDefinition = this.TableDefinitions["AdminExecuteSequence"]; | 890 | sequenceTableName = "AdminExecuteSequence"; |
| 920 | } | 891 | } |
| 921 | break; | 892 | break; |
| 922 | case SequenceTable.AdminUISequence: | 893 | case SequenceTable.AdminUISequence: |
| 923 | if (OutputType.Module == output.Type) | 894 | if (OutputType.Module == this.Output.Type) |
| 924 | { | 895 | { |
| 925 | output.EnsureTable(this.TableDefinitions["AdminUISequence"]); | 896 | this.Output.EnsureTable(this.TableDefinitions["AdminUISequence"]); |
| 926 | sequenceTableDefinition = this.TableDefinitions["ModuleAdminUISequence"]; | 897 | sequenceTableName = "ModuleAdminUISequence"; |
| 927 | } | 898 | } |
| 928 | else | 899 | else |
| 929 | { | 900 | { |
| 930 | sequenceTableDefinition = this.TableDefinitions["AdminUISequence"]; | 901 | sequenceTableName = "AdminUISequence"; |
| 931 | } | 902 | } |
| 932 | break; | 903 | break; |
| 933 | case SequenceTable.AdvertiseExecuteSequence: | 904 | case SequenceTable.AdvertiseExecuteSequence: |
| 934 | if (OutputType.Module == output.Type) | 905 | if (OutputType.Module == this.Output.Type) |
| 935 | { | 906 | { |
| 936 | output.EnsureTable(this.TableDefinitions["AdvtExecuteSequence"]); | 907 | this.Output.EnsureTable(this.TableDefinitions["AdvtExecuteSequence"]); |
| 937 | sequenceTableDefinition = this.TableDefinitions["ModuleAdvtExecuteSequence"]; | 908 | sequenceTableName = "ModuleAdvtExecuteSequence"; |
| 938 | } | 909 | } |
| 939 | else | 910 | else |
| 940 | { | 911 | { |
| 941 | sequenceTableDefinition = this.TableDefinitions["AdvtExecuteSequence"]; | 912 | sequenceTableName = "AdvtExecuteSequence"; |
| 942 | } | 913 | } |
| 943 | break; | 914 | break; |
| 944 | case SequenceTable.InstallExecuteSequence: | 915 | case SequenceTable.InstallExecuteSequence: |
| 945 | if (OutputType.Module == output.Type) | 916 | if (OutputType.Module == this.Output.Type) |
| 946 | { | 917 | { |
| 947 | output.EnsureTable(this.TableDefinitions["InstallExecuteSequence"]); | 918 | this.Output.EnsureTable(this.TableDefinitions["InstallExecuteSequence"]); |
| 948 | sequenceTableDefinition = this.TableDefinitions["ModuleInstallExecuteSequence"]; | 919 | sequenceTableName = "ModuleInstallExecuteSequence"; |
| 949 | } | 920 | } |
| 950 | else | 921 | else |
| 951 | { | 922 | { |
| 952 | sequenceTableDefinition = this.TableDefinitions["InstallExecuteSequence"]; | 923 | sequenceTableName = "InstallExecuteSequence"; |
| 953 | } | 924 | } |
| 954 | break; | 925 | break; |
| 955 | case SequenceTable.InstallUISequence: | 926 | case SequenceTable.InstallUISequence: |
| 956 | if (OutputType.Module == output.Type) | 927 | if (OutputType.Module == this.Output.Type) |
| 957 | { | 928 | { |
| 958 | output.EnsureTable(this.TableDefinitions["InstallUISequence"]); | 929 | this.Output.EnsureTable(this.TableDefinitions["InstallUISequence"]); |
| 959 | sequenceTableDefinition = this.TableDefinitions["ModuleInstallUISequence"]; | 930 | sequenceTableName = "ModuleInstallUISequence"; |
| 960 | } | 931 | } |
| 961 | else | 932 | else |
| 962 | { | 933 | { |
| 963 | sequenceTableDefinition = this.TableDefinitions["InstallUISequence"]; | 934 | sequenceTableName = "InstallUISequence"; |
| 964 | } | 935 | } |
| 965 | break; | 936 | break; |
| 966 | } | 937 | } |
| 967 | 938 | ||
| 968 | // create the action sequence row in the output | 939 | // create the action sequence row in the output |
| 969 | var sequenceTable = output.EnsureTable(sequenceTableDefinition); | 940 | var row = this.CreateRow(tuple, sequenceTableName); |
| 970 | var row = sequenceTable.CreateRow(tuple.SourceLineNumbers); | ||
| 971 | 941 | ||
| 972 | if (SectionType.Module == this.Section.Type) | 942 | if (SectionType.Module == this.Section.Type) |
| 973 | { | 943 | { |
| @@ -992,7 +962,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
| 992 | } | 962 | } |
| 993 | } | 963 | } |
| 994 | 964 | ||
| 995 | private void AddWixCustomRowTuple(WixCustomRowTuple tuple, WindowsInstallerData output) | 965 | private void AddWixCustomRowTuple(WixCustomRowTuple tuple) |
| 996 | { | 966 | { |
| 997 | var customTableDefinition = this.TableDefinitions[tuple.Table]; | 967 | var customTableDefinition = this.TableDefinitions[tuple.Table]; |
| 998 | 968 | ||
| @@ -1002,8 +972,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
| 1002 | return; | 972 | return; |
| 1003 | } | 973 | } |
| 1004 | 974 | ||
| 1005 | var customTable = output.EnsureTable(customTableDefinition); | 975 | var customRow = this.CreateRow(tuple, customTableDefinition); |
| 1006 | var customRow = customTable.CreateRow(tuple.SourceLineNumbers); | ||
| 1007 | 976 | ||
| 1008 | #if TODO // SectionId seems like a good thing to preserve. | 977 | #if TODO // SectionId seems like a good thing to preserve. |
| 1009 | customRow.SectionId = tuple.SectionId; | 978 | customRow.SectionId = tuple.SectionId; |
| @@ -1073,16 +1042,15 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
| 1073 | } | 1042 | } |
| 1074 | } | 1043 | } |
| 1075 | 1044 | ||
| 1076 | private void AddWixEnsureTableTuple(WixEnsureTableTuple tuple, WindowsInstallerData output) | 1045 | private void AddWixEnsureTableTuple(WixEnsureTableTuple tuple) |
| 1077 | { | 1046 | { |
| 1078 | var tableDefinition = this.TableDefinitions[tuple.Table]; | 1047 | var tableDefinition = this.TableDefinitions[tuple.Table]; |
| 1079 | output.EnsureTable(tableDefinition); | 1048 | this.Output.EnsureTable(tableDefinition); |
| 1080 | } | 1049 | } |
| 1081 | 1050 | ||
| 1082 | private void AddWixMediaTemplateTuple(WixMediaTemplateTuple tuple, WindowsInstallerData output) | 1051 | private void AddWixMediaTemplateTuple(WixMediaTemplateTuple tuple) |
| 1083 | { | 1052 | { |
| 1084 | var table = output.EnsureTable(this.TableDefinitions["WixMediaTemplate"]); | 1053 | var row = (WixMediaTemplateRow)this.CreateRow(tuple, "WixMediaTemplate"); |
| 1085 | var row = (WixMediaTemplateRow)table.CreateRow(tuple.SourceLineNumbers); | ||
| 1086 | row.CabinetTemplate = tuple.CabinetTemplate; | 1054 | row.CabinetTemplate = tuple.CabinetTemplate; |
| 1087 | row.CompressionLevel = tuple.CompressionLevel; | 1055 | row.CompressionLevel = tuple.CompressionLevel; |
| 1088 | row.DiskPrompt = tuple.DiskPrompt; | 1056 | row.DiskPrompt = tuple.DiskPrompt; |
| @@ -1091,26 +1059,25 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
| 1091 | row.MaximumCabinetSizeForLargeFileSplitting = tuple.MaximumCabinetSizeForLargeFileSplitting ?? MaxValueOfMaxCabSizeForLargeFileSplitting; | 1059 | row.MaximumCabinetSizeForLargeFileSplitting = tuple.MaximumCabinetSizeForLargeFileSplitting ?? MaxValueOfMaxCabSizeForLargeFileSplitting; |
| 1092 | } | 1060 | } |
| 1093 | 1061 | ||
| 1094 | private void AddTupleFromExtension(IntermediateTuple tuple, WindowsInstallerData output) | 1062 | private void AddTupleFromExtension(IntermediateTuple tuple) |
| 1095 | { | 1063 | { |
| 1096 | foreach (var extension in this.BackendExtensions) | 1064 | foreach (var extension in this.BackendExtensions) |
| 1097 | { | 1065 | { |
| 1098 | if (extension.TryAddTupleToOutput(tuple, output)) | 1066 | if (extension.TryAddTupleToOutput(tuple, this.Output)) |
| 1099 | { | 1067 | { |
| 1100 | break; | 1068 | break; |
| 1101 | } | 1069 | } |
| 1102 | } | 1070 | } |
| 1103 | } | 1071 | } |
| 1104 | 1072 | ||
| 1105 | private void AddTupleDefaultly(IntermediateTuple tuple, WindowsInstallerData output, bool idIsPrimaryKey = false, string tableName = null) | 1073 | private void AddTupleDefaultly(IntermediateTuple tuple, bool idIsPrimaryKey = false, string tableName = null) |
| 1106 | { | 1074 | { |
| 1107 | if (!this.TableDefinitions.TryGet(tableName ?? tuple.Definition.Name, out var tableDefinition)) | 1075 | if (!this.TableDefinitions.TryGet(tableName ?? tuple.Definition.Name, out var tableDefinition)) |
| 1108 | { | 1076 | { |
| 1109 | return; | 1077 | return; |
| 1110 | } | 1078 | } |
| 1111 | 1079 | ||
| 1112 | var table = output.EnsureTable(tableDefinition); | 1080 | var row = this.CreateRow(tuple, tableDefinition); |
| 1113 | var row = table.CreateRow(tuple.SourceLineNumbers); | ||
| 1114 | var rowOffset = 0; | 1081 | var rowOffset = 0; |
| 1115 | 1082 | ||
| 1116 | if (idIsPrimaryKey) | 1083 | if (idIsPrimaryKey) |
| @@ -1159,6 +1126,18 @@ namespace WixToolset.Core.WindowsInstaller.Bind | |||
| 1159 | } | 1126 | } |
| 1160 | } | 1127 | } |
| 1161 | 1128 | ||
| 1129 | private Row CreateRow(IntermediateTuple tuple, string tableDefinitionName) => this.CreateRow(tuple, this.TableDefinitions[tableDefinitionName]); | ||
| 1130 | |||
| 1131 | private Row CreateRow(IntermediateTuple tuple, TableDefinition tableDefinition) | ||
| 1132 | { | ||
| 1133 | var table = this.Output.EnsureTable(tableDefinition); | ||
| 1134 | |||
| 1135 | var row = table.CreateRow(tuple.SourceLineNumbers); | ||
| 1136 | row.SectionId = this.Section.Id; | ||
| 1137 | |||
| 1138 | return row; | ||
| 1139 | } | ||
| 1140 | |||
| 1162 | private static string GetMsiFilenameValue(string shortName, string longName) | 1141 | private static string GetMsiFilenameValue(string shortName, string longName) |
| 1163 | { | 1142 | { |
| 1164 | if (String.IsNullOrEmpty(shortName) || String.Equals(shortName, longName, StringComparison.OrdinalIgnoreCase)) | 1143 | if (String.IsNullOrEmpty(shortName) || String.Equals(shortName, longName, StringComparison.OrdinalIgnoreCase)) |
