Fix mod content installers.
In 4312a4d3f4 MiniYaml merging was adjusted. One effect of this change was that duplicate keys in files that did not previously require merging was previously allowed, but was now an error. (Test case `TestMergeConflictsNoMerge`)
The installer files were relying on the previous behaviour to allow multiple `ContentPackage` keys. The above change caused a regression where attempting to manage mod content would crash due to now erroring on the duplicate keys.
We fix the issue by applying a unique ID suffix, as is a common pattern elsewhere in our yaml files, and teach InstallFromSourceLogic to recognise and strip it.
This commit is contained in:
@@ -5,7 +5,7 @@ covertops: Covert Operations Expansion (English)
|
||||
CONQUER.MIX: 713b53fa4c188ca9619c6bbeadbfc86513704266
|
||||
Install:
|
||||
# Covert Operations music (optional):
|
||||
ContentPackage:
|
||||
ContentPackage@music-covertops:
|
||||
Name: music-covertops
|
||||
Actions:
|
||||
Copy: .
|
||||
|
||||
@@ -22,7 +22,7 @@ tfd: C&C The First Decade (English)
|
||||
^SupportDir|Content/cnc/transit.mix: CnC\\TRANSIT.MIX
|
||||
^SupportDir|Content/cnc/movies.mix: CnC\\MOVIES.MIX
|
||||
# GDI campaign briefings (optional):
|
||||
ContentPackage:
|
||||
ContentPackage@movies-gdi:
|
||||
Name: movies-gdi
|
||||
Actions:
|
||||
ExtractMix: ^SupportDir|Content/cnc/movies.mix
|
||||
@@ -92,7 +92,7 @@ tfd: C&C The First Decade (English)
|
||||
^SupportDir|Content/cnc/movies/bcanyon.vqa: bcanyon.vqa
|
||||
^SupportDir|Content/cnc/movies/banner.vqa: banner.vqa
|
||||
# Nod campaign briefings (optional):
|
||||
ContentPackage:
|
||||
ContentPackage@movies-nod:
|
||||
Name: movies-nod
|
||||
Actions:
|
||||
ExtractMix: ^SupportDir|Content/cnc/movies.mix
|
||||
@@ -158,7 +158,7 @@ tfd: C&C The First Decade (English)
|
||||
^SupportDir|Content/cnc/movies/akira.vqa: akira.vqa
|
||||
^SupportDir|Content/cnc/movies/airstrk.vqa: airstrk.vqa
|
||||
# Base game music (optional):
|
||||
ContentPackage:
|
||||
ContentPackage@music:
|
||||
Name: music
|
||||
Actions:
|
||||
ExtractIscab: data1.hdr
|
||||
@@ -168,7 +168,7 @@ tfd: C&C The First Decade (English)
|
||||
Extract:
|
||||
^SupportDir|Content/cnc/scores.mix: CnC\\SCORES.MIX
|
||||
# Covert Operations music (optional):
|
||||
ContentPackage:
|
||||
ContentPackage@music-covertops:
|
||||
Name: music-covertops
|
||||
Actions:
|
||||
ExtractIscab: data1.hdr
|
||||
|
||||
@@ -5,7 +5,7 @@ gdi95: C&C Gold (GDI Disc, English)
|
||||
CONQUER.MIX: 833e02a09aae694659eb312d3838367f681d1b30
|
||||
Install:
|
||||
# Base game files:
|
||||
ContentPackage:
|
||||
ContentPackage@base:
|
||||
Name: base
|
||||
Actions:
|
||||
Copy: .
|
||||
@@ -20,13 +20,13 @@ gdi95: C&C Gold (GDI Disc, English)
|
||||
^SupportDir|Content/cnc/tempicnh.mix: TEMPICNH.MIX
|
||||
^SupportDir|Content/cnc/transit.mix: TRANSIT.MIX
|
||||
# Base game music (optional):
|
||||
ContentPackage:
|
||||
ContentPackage@music:
|
||||
Name: music
|
||||
Actions:
|
||||
Copy: .
|
||||
^SupportDir|Content/cnc/scores.mix: SCORES.MIX
|
||||
# GDI campaign briefings (optional):
|
||||
ContentPackage:
|
||||
ContentPackage@movies-gdi:
|
||||
Name: movies-gdi
|
||||
Actions:
|
||||
ExtractMix: MOVIES.MIX
|
||||
|
||||
@@ -5,7 +5,7 @@ nod95: C&C Gold (Nod Disc, English)
|
||||
CONQUER.MIX: 833e02a09aae694659eb312d3838367f681d1b30
|
||||
Install:
|
||||
# Base game files:
|
||||
ContentPackage:
|
||||
ContentPackage@base:
|
||||
Name: base
|
||||
Actions:
|
||||
Copy: .
|
||||
@@ -20,13 +20,13 @@ nod95: C&C Gold (Nod Disc, English)
|
||||
^SupportDir|Content/cnc/tempicnh.mix: TEMPICNH.MIX
|
||||
^SupportDir|Content/cnc/transit.mix: TRANSIT.MIX
|
||||
# Base game music (optional):
|
||||
ContentPackage:
|
||||
ContentPackage@music:
|
||||
Name: music
|
||||
Actions:
|
||||
Copy: .
|
||||
^SupportDir|Content/cnc/scores.mix: SCORES.MIX
|
||||
# Nod campaign briefings (optional):
|
||||
ContentPackage:
|
||||
ContentPackage@movies-nod:
|
||||
Name: movies-nod
|
||||
Actions:
|
||||
ExtractMix: MOVIES.MIX
|
||||
|
||||
@@ -7,7 +7,7 @@ tuc-origin: C&C The Ultimate Collection (Origin version, English)
|
||||
CONQUER.MIX: 833e02a09aae694659eb312d3838367f681d1b30
|
||||
Install:
|
||||
# Base game files:
|
||||
ContentPackage:
|
||||
ContentPackage@base:
|
||||
Name: base
|
||||
Actions:
|
||||
Copy: .
|
||||
@@ -21,19 +21,19 @@ tuc-origin: C&C The Ultimate Collection (Origin version, English)
|
||||
^SupportDir|Content/cnc/tempicnh.mix: TEMPICNH.MIX
|
||||
^SupportDir|Content/cnc/transit.mix: TRANSIT.MIX
|
||||
# Base game music (optional):
|
||||
ContentPackage:
|
||||
ContentPackage@music:
|
||||
Name: music
|
||||
Actions:
|
||||
Copy: .
|
||||
^SupportDir|Content/cnc/scores.mix: SCORES.MIX
|
||||
# Covert Operations music (optional):
|
||||
ContentPackage:
|
||||
ContentPackage@music-covertops:
|
||||
Name: music-covertops
|
||||
Actions:
|
||||
Copy: .
|
||||
^SupportDir|Content/cnc/scores-covertops.mix: covert/SCORES.MIX
|
||||
# GDI campaign briefings (optional):
|
||||
ContentPackage:
|
||||
ContentPackage@movies-gdi:
|
||||
Name: movies-gdi
|
||||
Actions:
|
||||
ExtractMix: movies.mix
|
||||
@@ -103,7 +103,7 @@ tuc-origin: C&C The Ultimate Collection (Origin version, English)
|
||||
^SupportDir|Content/cnc/movies/bcanyon.vqa: bcanyon.vqa
|
||||
^SupportDir|Content/cnc/movies/banner.vqa: banner.vqa
|
||||
# Nod campaign briefings (optional):
|
||||
ContentPackage:
|
||||
ContentPackage@movies-nod:
|
||||
Name: movies-nod
|
||||
Actions:
|
||||
ExtractMix: movies.mix
|
||||
@@ -179,7 +179,7 @@ cncr-origin: C&C Remastered Collection (Origin version, English)
|
||||
Data/CNCDATA/TIBERIAN_DAWN/CD1/CONQUER.MIX: 3f891c8dc0864f654e1710430ea4ff34c3715e97
|
||||
Install:
|
||||
# Base game files:
|
||||
ContentPackage:
|
||||
ContentPackage@base:
|
||||
Name: base
|
||||
Actions:
|
||||
Copy: Data/CNCDATA/TIBERIAN_DAWN/CD1
|
||||
@@ -193,20 +193,20 @@ cncr-origin: C&C Remastered Collection (Origin version, English)
|
||||
^SupportDir|Content/cnc/transit.mix: TRANSIT.MIX
|
||||
^SupportDir|Content/cnc/winter.mix: WINTER.MIX
|
||||
# Base game music (optional):
|
||||
ContentPackage:
|
||||
ContentPackage@music:
|
||||
Name: music
|
||||
Actions:
|
||||
Copy: Data/CNCDATA/TIBERIAN_DAWN/CD1
|
||||
^SupportDir|Content/cnc/scores.mix: SCORES.MIX
|
||||
# Covert Operations music (optional):
|
||||
ContentPackage:
|
||||
ContentPackage@music-covertops:
|
||||
Name: music-covertops
|
||||
Actions:
|
||||
Copy: Data/CNCDATA/TIBERIAN_DAWN/CD3
|
||||
^SupportDir|Content/cnc/scores-covertops.mix: SCORES.MIX
|
||||
# GDI campaign briefings (optional):
|
||||
# The Remastered Collection doesn't include trailer.vqa.
|
||||
ContentPackage:
|
||||
ContentPackage@movies-gdi:
|
||||
Name: movies-gdi
|
||||
TooltipText: The Remastered Collection doesn't include trailer.vqa.
|
||||
Actions:
|
||||
@@ -277,7 +277,7 @@ cncr-origin: C&C Remastered Collection (Origin version, English)
|
||||
^SupportDir|Content/cnc/movies/banner.vqa: banner.vqa
|
||||
# Nod campaign briefings (optional):
|
||||
# The Remastered Collection doesn't include trailer.vqa.
|
||||
ContentPackage:
|
||||
ContentPackage@movies-nod:
|
||||
Name: movies-nod
|
||||
TooltipText: The Remastered Collection doesn't include trailer.vqa.
|
||||
Actions:
|
||||
|
||||
@@ -5,7 +5,7 @@ tuc-steam: C&C The Ultimate Collection (Steam version, English)
|
||||
CONQUER.MIX: 713b53fa4c188ca9619c6bbeadbfc86513704266
|
||||
Install:
|
||||
# Base game files:
|
||||
ContentPackage:
|
||||
ContentPackage@base:
|
||||
Name: base
|
||||
Actions:
|
||||
Copy: .
|
||||
@@ -19,19 +19,19 @@ tuc-steam: C&C The Ultimate Collection (Steam version, English)
|
||||
^SupportDir|Content/cnc/tempicnh.mix: TEMPICNH.MIX
|
||||
^SupportDir|Content/cnc/transit.mix: TRANSIT.MIX
|
||||
# Base game music (optional):
|
||||
ContentPackage:
|
||||
ContentPackage@music:
|
||||
Name: music
|
||||
Actions:
|
||||
Copy: .
|
||||
^SupportDir|Content/cnc/scores.mix: SCORES.MIX
|
||||
# Covert Operations music (optional):
|
||||
ContentPackage:
|
||||
ContentPackage@music-covertops:
|
||||
Name: music-covertops
|
||||
Actions:
|
||||
Copy: .
|
||||
^SupportDir|Content/cnc/scores-covertops.mix: SCORES.MIX
|
||||
# GDI campaign briefings (optional):
|
||||
ContentPackage:
|
||||
ContentPackage@movies-gdi:
|
||||
Name: movies-gdi
|
||||
Actions:
|
||||
ExtractMix: movies.mix
|
||||
@@ -101,7 +101,7 @@ tuc-steam: C&C The Ultimate Collection (Steam version, English)
|
||||
^SupportDir|Content/cnc/movies/bcanyon.vqa: bcanyon.vqa
|
||||
^SupportDir|Content/cnc/movies/banner.vqa: banner.vqa
|
||||
# Nod campaign briefings (optional):
|
||||
ContentPackage:
|
||||
ContentPackage@movies-nod:
|
||||
Name: movies-nod
|
||||
Actions:
|
||||
ExtractMix: movies.mix
|
||||
@@ -174,7 +174,7 @@ cncr-steam: C&C Remastered Collection (Steam version, English)
|
||||
Data/CNCDATA/TIBERIAN_DAWN/CD1/CONQUER.MIX: 3f891c8dc0864f654e1710430ea4ff34c3715e97
|
||||
Install:
|
||||
# Base game files:
|
||||
ContentPackage:
|
||||
ContentPackage@base:
|
||||
Name: base
|
||||
Actions:
|
||||
Copy: Data/CNCDATA/TIBERIAN_DAWN/CD1
|
||||
@@ -188,20 +188,20 @@ cncr-steam: C&C Remastered Collection (Steam version, English)
|
||||
^SupportDir|Content/cnc/transit.mix: TRANSIT.MIX
|
||||
^SupportDir|Content/cnc/winter.mix: WINTER.MIX
|
||||
# Base game music (optional):
|
||||
ContentPackage:
|
||||
ContentPackage@music:
|
||||
Name: music
|
||||
Actions:
|
||||
Copy: Data/CNCDATA/TIBERIAN_DAWN/CD1
|
||||
^SupportDir|Content/cnc/scores.mix: SCORES.MIX
|
||||
# Covert Operations music (optional):
|
||||
ContentPackage:
|
||||
ContentPackage@music-covertops:
|
||||
Name: music-covertops
|
||||
Actions:
|
||||
Copy: Data/CNCDATA/TIBERIAN_DAWN/CD3
|
||||
^SupportDir|Content/cnc/scores-covertops.mix: SCORES.MIX
|
||||
# GDI campaign briefings (optional):
|
||||
# The Remastered Collection doesn't include trailer.vqa.
|
||||
ContentPackage:
|
||||
ContentPackage@movies-gdi:
|
||||
Name: movies-gdi
|
||||
TooltipText: The Remastered Collection doesn't include trailer.vqa.
|
||||
Actions:
|
||||
@@ -272,7 +272,7 @@ cncr-steam: C&C Remastered Collection (Steam version, English)
|
||||
^SupportDir|Content/cnc/movies/banner.vqa: banner.vqa
|
||||
# Nod campaign briefings (optional):
|
||||
# The Remastered Collection doesn't include trailer.vqa.
|
||||
ContentPackage:
|
||||
ContentPackage@movies-nod:
|
||||
Name: movies-nod
|
||||
TooltipText: The Remastered Collection doesn't include trailer.vqa.
|
||||
Actions:
|
||||
|
||||
Reference in New Issue
Block a user