0

長い間調べてみましたが、アセンブリ内の管理対象リソースの変更に関する情報が見つかりません(Win32リソースとそれらを変更するためのAPIについてはすでによく知っていることに注意してください)。

私のアプリケーションには、エンドユーザーが更新する必要のあるリソースがあり、アプリケーションは単一の実行可能ファイルとして配布されます(したがって、衛星アセンブリだけを使用することはできません)。

いくつかの可能な回避策がありますが、それらはハックのようです。

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

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

私はILMergeオプションに傾倒していますが、再配布に関する条件はあいまいです。EULAは再配布権について言及していません(したがって、このNegative Freedom社会では許可されていると思います)が、Microsoft Researchのページには、再配布は許可されていないと記載されています(ただし、商業的再配布を指している可能性があることから、あいまいな表現になっています。これは非営利のGPLプロジェクトであるため、これは当てはまりません)。

ありがとう

4

1 に答える 1

1

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

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

リソースを外部ファイルに移動します。「事前定義された」リソースを埋め込むこともできます。アプリケーションの初回起動時に、外部ファイルを作成し、埋め込みリソースを外部ファイルにコピーします。外部ファイルが存在する場合、埋め込みリソースはもう気にしません。

于 2009-04-20T06:59:17.587 に答える