Я пытаюсь заменить ресурс exe-файла (.NET, C #), используя код C #.
Я нашел эту статью и создал этот код (используя Mono.Cecil0.6):
AssemblyDefinition asdDefinition = AssemblyFactory.GetAssembly("C:\\File.exe");
EmbeddedResource erTemp = new EmbeddedResource("encFile", ManifestResourceAttributes.Public);
erTemp.Data = myNewFileBytes;
asdDefinition.MainModule.Resources.RemoveAt(0);
asdDefinition.MainModule.Resources.Add(erTemp);
AssemblyFactory.SaveAssembly(asdDefinition, "C:\\newFile.exe");
Код фактически удаляет ресурс, а затем добавляет новый с тем же именем.Имя ресурса encFile
и хранится как encFile.exe
(пробовал оба).
Я проверил код, и удаление работает (я могу сказать по размеру файла) и добавление тоже, ноновый файл вылетает так же, как файл, который я создал только при удалении (для тестирования) - он действует так, будто не видит замененный ресурс.
Что я могу сделать, чтобы исправить это?возможно некоторые изменения в отредактированном файле EXE?EXE-файл читает свой ресурс следующим образом: byte[] buffer = ProjectName.Properties.Resources.encFile;