2009-04-20 25 views
0

私は長い回りを見てきましたが、アセンブリ内の管理対象リソースの変更に関する情報は見つかりませんでした(既に、私はWin32リソースとそれらを変更するためのAPIによく似ています)。CLRアセンブリのリソースを追加、削除、および更新するにはどうすればよいですか?

私のアプリケーションにはエンドユーザーが更新する必要のあるリソースがあり、アプリケーションは1つの実行可能ファイルとして配布されるため、サテライトアセンブリだけでは使用できません。

私はいくつかの回避策を参照してください、彼らはハックようだ:

最初はILMergeを使用することです:私は、新しいリソースが含まれているメモリ内に新しいアセンブリを作成し、それを組み合わせることILMergeを使用したいです元のアセンブリを新しいプログラムを形成する。唯一の欠点は、リソースを更新または削除できないことです。

2番目は多少似ています:新しいアセンブリを形成するためのリソースを追加するために、/ embedスイッチを付けてal.exeに対して実行される.netmodule(C#コンパイラから生成される)があります。欠点は、元のアセンブリのリソースが存在しないことです。

私はILMergeオプションに傾いていますが、再配布に関する用語はあいまいです。 EULAは再配布権に言及していません(したがって、このネガティブフリーダム社会では許可されていると仮定しています)。ただし、マイクロソフトリサーチのページでは、再配布は許可されていないと言われています(ただし、これは非営利のGPLプロジェクトなので私には当てはまりません)。

おかげ

答えて

1

IMHO、私はとにかくそれを行うには良いアイデアだとは思いません。このリソースが実際にユーザーデータである場合、「プリインストールされた」セットがあっても、埋め込みリソースには属しません。

アセンブリに署名していますか?あなたは変更後に辞職しなければならないでしょう、あなたの秘密鍵が公開され、誰もがあなたのアプリケーションに署名することができます。とにかく署名する価値はないし、とにかくセキュリティリスクがある。

リソースを外部ファイルに移動します。 "定義済み"のリソースは埋め込むことができます。 アプリケーションをはじめて起動すると、外部ファイルが作成され、埋め込みリソースが外部ファイルにコピーされます。外部ファイルが存在する場合、埋め込みリソースはこれ以上気にしません。

関連する問題