aboutsummaryrefslogtreecommitdiff
path: root/src/WixToolset.Core
diff options
context:
space:
mode:
authorRob Mensching <rob@firegiant.com>2021-04-10 15:04:04 -0700
committerRob Mensching <rob@firegiant.com>2021-04-12 10:24:01 -0700
commit3441afb46c4dc056493ab84f9b27434c4185d713 (patch)
treeec5d6b43292d34e256ebcbf6bf8795b4da46bc80 /src/WixToolset.Core
parente7b745b08c51b173c80253432a82583e73c46157 (diff)
downloadwix-3441afb46c4dc056493ab84f9b27434c4185d713.tar.gz
wix-3441afb46c4dc056493ab84f9b27434c4185d713.tar.bz2
wix-3441afb46c4dc056493ab84f9b27434c4185d713.zip
Improve implicit Component/@Id generation and duplicate GUID errors
Diffstat (limited to 'src/WixToolset.Core')
-rw-r--r--src/WixToolset.Core/Compiler.cs23
1 files changed, 13 insertions, 10 deletions
diff --git a/src/WixToolset.Core/Compiler.cs b/src/WixToolset.Core/Compiler.cs
index c5f3a763..c39bec70 100644
--- a/src/WixToolset.Core/Compiler.cs
+++ b/src/WixToolset.Core/Compiler.cs
@@ -2454,24 +2454,27 @@ namespace WixToolset.Core
2454 } 2454 }
2455 } 2455 }
2456 2456
2457 // check for conditions that exclude this component from using generated guids 2457 // Check for conditions that exclude this component from using implicit ids and/or generated guids.
2458 var isGeneratableGuidOk = "*" == guid; 2458 var allowImplicitIds = true;
2459 if (isGeneratableGuidOk) 2459 if (encounteredODBCDataSource || ComponentKeyPathType.Directory == keyPathType)
2460 { 2460 {
2461 if (encounteredODBCDataSource || ComponentKeyPathType.Directory == keyPathType) 2461 allowImplicitIds = false;
2462 if (guid == "*")
2462 { 2463 {
2463 this.Core.Write(ErrorMessages.IllegalComponentWithAutoGeneratedGuid(sourceLineNumbers)); 2464 this.Core.Write(ErrorMessages.IllegalComponentWithAutoGeneratedGuid(sourceLineNumbers));
2464 isGeneratableGuidOk = false;
2465 } 2465 }
2466 else if (0 < files && ComponentKeyPathType.Registry == keyPathType) 2466 }
2467 else if (0 < files && ComponentKeyPathType.Registry == keyPathType)
2468 {
2469 allowImplicitIds = false;
2470 if (guid == "*")
2467 { 2471 {
2468 this.Core.Write(ErrorMessages.IllegalComponentWithAutoGeneratedGuid(sourceLineNumbers, true)); 2472 this.Core.Write(ErrorMessages.IllegalComponentWithAutoGeneratedGuid(sourceLineNumbers, true));
2469 isGeneratableGuidOk = false;
2470 } 2473 }
2471 } 2474 }
2472 2475
2473 // check for implicit KeyPath which can easily be accidentally changed 2476 // Check for implicit KeyPath which can easily be accidentally changed
2474 if (this.ShowPedanticMessages && !keyFound && !isGeneratableGuidOk) 2477 if (this.ShowPedanticMessages && !keyFound && !allowImplicitIds)
2475 { 2478 {
2476 this.Core.Write(ErrorMessages.ImplicitComponentKeyPath(sourceLineNumbers, id.Id)); 2479 this.Core.Write(ErrorMessages.ImplicitComponentKeyPath(sourceLineNumbers, id.Id));
2477 } 2480 }
@@ -2481,7 +2484,7 @@ namespace WixToolset.Core
2481 // generatable guid must be met. 2484 // generatable guid must be met.
2482 if (componentIdPlaceholder == id.Id) 2485 if (componentIdPlaceholder == id.Id)
2483 { 2486 {
2484 if (isGeneratableGuidOk || keyFound && !String.IsNullOrEmpty(keyPath)) 2487 if (allowImplicitIds || keyFound && !String.IsNullOrEmpty(keyPath))
2485 { 2488 {
2486 this.componentIdPlaceholders.Add(componentIdPlaceholder, keyPath); 2489 this.componentIdPlaceholders.Add(componentIdPlaceholder, keyPath);
2487 2490