Ответом может быть как да, так и нет.
Да, можно обновлять ресурсы в двоичном формате с помощью подпрограмм Windows API. Эта ссылка на BeginUpdateResource () должна привести вас на правильный путь в этом счете.
Однако вы заметите следующее условие использования BeginUpdateResource ():
"Бинарный файл, в котором обновляются ресурсы. Приложение должно иметь возможность получить доступ для записи в этот файл; файл, на который ссылается pFileName, в настоящее время не может выполняться."
В другомДругими словами, приложение не может просто обновлять свои собственные ресурсы во время работы.
Существует ряд стратегий, которые вы можете использовать для достижения того, чего вы хотите - или чего-то достаточно близкого к этому, чтобы быть удовлетворительным.Что наиболее подходит, будет зависеть от ваших конкретных потребностей.
Из множества решений могут быть два:
1) Поддерживать все такие ресурсы в DLL (только для DLL ресурсов - без фактических данных).код как таковой), который вы открываете только при конкретной загрузке ресурсов (или их обновлении).Таким образом, в то время, когда вы хотите записать ресурс обратно в DLL, вы сможете получить требуемую блокировку записи.
или
2) Когда вам нужно обновить ресурс, переименуйте текущий запущенный EXE-файл в нечто вроде «myapp.OLD», скопируйте его, чтобы у вас был новый файл с текущим именем »myapp.exe».Затем вы можете обновить «myapp.exe», потому что на самом деле выполняется «myapp.old».
Этот второй подход довольно грязный и имеет «неприятный запах», но это метод (или используемыйбыть) довольно часто используется автообновлениями, например.Очевидно, что в какой-то момент потребуется перезапуск вашего приложения, если текущий запущенный код будет использовать обновленные ресурсы в измененном EXE, поэтому он может не соответствовать вашим потребностям.