2009-04-20 1 views
0

Я подробно рассмотрел и не могу найти информацию об изменении управляемых ресурсов в сборках (обратите внимание, что я уже знаком с ресурсами Win32 и API для их изменения).Как добавить, удалить и обновить ресурсы в сборках CLR?

Мое приложение имеет ресурсы, которые должны быть обновлены конечным пользователем, и приложение будет распространено как один исполняемый файл (поэтому я не могу просто использовать спутниковые сборки).

Я вижу несколько возможных путей их устранения, но они кажутся хаком:

Первый заключается в использовании ILMerge: Я бы создать новую сборку в памяти, которая содержит новые ресурсы и использовать ILMerge, чтобы объединить его с оригинальная сборка для создания новой программы. Единственным недостатком является то, что ресурсы не могут быть обновлены или удалены.

Второе несколько похоже: будет существовать .netмодуль (испускаемый из компилятора C#), который запускается против al.exe с ключом/embed, чтобы добавить ресурсы для формирования новой сборки. Недостатком является то, что ни один из ресурсов исходной сборки не будет присутствовать.

Я склоняюсь к опции ILMerge, но условия перераспределения неоднозначны. EULA не ссылается на права перераспределения (поэтому я предполагаю, что в этом сообществе «Отрицательная свобода» это разрешено), однако на странице «Исследования Microsoft» говорится, что перераспределение запрещено (но это неоднозначно сформулировано, поскольку я могу сказать, что это может иметь в виду коммерческое перераспределение, который не будет применяться ко мне, поскольку это некоммерческий проект GPL).

Благодаря

ответ

1

ИМХО, я не думаю, что это хорошая идея, чтобы сделать это в любом случае. Если эти ресурсы представляют собой пользовательские данные, даже если есть «предустановленный» набор, он не принадлежит встроенному ресурсу.

Вы подписаны? Вам придется смириться с ними после изменения, откроется ваш закрытый ключ, и каждый может подписать ваше приложение. Поэтому не стоит подписывать его, и в любом случае у вас есть риск для безопасности.

Переместите ресурсы во внешний файл. Вы все равно можете вставлять «предопределенные» ресурсы. При первом запуске приложения вы создаете внешний файл и копируете встроенные ресурсы во внешний файл. Если внешний файл существует, вам больше не нужны встроенные ресурсы.

 Смежные вопросы

  • Нет связанных вопросов^_^