diff options
Diffstat (limited to 'src/WixToolset.Core/Compiler_Package.cs')
-rw-r--r-- | src/WixToolset.Core/Compiler_Package.cs | 116 |
1 files changed, 85 insertions, 31 deletions
diff --git a/src/WixToolset.Core/Compiler_Package.cs b/src/WixToolset.Core/Compiler_Package.cs index afe02f08..576450f4 100644 --- a/src/WixToolset.Core/Compiler_Package.cs +++ b/src/WixToolset.Core/Compiler_Package.cs | |||
@@ -2146,11 +2146,12 @@ namespace WixToolset.Core | |||
2146 | { | 2146 | { |
2147 | var sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node); | 2147 | var sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node); |
2148 | Identifier id = null; | 2148 | Identifier id = null; |
2149 | string directory = null; | 2149 | string directoryId = null; |
2150 | string subdirectory = null; | ||
2150 | string name = null; | 2151 | string name = null; |
2151 | bool? onInstall = null; | 2152 | bool? onInstall = null; |
2152 | bool? onUninstall = null; | 2153 | bool? onUninstall = null; |
2153 | string property = null; | 2154 | string propertyId = null; |
2154 | string shortName = null; | 2155 | string shortName = null; |
2155 | 2156 | ||
2156 | foreach (var attrib in node.Attributes()) | 2157 | foreach (var attrib in node.Attributes()) |
@@ -2163,7 +2164,11 @@ namespace WixToolset.Core | |||
2163 | id = this.Core.GetAttributeIdentifier(sourceLineNumbers, attrib); | 2164 | id = this.Core.GetAttributeIdentifier(sourceLineNumbers, attrib); |
2164 | break; | 2165 | break; |
2165 | case "Directory": | 2166 | case "Directory": |
2166 | directory = this.Core.CreateDirectoryReferenceFromInlineSyntax(sourceLineNumbers, attrib, parentDirectory); | 2167 | directoryId = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib); |
2168 | this.Core.CreateSimpleReference(sourceLineNumbers, SymbolDefinitions.Directory, directoryId); | ||
2169 | break; | ||
2170 | case "Subdirectory": | ||
2171 | directoryId = this.Core.GetAttributeLongFilename(sourceLineNumbers, attrib, allowRelative: true); | ||
2167 | break; | 2172 | break; |
2168 | case "Name": | 2173 | case "Name": |
2169 | name = this.Core.GetAttributeLongFilename(sourceLineNumbers, attrib, true); | 2174 | name = this.Core.GetAttributeLongFilename(sourceLineNumbers, attrib, true); |
@@ -2185,7 +2190,7 @@ namespace WixToolset.Core | |||
2185 | } | 2190 | } |
2186 | break; | 2191 | break; |
2187 | case "Property": | 2192 | case "Property": |
2188 | property = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib); | 2193 | propertyId = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib); |
2189 | break; | 2194 | break; |
2190 | case "ShortName": | 2195 | case "ShortName": |
2191 | shortName = this.Core.GetAttributeShortFilename(sourceLineNumbers, attrib, true); | 2196 | shortName = this.Core.GetAttributeShortFilename(sourceLineNumbers, attrib, true); |
@@ -2211,15 +2216,23 @@ namespace WixToolset.Core | |||
2211 | this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "On")); | 2216 | this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "On")); |
2212 | } | 2217 | } |
2213 | 2218 | ||
2214 | if (null != directory && null != property) | 2219 | if (String.IsNullOrEmpty(propertyId)) |
2220 | { | ||
2221 | directoryId = this.HandleSubdirectory(sourceLineNumbers, node, directoryId ?? parentDirectory, subdirectory, "Directory", "Subdirectory"); | ||
2222 | } | ||
2223 | else if (!String.IsNullOrEmpty(directoryId)) | ||
2224 | { | ||
2225 | this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "Property", "Directory", directoryId)); | ||
2226 | } | ||
2227 | else if (!String.IsNullOrEmpty(subdirectory)) | ||
2215 | { | 2228 | { |
2216 | this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "Property", "Directory", directory)); | 2229 | this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "Property", "Subdirectory", subdirectory)); |
2217 | } | 2230 | } |
2218 | 2231 | ||
2219 | if (null == id) | 2232 | if (null == id) |
2220 | { | 2233 | { |
2221 | var on = (onInstall == true && onUninstall == true) ? 3 : (onUninstall == true) ? 2 : (onInstall == true) ? 1 : 0; | 2234 | var on = (onInstall == true && onUninstall == true) ? 3 : (onUninstall == true) ? 2 : (onInstall == true) ? 1 : 0; |
2222 | id = this.Core.CreateIdentifier("rmf", directory ?? property ?? parentDirectory, LowercaseOrNull(shortName), LowercaseOrNull(name), on.ToString()); | 2235 | id = this.Core.CreateIdentifier("rmf", directoryId ?? propertyId ?? parentDirectory, LowercaseOrNull(shortName), LowercaseOrNull(name), on.ToString()); |
2223 | } | 2236 | } |
2224 | 2237 | ||
2225 | this.Core.ParseForExtensionElements(node); | 2238 | this.Core.ParseForExtensionElements(node); |
@@ -2231,7 +2244,7 @@ namespace WixToolset.Core | |||
2231 | ComponentRef = componentId, | 2244 | ComponentRef = componentId, |
2232 | FileName = name, | 2245 | FileName = name, |
2233 | ShortFileName = shortName, | 2246 | ShortFileName = shortName, |
2234 | DirPropertyRef = directory ?? property ?? parentDirectory, | 2247 | DirPropertyRef = directoryId ?? propertyId ?? parentDirectory, |
2235 | OnInstall = onInstall, | 2248 | OnInstall = onInstall, |
2236 | OnUninstall = onUninstall, | 2249 | OnUninstall = onUninstall, |
2237 | }); | 2250 | }); |
@@ -2248,10 +2261,11 @@ namespace WixToolset.Core | |||
2248 | { | 2261 | { |
2249 | var sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node); | 2262 | var sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node); |
2250 | Identifier id = null; | 2263 | Identifier id = null; |
2251 | string directory = null; | 2264 | string directoryId = null; |
2265 | string subdirectory = null; | ||
2252 | bool? onInstall = null; | 2266 | bool? onInstall = null; |
2253 | bool? onUninstall = null; | 2267 | bool? onUninstall = null; |
2254 | string property = null; | 2268 | string propertyId = null; |
2255 | 2269 | ||
2256 | foreach (var attrib in node.Attributes()) | 2270 | foreach (var attrib in node.Attributes()) |
2257 | { | 2271 | { |
@@ -2263,7 +2277,11 @@ namespace WixToolset.Core | |||
2263 | id = this.Core.GetAttributeIdentifier(sourceLineNumbers, attrib); | 2277 | id = this.Core.GetAttributeIdentifier(sourceLineNumbers, attrib); |
2264 | break; | 2278 | break; |
2265 | case "Directory": | 2279 | case "Directory": |
2266 | directory = this.Core.CreateDirectoryReferenceFromInlineSyntax(sourceLineNumbers, attrib, parentDirectory); | 2280 | directoryId = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib); |
2281 | this.Core.CreateSimpleReference(sourceLineNumbers, SymbolDefinitions.Directory, directoryId); | ||
2282 | break; | ||
2283 | case "Subdirectory": | ||
2284 | subdirectory = this.Core.GetAttributeLongFilename(sourceLineNumbers, attrib, allowRelative: true); | ||
2267 | break; | 2285 | break; |
2268 | case "On": | 2286 | case "On": |
2269 | var onValue = this.Core.GetAttributeValue(sourceLineNumbers, attrib); | 2287 | var onValue = this.Core.GetAttributeValue(sourceLineNumbers, attrib); |
@@ -2282,7 +2300,7 @@ namespace WixToolset.Core | |||
2282 | } | 2300 | } |
2283 | break; | 2301 | break; |
2284 | case "Property": | 2302 | case "Property": |
2285 | property = this.Core.GetAttributeValue(sourceLineNumbers, attrib); | 2303 | propertyId = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib); |
2286 | break; | 2304 | break; |
2287 | default: | 2305 | default: |
2288 | this.Core.UnexpectedAttribute(node, attrib); | 2306 | this.Core.UnexpectedAttribute(node, attrib); |
@@ -2300,15 +2318,23 @@ namespace WixToolset.Core | |||
2300 | this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "On")); | 2318 | this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "On")); |
2301 | } | 2319 | } |
2302 | 2320 | ||
2303 | if (null != directory && null != property) | 2321 | if (String.IsNullOrEmpty(propertyId)) |
2322 | { | ||
2323 | directoryId = this.HandleSubdirectory(sourceLineNumbers, node, directoryId ?? parentDirectory, subdirectory, "Directory", "Subdirectory"); | ||
2324 | } | ||
2325 | else if (!String.IsNullOrEmpty(directoryId)) | ||
2326 | { | ||
2327 | this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "Property", "Directory", directoryId)); | ||
2328 | } | ||
2329 | else if (!String.IsNullOrEmpty(subdirectory)) | ||
2304 | { | 2330 | { |
2305 | this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "Property", "Directory", directory)); | 2331 | this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "Property", "Subdirectory", subdirectory)); |
2306 | } | 2332 | } |
2307 | 2333 | ||
2308 | if (null == id) | 2334 | if (null == id) |
2309 | { | 2335 | { |
2310 | var on = (onInstall == true && onUninstall == true) ? 3 : (onUninstall == true) ? 2 : (onInstall == true) ? 1 : 0; | 2336 | var on = (onInstall == true && onUninstall == true) ? 3 : (onUninstall == true) ? 2 : (onInstall == true) ? 1 : 0; |
2311 | id = this.Core.CreateIdentifier("rmf", directory ?? property ?? parentDirectory, on.ToString()); | 2337 | id = this.Core.CreateIdentifier("rmf", directoryId ?? propertyId, on.ToString()); |
2312 | } | 2338 | } |
2313 | 2339 | ||
2314 | this.Core.ParseForExtensionElements(node); | 2340 | this.Core.ParseForExtensionElements(node); |
@@ -2318,7 +2344,7 @@ namespace WixToolset.Core | |||
2318 | this.Core.AddSymbol(new RemoveFileSymbol(sourceLineNumbers, id) | 2344 | this.Core.AddSymbol(new RemoveFileSymbol(sourceLineNumbers, id) |
2319 | { | 2345 | { |
2320 | ComponentRef = componentId, | 2346 | ComponentRef = componentId, |
2321 | DirPropertyRef = directory ?? property ?? parentDirectory, | 2347 | DirPropertyRef = directoryId ?? propertyId, |
2322 | OnInstall = onInstall, | 2348 | OnInstall = onInstall, |
2323 | OnUninstall = onUninstall | 2349 | OnUninstall = onUninstall |
2324 | }); | 2350 | }); |
@@ -2335,6 +2361,7 @@ namespace WixToolset.Core | |||
2335 | { | 2361 | { |
2336 | var sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node); | 2362 | var sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node); |
2337 | Identifier id = null; | 2363 | Identifier id = null; |
2364 | string subdirectory = null; | ||
2338 | var runFromSource = CompilerConstants.IntegerNotSet; | 2365 | var runFromSource = CompilerConstants.IntegerNotSet; |
2339 | var runLocal = CompilerConstants.IntegerNotSet; | 2366 | var runLocal = CompilerConstants.IntegerNotSet; |
2340 | 2367 | ||
@@ -2348,7 +2375,11 @@ namespace WixToolset.Core | |||
2348 | id = this.Core.GetAttributeIdentifier(sourceLineNumbers, attrib); | 2375 | id = this.Core.GetAttributeIdentifier(sourceLineNumbers, attrib); |
2349 | break; | 2376 | break; |
2350 | case "Directory": | 2377 | case "Directory": |
2351 | directoryId = this.Core.CreateDirectoryReferenceFromInlineSyntax(sourceLineNumbers, attrib, directoryId); | 2378 | directoryId = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib); |
2379 | this.Core.CreateSimpleReference(sourceLineNumbers, SymbolDefinitions.Directory, directoryId); | ||
2380 | break; | ||
2381 | case "Subdirectory": | ||
2382 | subdirectory = this.Core.GetAttributeLongFilename(sourceLineNumbers, attrib, allowRelative: true); | ||
2352 | break; | 2383 | break; |
2353 | case "RunFromSource": | 2384 | case "RunFromSource": |
2354 | runFromSource = this.Core.GetAttributeIntegerValue(sourceLineNumbers, attrib, 0, Int32.MaxValue); | 2385 | runFromSource = this.Core.GetAttributeIntegerValue(sourceLineNumbers, attrib, 0, Int32.MaxValue); |
@@ -2367,6 +2398,8 @@ namespace WixToolset.Core | |||
2367 | } | 2398 | } |
2368 | } | 2399 | } |
2369 | 2400 | ||
2401 | directoryId = this.HandleSubdirectory(sourceLineNumbers, node, directoryId, subdirectory, "Directory", "Subdirectory"); | ||
2402 | |||
2370 | if (null == id) | 2403 | if (null == id) |
2371 | { | 2404 | { |
2372 | id = this.Core.CreateIdentifier("rc", componentId, directoryId); | 2405 | id = this.Core.CreateIdentifier("rc", componentId, directoryId); |
@@ -4001,7 +4034,8 @@ namespace WixToolset.Core | |||
4001 | string description = null; | 4034 | string description = null; |
4002 | string descriptionResourceDll = null; | 4035 | string descriptionResourceDll = null; |
4003 | int? descriptionResourceId = null; | 4036 | int? descriptionResourceId = null; |
4004 | string directory = null; | 4037 | string directoryId = null; |
4038 | string subdirectory = null; | ||
4005 | string displayResourceDll = null; | 4039 | string displayResourceDll = null; |
4006 | int? displayResourceId = null; | 4040 | int? displayResourceId = null; |
4007 | int? hotkey = null; | 4041 | int? hotkey = null; |
@@ -4011,7 +4045,8 @@ namespace WixToolset.Core | |||
4011 | string shortName = null; | 4045 | string shortName = null; |
4012 | ShortcutShowType? show = null; | 4046 | ShortcutShowType? show = null; |
4013 | string target = null; | 4047 | string target = null; |
4014 | string workingDirectory = null; | 4048 | string workingDirectoryId = null; |
4049 | string workingSubdirectory = null; | ||
4015 | 4050 | ||
4016 | foreach (var attrib in node.Attributes()) | 4051 | foreach (var attrib in node.Attributes()) |
4017 | { | 4052 | { |
@@ -4038,7 +4073,11 @@ namespace WixToolset.Core | |||
4038 | descriptionResourceId = this.Core.GetAttributeIntegerValue(sourceLineNumbers, attrib, 0, Int16.MaxValue); | 4073 | descriptionResourceId = this.Core.GetAttributeIntegerValue(sourceLineNumbers, attrib, 0, Int16.MaxValue); |
4039 | break; | 4074 | break; |
4040 | case "Directory": | 4075 | case "Directory": |
4041 | directory = this.Core.CreateDirectoryReferenceFromInlineSyntax(sourceLineNumbers, attrib, null); | 4076 | directoryId = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib); |
4077 | this.Core.CreateSimpleReference(sourceLineNumbers, SymbolDefinitions.Directory, directoryId); | ||
4078 | break; | ||
4079 | case "Subdirectory": | ||
4080 | subdirectory = this.Core.GetAttributeLongFilename(sourceLineNumbers, attrib, allowRelative: true); | ||
4042 | break; | 4081 | break; |
4043 | case "DisplayResourceDll": | 4082 | case "DisplayResourceDll": |
4044 | displayResourceDll = this.Core.GetAttributeValue(sourceLineNumbers, attrib); | 4083 | displayResourceDll = this.Core.GetAttributeValue(sourceLineNumbers, attrib); |
@@ -4086,7 +4125,11 @@ namespace WixToolset.Core | |||
4086 | target = this.Core.GetAttributeValue(sourceLineNumbers, attrib); | 4125 | target = this.Core.GetAttributeValue(sourceLineNumbers, attrib); |
4087 | break; | 4126 | break; |
4088 | case "WorkingDirectory": | 4127 | case "WorkingDirectory": |
4089 | workingDirectory = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib); | 4128 | workingDirectoryId = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib); |
4129 | this.Core.CreateSimpleReference(sourceLineNumbers, SymbolDefinitions.Directory, workingDirectoryId); | ||
4130 | break; | ||
4131 | case "WorkingSubdirectory": | ||
4132 | workingSubdirectory = this.Core.GetAttributeLongFilename(sourceLineNumbers, attrib, allowRelative: true); | ||
4090 | break; | 4133 | break; |
4091 | default: | 4134 | default: |
4092 | this.Core.UnexpectedAttribute(node, attrib); | 4135 | this.Core.UnexpectedAttribute(node, attrib); |
@@ -4104,11 +4147,11 @@ namespace WixToolset.Core | |||
4104 | this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "Target", "Advertise", "yes")); | 4147 | this.Core.Write(ErrorMessages.IllegalAttributeWithOtherAttribute(sourceLineNumbers, node.Name.LocalName, "Target", "Advertise", "yes")); |
4105 | } | 4148 | } |
4106 | 4149 | ||
4107 | if (null == directory) | 4150 | if (null == directoryId) |
4108 | { | 4151 | { |
4109 | if ("Component" == parentElementLocalName) | 4152 | if ("Component" == parentElementLocalName) |
4110 | { | 4153 | { |
4111 | directory = defaultTarget; | 4154 | directoryId = defaultTarget; |
4112 | } | 4155 | } |
4113 | else | 4156 | else |
4114 | { | 4157 | { |
@@ -4116,6 +4159,8 @@ namespace WixToolset.Core | |||
4116 | } | 4159 | } |
4117 | } | 4160 | } |
4118 | 4161 | ||
4162 | directoryId = this.HandleSubdirectory(sourceLineNumbers, node, directoryId, subdirectory, "Directory", "Subdirectory"); | ||
4163 | |||
4119 | if (null != descriptionResourceDll) | 4164 | if (null != descriptionResourceDll) |
4120 | { | 4165 | { |
4121 | if (!descriptionResourceId.HasValue) | 4166 | if (!descriptionResourceId.HasValue) |
@@ -4151,6 +4196,8 @@ namespace WixToolset.Core | |||
4151 | this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Name")); | 4196 | this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Name")); |
4152 | } | 4197 | } |
4153 | 4198 | ||
4199 | workingDirectoryId = this.HandleSubdirectory(sourceLineNumbers, node, workingDirectoryId, workingSubdirectory, "WorkingDirectory", "WorkingSubdirectory"); | ||
4200 | |||
4154 | if ("Component" != parentElementLocalName && null != target) | 4201 | if ("Component" != parentElementLocalName && null != target) |
4155 | { | 4202 | { |
4156 | this.Core.Write(ErrorMessages.IllegalAttributeWhenNested(sourceLineNumbers, node.Name.LocalName, "Target", parentElementLocalName)); | 4203 | this.Core.Write(ErrorMessages.IllegalAttributeWhenNested(sourceLineNumbers, node.Name.LocalName, "Target", parentElementLocalName)); |
@@ -4158,7 +4205,7 @@ namespace WixToolset.Core | |||
4158 | 4205 | ||
4159 | if (null == id) | 4206 | if (null == id) |
4160 | { | 4207 | { |
4161 | id = this.Core.CreateIdentifier("sct", directory, LowercaseOrNull(name)); | 4208 | id = this.Core.CreateIdentifier("sct", directoryId, LowercaseOrNull(name)); |
4162 | } | 4209 | } |
4163 | 4210 | ||
4164 | foreach (var child in node.Elements()) | 4211 | foreach (var child in node.Elements()) |
@@ -4209,7 +4256,7 @@ namespace WixToolset.Core | |||
4209 | 4256 | ||
4210 | this.Core.AddSymbol(new ShortcutSymbol(sourceLineNumbers, id) | 4257 | this.Core.AddSymbol(new ShortcutSymbol(sourceLineNumbers, id) |
4211 | { | 4258 | { |
4212 | DirectoryRef = directory, | 4259 | DirectoryRef = directoryId, |
4213 | Name = name, | 4260 | Name = name, |
4214 | ShortName = shortName, | 4261 | ShortName = shortName, |
4215 | ComponentRef = componentId, | 4262 | ComponentRef = componentId, |
@@ -4220,7 +4267,7 @@ namespace WixToolset.Core | |||
4220 | IconRef = icon, | 4267 | IconRef = icon, |
4221 | IconIndex = iconIndex, | 4268 | IconIndex = iconIndex, |
4222 | Show = show, | 4269 | Show = show, |
4223 | WorkingDirectory = workingDirectory, | 4270 | WorkingDirectory = workingDirectoryId, |
4224 | DisplayResourceDll = displayResourceDll, | 4271 | DisplayResourceDll = displayResourceDll, |
4225 | DisplayResourceId = displayResourceId, | 4272 | DisplayResourceId = displayResourceId, |
4226 | DescriptionResourceDll = descriptionResourceDll, | 4273 | DescriptionResourceDll = descriptionResourceDll, |
@@ -4309,7 +4356,8 @@ namespace WixToolset.Core | |||
4309 | var cost = CompilerConstants.IntegerNotSet; | 4356 | var cost = CompilerConstants.IntegerNotSet; |
4310 | string description = null; | 4357 | string description = null; |
4311 | var flags = 0; | 4358 | var flags = 0; |
4312 | string helpDirectory = null; | 4359 | string helpDirectoryId = null; |
4360 | string helpSubdirectory = null; | ||
4313 | var language = CompilerConstants.IntegerNotSet; | 4361 | var language = CompilerConstants.IntegerNotSet; |
4314 | var majorVersion = CompilerConstants.IntegerNotSet; | 4362 | var majorVersion = CompilerConstants.IntegerNotSet; |
4315 | var minorVersion = CompilerConstants.IntegerNotSet; | 4363 | var minorVersion = CompilerConstants.IntegerNotSet; |
@@ -4346,7 +4394,11 @@ namespace WixToolset.Core | |||
4346 | } | 4394 | } |
4347 | break; | 4395 | break; |
4348 | case "HelpDirectory": | 4396 | case "HelpDirectory": |
4349 | helpDirectory = this.Core.CreateDirectoryReferenceFromInlineSyntax(sourceLineNumbers, attrib, null); | 4397 | helpDirectoryId = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib); |
4398 | this.Core.CreateSimpleReference(sourceLineNumbers, SymbolDefinitions.Directory, helpDirectoryId); | ||
4399 | break; | ||
4400 | case "HelpSubdirectory": | ||
4401 | helpSubdirectory = this.Core.GetAttributeLongFilename(sourceLineNumbers, attrib, allowRelative: true); | ||
4350 | break; | 4402 | break; |
4351 | case "Hidden": | 4403 | case "Hidden": |
4352 | if (YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib)) | 4404 | if (YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib)) |
@@ -4394,6 +4446,8 @@ namespace WixToolset.Core | |||
4394 | language = CompilerConstants.IllegalInteger; | 4446 | language = CompilerConstants.IllegalInteger; |
4395 | } | 4447 | } |
4396 | 4448 | ||
4449 | helpDirectoryId = this.HandleSubdirectory(sourceLineNumbers, node, helpDirectoryId, helpSubdirectory, "HelpDirectory", "HelpSubdirectory"); | ||
4450 | |||
4397 | // build up the typelib version string for the registry if the major or minor version was specified | 4451 | // build up the typelib version string for the registry if the major or minor version was specified |
4398 | string registryVersion = null; | 4452 | string registryVersion = null; |
4399 | if (CompilerConstants.IntegerNotSet != majorVersion || CompilerConstants.IntegerNotSet != minorVersion) | 4453 | if (CompilerConstants.IntegerNotSet != majorVersion || CompilerConstants.IntegerNotSet != minorVersion) |
@@ -4488,7 +4542,7 @@ namespace WixToolset.Core | |||
4488 | Language = language, | 4542 | Language = language, |
4489 | ComponentRef = componentId, | 4543 | ComponentRef = componentId, |
4490 | Description = description, | 4544 | Description = description, |
4491 | DirectoryRef = helpDirectory, | 4545 | DirectoryRef = helpDirectoryId, |
4492 | FeatureRef = Guid.Empty.ToString("B") | 4546 | FeatureRef = Guid.Empty.ToString("B") |
4493 | }); | 4547 | }); |
4494 | 4548 | ||
@@ -4534,10 +4588,10 @@ namespace WixToolset.Core | |||
4534 | // HKCR\TypeLib\[ID]\[MajorVersion].[MinorVersion]\FLAGS, (Default) = [TypeLibFlags] | 4588 | // HKCR\TypeLib\[ID]\[MajorVersion].[MinorVersion]\FLAGS, (Default) = [TypeLibFlags] |
4535 | this.Core.CreateRegistryRow(sourceLineNumbers, RegistryRootType.ClassesRoot, String.Format(CultureInfo.InvariantCulture, @"TypeLib\{0}\{1}\FLAGS", id, registryVersion), null, flags.ToString(CultureInfo.InvariantCulture.NumberFormat), componentId); | 4589 | this.Core.CreateRegistryRow(sourceLineNumbers, RegistryRootType.ClassesRoot, String.Format(CultureInfo.InvariantCulture, @"TypeLib\{0}\{1}\FLAGS", id, registryVersion), null, flags.ToString(CultureInfo.InvariantCulture.NumberFormat), componentId); |
4536 | 4590 | ||
4537 | if (null != helpDirectory) | 4591 | if (null != helpDirectoryId) |
4538 | { | 4592 | { |
4539 | // HKCR\TypeLib\[ID]\[MajorVersion].[MinorVersion]\HELPDIR, (Default) = [HelpDirectory] | 4593 | // HKCR\TypeLib\[ID]\[MajorVersion].[MinorVersion]\HELPDIR, (Default) = [HelpDirectory] |
4540 | this.Core.CreateRegistryRow(sourceLineNumbers, RegistryRootType.ClassesRoot, String.Format(CultureInfo.InvariantCulture, @"TypeLib\{0}\{1}\HELPDIR", id, registryVersion), null, String.Concat("[", helpDirectory, "]"), componentId); | 4594 | this.Core.CreateRegistryRow(sourceLineNumbers, RegistryRootType.ClassesRoot, String.Format(CultureInfo.InvariantCulture, @"TypeLib\{0}\{1}\HELPDIR", id, registryVersion), null, String.Concat("[", helpDirectoryId, "]"), componentId); |
4541 | } | 4595 | } |
4542 | } | 4596 | } |
4543 | } | 4597 | } |