diff options
| author | Rob Mensching <rob@firegiant.com> | 2021-04-05 12:55:26 -0700 |
|---|---|---|
| committer | Rob Mensching <rob@firegiant.com> | 2021-04-06 16:10:05 -0700 |
| commit | 860f77f7c9d522074dc7e44cfe11281efd20687f (patch) | |
| tree | 49527e82264f2dac88247885e937f935ae2ac658 /src/WixToolset.Core/Compiler_Package.cs | |
| parent | 94db5671e85ce63487e3a415251cad0eb6abe3d1 (diff) | |
| download | wix-860f77f7c9d522074dc7e44cfe11281efd20687f.tar.gz wix-860f77f7c9d522074dc7e44cfe11281efd20687f.tar.bz2 wix-860f77f7c9d522074dc7e44cfe11281efd20687f.zip | |
Introduce "Subdirectory" which simplifies inline directory syntax
Completes wixtoolset/issues#4727
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 | } |
