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:
RoosterDragon
2024-07-30 19:15:37 +01:00
committed by Gustas
parent ebaed9966b
commit 578a9fe457
22 changed files with 198 additions and 193 deletions

View File

@@ -5,10 +5,10 @@ fstorm: Firestorm Expansion Disc (English)
Install/Language.dll: 4df87c1a2289da57dd14d0a7299546f37357fcca
Install:
# Firestorm expansion files:
ContentPackage:
ContentPackage@fstorm:
Name: fstorm
Actions:
ExtractMix: Install/expand01.mix
ExtractMix@1: Install/expand01.mix
^SupportDir|Content/ts/firestorm/m_emp.vxl: m_emp.vxl
^SupportDir|Content/ts/firestorm/mwar_nod.vxl: mwar_nod.vxl
^SupportDir|Content/ts/firestorm/djuggbar.vxl: djuggbar.vxl
@@ -32,7 +32,7 @@ fstorm: Firestorm Expansion Disc (English)
^SupportDir|Content/ts/firestorm/sounds01.mix: sounds01.mix
^SupportDir|Content/ts/firestorm/isotemp.mix: isotemp.mix
^SupportDir|Content/ts/firestorm/temperat.mix: temperat.mix
ExtractMix: ^SupportDir|Content/ts/firestorm/isotemp.mix
ExtractMix@2: ^SupportDir|Content/ts/firestorm/isotemp.mix
^SupportDir|Content/ts/firestorm/blat01.tem: blat01.tem
^SupportDir|Content/ts/firestorm/blat01a.tem: blat01a.tem
^SupportDir|Content/ts/firestorm/blat02.tem: blat02.tem
@@ -174,8 +174,8 @@ fstorm: Firestorm Expansion Disc (English)
^SupportDir|Content/ts/firestorm/swamp07.tem: swamp07.tem
^SupportDir|Content/ts/firestorm/swamp08.tem: swamp08.tem
^SupportDir|Content/ts/firestorm/swamp09.tem: swamp09.tem
Delete: ^SupportDir|Content/ts/firestorm/isotemp.mix
ExtractMix: ^SupportDir|Content/ts/firestorm/temperat.mix
Delete@3: ^SupportDir|Content/ts/firestorm/isotemp.mix
ExtractMix@4: ^SupportDir|Content/ts/firestorm/temperat.mix
^SupportDir|Content/ts/firestorm/fona01.tem: fona01.tem
^SupportDir|Content/ts/firestorm/fona02.tem: fona02.tem
^SupportDir|Content/ts/firestorm/fona03.tem: fona03.tem
@@ -192,9 +192,9 @@ fstorm: Firestorm Expansion Disc (English)
^SupportDir|Content/ts/firestorm/fona14.tem: fona14.tem
^SupportDir|Content/ts/firestorm/fona15.tem: fona15.tem
^SupportDir|Content/ts/firestorm/bigblue3.tem: bigblue3.tem
Delete: ^SupportDir|Content/ts/firestorm/temperat.mix
Delete@5: ^SupportDir|Content/ts/firestorm/temperat.mix
# Firestorm expansion music (optional):
ContentPackage:
ContentPackage@fstorm-music:
Name: fstorm-music
Actions:
Copy: .

View File

@@ -14,7 +14,7 @@ tfd: C&C The First Decade (English)
^SupportDir|Content/ts/tibsun.mix: Tiberian Sun\SUN\TIBSUN.MIX
^SupportDir|Content/ts/expand01.mix: Tiberian Sun\SUN\expand01.mix
# Base game files:
ContentPackage:
ContentPackage@tibsun:
Name: tibsun
Actions:
ExtractMix: ^SupportDir|Content/ts/tibsun.mix
@@ -34,10 +34,10 @@ tfd: C&C The First Decade (English)
^SupportDir|Content/ts/temperat.mix: temperat.mix
Delete: ^SupportDir|Content/ts/tibsun.mix
# Firestorm expansion files:
ContentPackage:
ContentPackage@fstorm:
Name: fstorm
Actions:
ExtractMix: ^SupportDir|Content/ts/expand01.mix
ExtractMix@1: ^SupportDir|Content/ts/expand01.mix
^SupportDir|Content/ts/firestorm/m_emp.vxl: m_emp.vxl
^SupportDir|Content/ts/firestorm/mwar_nod.vxl: mwar_nod.vxl
^SupportDir|Content/ts/firestorm/djuggbar.vxl: djuggbar.vxl
@@ -61,8 +61,8 @@ tfd: C&C The First Decade (English)
^SupportDir|Content/ts/firestorm/sounds01.mix: sounds01.mix
^SupportDir|Content/ts/firestorm/isotemp.mix: isotemp.mix
^SupportDir|Content/ts/firestorm/temperat.mix: temperat.mix
Delete: ^SupportDir|Content/ts/expand01.mix
ExtractMix: ^SupportDir|Content/ts/firestorm/isotemp.mix
Delete@2: ^SupportDir|Content/ts/expand01.mix
ExtractMix@3: ^SupportDir|Content/ts/firestorm/isotemp.mix
^SupportDir|Content/ts/firestorm/blat01.tem: blat01.tem
^SupportDir|Content/ts/firestorm/blat01a.tem: blat01a.tem
^SupportDir|Content/ts/firestorm/blat02.tem: blat02.tem
@@ -204,8 +204,8 @@ tfd: C&C The First Decade (English)
^SupportDir|Content/ts/firestorm/swamp07.tem: swamp07.tem
^SupportDir|Content/ts/firestorm/swamp08.tem: swamp08.tem
^SupportDir|Content/ts/firestorm/swamp09.tem: swamp09.tem
Delete: ^SupportDir|Content/ts/firestorm/isotemp.mix
ExtractMix: ^SupportDir|Content/ts/firestorm/temperat.mix
Delete@4: ^SupportDir|Content/ts/firestorm/isotemp.mix
ExtractMix@5: ^SupportDir|Content/ts/firestorm/temperat.mix
^SupportDir|Content/ts/firestorm/fona01.tem: fona01.tem
^SupportDir|Content/ts/firestorm/fona02.tem: fona02.tem
^SupportDir|Content/ts/firestorm/fona03.tem: fona03.tem
@@ -222,24 +222,24 @@ tfd: C&C The First Decade (English)
^SupportDir|Content/ts/firestorm/fona14.tem: fona14.tem
^SupportDir|Content/ts/firestorm/fona15.tem: fona15.tem
^SupportDir|Content/ts/firestorm/bigblue3.tem: bigblue3.tem
Delete: ^SupportDir|Content/ts/firestorm/temperat.mix
Delete@6: ^SupportDir|Content/ts/firestorm/temperat.mix
# Base game music (optional):
ContentPackage:
ContentPackage@tibsun-music:
Name: tibsun-music
Actions:
ExtractIscab: data1.hdr
Volumes:
6: data6.cab
7: data7.cab
Extract:
^SupportDir|Content/ts/scores.mix: Tiberian Sun\SUN\SCORES.MIX
ExtractIscab: data1.hdr
Volumes:
6: data6.cab
7: data7.cab
Extract:
^SupportDir|Content/ts/scores.mix: Tiberian Sun\SUN\SCORES.MIX
# Firestorm expansion music (optional):
ContentPackage:
ContentPackage@fstorm-music:
Name: fstorm-music
Actions:
ExtractIscab: data1.hdr
Volumes:
6: data6.cab
7: data7.cab
Extract:
^SupportDir|Content/ts/firestorm/scores01.mix: Tiberian Sun\SUN\scores01.mix
ExtractIscab: data1.hdr
Volumes:
6: data6.cab
7: data7.cab
Extract:
^SupportDir|Content/ts/firestorm/scores01.mix: Tiberian Sun\SUN\scores01.mix

View File

@@ -7,7 +7,7 @@ origin: C&C The Ultimate Collection (Origin version, English)
GDFBinary_en_US.dll: 4bb56a449bd0003e7ae67625d90a11ae169319d6
Install:
# Base game files:
ContentPackage:
ContentPackage@tibsun:
Name: tibsun
Actions:
ExtractMix: TIBSUN.MIX
@@ -26,10 +26,10 @@ origin: C&C The Ultimate Collection (Origin version, English)
^SupportDir|Content/ts/tem.mix: tem.mix
^SupportDir|Content/ts/temperat.mix: temperat.mix
# Firestorm expansion files:
ContentPackage:
ContentPackage@fstorm:
Name: fstorm
Actions:
ExtractMix: expand01.mix
ExtractMix@1: expand01.mix
^SupportDir|Content/ts/firestorm/m_emp.vxl: m_emp.vxl
^SupportDir|Content/ts/firestorm/mwar_nod.vxl: mwar_nod.vxl
^SupportDir|Content/ts/firestorm/djuggbar.vxl: djuggbar.vxl
@@ -53,7 +53,7 @@ origin: C&C The Ultimate Collection (Origin version, English)
^SupportDir|Content/ts/firestorm/sounds01.mix: sounds01.mix
^SupportDir|Content/ts/firestorm/isotemp.mix: isotemp.mix
^SupportDir|Content/ts/firestorm/temperat.mix: temperat.mix
ExtractMix: ^SupportDir|Content/ts/firestorm/isotemp.mix
ExtractMix@2: ^SupportDir|Content/ts/firestorm/isotemp.mix
^SupportDir|Content/ts/firestorm/blat01.tem: blat01.tem
^SupportDir|Content/ts/firestorm/blat01a.tem: blat01a.tem
^SupportDir|Content/ts/firestorm/blat02.tem: blat02.tem
@@ -195,8 +195,8 @@ origin: C&C The Ultimate Collection (Origin version, English)
^SupportDir|Content/ts/firestorm/swamp07.tem: swamp07.tem
^SupportDir|Content/ts/firestorm/swamp08.tem: swamp08.tem
^SupportDir|Content/ts/firestorm/swamp09.tem: swamp09.tem
Delete: ^SupportDir|Content/ts/firestorm/isotemp.mix
ExtractMix: ^SupportDir|Content/ts/firestorm/temperat.mix
Delete@3: ^SupportDir|Content/ts/firestorm/isotemp.mix
ExtractMix@4: ^SupportDir|Content/ts/firestorm/temperat.mix
^SupportDir|Content/ts/firestorm/fona01.tem: fona01.tem
^SupportDir|Content/ts/firestorm/fona02.tem: fona02.tem
^SupportDir|Content/ts/firestorm/fona03.tem: fona03.tem
@@ -213,15 +213,15 @@ origin: C&C The Ultimate Collection (Origin version, English)
^SupportDir|Content/ts/firestorm/fona14.tem: fona14.tem
^SupportDir|Content/ts/firestorm/fona15.tem: fona15.tem
^SupportDir|Content/ts/firestorm/bigblue3.tem: bigblue3.tem
Delete: ^SupportDir|Content/ts/firestorm/temperat.mix
Delete@5: ^SupportDir|Content/ts/firestorm/temperat.mix
# Base game music (optional):
ContentPackage:
ContentPackage@tibsun-music:
Name: tibsun-music
Actions:
Copy: .
^SupportDir|Content/ts/scores.mix: SCORES.MIX
# Firestorm expansion music (optional):
ContentPackage:
ContentPackage@fstorm-music:
Name: fstorm-music
Actions:
Copy: .

View File

@@ -5,7 +5,7 @@ steam: C&C The Ultimate Collection (Steam version, English)
TIBSUN.MIX: fd298ff16983f226c58136a5345b7d9bf2b5f2e9
Install:
# Base game files:
ContentPackage:
ContentPackage@tibsun:
Name: tibsun
Actions:
ExtractMix: TIBSUN.MIX
@@ -24,10 +24,10 @@ steam: C&C The Ultimate Collection (Steam version, English)
^SupportDir|Content/ts/tem.mix: tem.mix
^SupportDir|Content/ts/temperat.mix: temperat.mix
# Firestorm expansion files:
ContentPackage:
ContentPackage@fstorm:
Name: fstorm
Actions:
ExtractMix: expand01.mix
ExtractMix@1: expand01.mix
^SupportDir|Content/ts/firestorm/m_emp.vxl: m_emp.vxl
^SupportDir|Content/ts/firestorm/mwar_nod.vxl: mwar_nod.vxl
^SupportDir|Content/ts/firestorm/djuggbar.vxl: djuggbar.vxl
@@ -51,7 +51,7 @@ steam: C&C The Ultimate Collection (Steam version, English)
^SupportDir|Content/ts/firestorm/sounds01.mix: sounds01.mix
^SupportDir|Content/ts/firestorm/isotemp.mix: isotemp.mix
^SupportDir|Content/ts/firestorm/temperat.mix: temperat.mix
ExtractMix: ^SupportDir|Content/ts/firestorm/isotemp.mix
ExtractMix@2: ^SupportDir|Content/ts/firestorm/isotemp.mix
^SupportDir|Content/ts/firestorm/blat01.tem: blat01.tem
^SupportDir|Content/ts/firestorm/blat01a.tem: blat01a.tem
^SupportDir|Content/ts/firestorm/blat02.tem: blat02.tem
@@ -193,8 +193,8 @@ steam: C&C The Ultimate Collection (Steam version, English)
^SupportDir|Content/ts/firestorm/swamp07.tem: swamp07.tem
^SupportDir|Content/ts/firestorm/swamp08.tem: swamp08.tem
^SupportDir|Content/ts/firestorm/swamp09.tem: swamp09.tem
Delete: ^SupportDir|Content/ts/firestorm/isotemp.mix
ExtractMix: ^SupportDir|Content/ts/firestorm/temperat.mix
Delete@3: ^SupportDir|Content/ts/firestorm/isotemp.mix
ExtractMix@4: ^SupportDir|Content/ts/firestorm/temperat.mix
^SupportDir|Content/ts/firestorm/fona01.tem: fona01.tem
^SupportDir|Content/ts/firestorm/fona02.tem: fona02.tem
^SupportDir|Content/ts/firestorm/fona03.tem: fona03.tem
@@ -211,15 +211,15 @@ steam: C&C The Ultimate Collection (Steam version, English)
^SupportDir|Content/ts/firestorm/fona14.tem: fona14.tem
^SupportDir|Content/ts/firestorm/fona15.tem: fona15.tem
^SupportDir|Content/ts/firestorm/bigblue3.tem: bigblue3.tem
Delete: ^SupportDir|Content/ts/firestorm/temperat.mix
Delete@5: ^SupportDir|Content/ts/firestorm/temperat.mix
# Base game music (optional):
ContentPackage:
ContentPackage@tibsun-music:
Name: tibsun-music
Actions:
Copy: .
^SupportDir|Content/ts/scores.mix: SCORES.MIX
# Firestorm expansion music (optional):
ContentPackage:
ContentPackage@fstorm-music:
Name: fstorm-music
Actions:
Copy: .

View File

@@ -5,7 +5,7 @@ tibsun: Tiberian Sun (GDI or Nod Disc, English)
AUTOPLAY.WAV: 2dfce5d00f98b641849c29942b651f4e98d30e30
Install:
# Base game files:
ContentPackage:
ContentPackage@tibsun:
Name: tibsun
Actions:
ExtractMix: INSTALL/TIBSUN.MIX
@@ -24,7 +24,7 @@ tibsun: Tiberian Sun (GDI or Nod Disc, English)
^SupportDir|Content/ts/tem.mix: tem.mix
^SupportDir|Content/ts/temperat.mix: temperat.mix
# Base game music (optional):
ContentPackage:
ContentPackage@tibsun-music:
Name: tibsun-music
Actions:
Copy: .