Skip to content

Commit 24ecece

Browse files
RandomCrocodileclaude
andcommitted
fix(renamer): fix WPF relative resource renaming (upstream mkaring#565)
Cherry-pick of mkaring#565. Fixes relative resource path handling in WPF ResourceDictionary entries by passing relative file names (not full paths) to bamlRef.Rename(), ensuring BAML references using relative URIs are correctly updated during renaming. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 8dee81d commit 24ecece

1 file changed

Lines changed: 11 additions & 5 deletions

File tree

Confuser.Renamer/Analyzers/WPFAnalyzer.cs

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,14 @@ public void PreRename(ConfuserContext context, INameService service, ProtectionP
6060
var decodedName = HttpUtility.UrlDecode(doc.DocumentName);
6161
var encodedName = doc.DocumentName;
6262
if (bamlRefs.TryGetValue(decodedName, out var references)) {
63-
var decodedDirectory = decodedName.Substring(0, decodedName.LastIndexOf('/') + 1);
64-
var encodedDirectory = encodedName.Substring(0, encodedName.LastIndexOf('/') + 1);
63+
var decodedLastSlash = decodedName.LastIndexOf('/') + 1;
64+
var encodedLastSlash = encodedName.LastIndexOf('/') + 1;
65+
66+
var decodedDirectory = decodedName.Substring(0, decodedLastSlash);
67+
var encodedDirectory = encodedName.Substring(0, encodedLastSlash);
68+
69+
var decodedFileName = decodedName.Substring(decodedLastSlash);
70+
var encodedFileName = encodedName.Substring(encodedLastSlash);
6571

6672
var fileName = service.RandomName(renameMode).ToLowerInvariant();
6773
if (decodedName.EndsWith(".BAML", StringComparison.OrdinalIgnoreCase))
@@ -78,8 +84,8 @@ public void PreRename(ConfuserContext context, INameService service, ProtectionP
7884

7985
if (renameOk) {
8086
foreach (var bamlRef in references) {
81-
bamlRef.Rename(module, decodedName, decodedNewName);
82-
bamlRef.Rename(module, encodedName, encodedNewName);
87+
bamlRef.Rename(module, decodedFileName, fileName);
88+
bamlRef.Rename(module, encodedFileName, fileName);
8389
}
8490
doc.DocumentName = encodedNewName;
8591
}
@@ -349,4 +355,4 @@ void AnalyzeResources(ConfuserContext context, INameService service, ModuleDefMD
349355
context.Annotations.Set(module, BAMLKey, wpfResInfo);
350356
}
351357
}
352-
}
358+
}

0 commit comments

Comments
 (0)