aboutsummaryrefslogtreecommitdiff
path: root/src/WixToolset.Core/Compiler_Package.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/WixToolset.Core/Compiler_Package.cs')
-rw-r--r--src/WixToolset.Core/Compiler_Package.cs116
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 }