6

ユーザーに自分のWebサイトからexeをダウンロードしてもらいたいのですが、ダウンロード時に(ダウンロード時に同期して)XMLファイルがこのアプリケーションに挿入されます。このXMLファイルには、公開鍵と署名が含まれています。

ダウンロードする前にファイルを挿入し、後で実行中に参照するにはどうすればよいですか?

理想的には、ファイルを挿入するためにシェルを使用するのではなく、ネイティブの.NETAPIを使用します。

4

5 に答える 5

8

あなたはMono.Cecilでそれを簡単に行うことができます、あなたはただ次のようなものを書く必要があるでしょう:

var module = ModuleDefinition.ReadModule ("Application.exe");

module.Resources.Add (
    new EmbeddedResource (
        "signature.xml",
        ManifestResourceAttributes.Private, 
        File.ReadAllBytes ("signature.xml")));

module.Write ("Application.exe",
    new WriterParameters {
        StrongNameKeyPair = new StrongNameKeyPair ("keypair.snk")
});

署名.xmlファイルからsignature.xmlリソースを挿入し、Application.exeの署名に使用したkeypair.snkを使用してアセンブリにサインバックします。

そして実行時に、あなたはただ使用する必要があるでしょう:

var stream = Assembly.GetExecutingAssembly ()
    .GetManifestResourceStream ("signature.xml");

リソースを取得します。

于 2011-03-17T15:00:46.583 に答える
1

ファイルを挿入するには、ファイルをプロジェクトに追加します。次に、ソリューションエクスプローラーでそれを右クリックし、プロパティに移動して、そのタイプをEmbeddedResourceに変更します。

実行時にロードするには、を使用しますAssembly.GetManifestResourceStream()。詳細については、http://msdn.microsoft.com/en-us/library/xc4235zt.aspxを参照してください。

于 2011-03-17T14:53:33.857 に答える
1

彼が書いたものから、彼はダウンロードする前にファイルを動的に変更するつもりのようです。これは実際には、使用するサーバー側の言語と、サーバー/ホスティングプロバイダーアカウントをどの程度制御できるかによって異なります。
このexeファイルを生成してダウンロード用に送信するdownload.aspxファイルがあるとします。できることの1つは、アセンブリのソースをサーバーに配置してから、download.aspxがそれをアセンブルし、ダウンロード用に送信することです。(難しい方法)
別の方法は、コンパイルされたアセンブリをサーバーに配置し、たとえばcecil(.NETアセンブリにプログラムでリソースを埋め込む)などを使用して変更し、ダウンロード用に送信することです。

于 2011-03-17T15:00:52.550 に答える
0

この グーグルの結果は有望なようです。

于 2011-03-17T14:55:15.697 に答える
0

ファイルをプロジェクトに追加します。通常は、次の行に沿ったものです。

+solution
  +project
    +Resources
      +SomeDirectory
        -SomeFile

次に、プロジェクトのプロパティに移動し、左側のサイトの[リソース]タブに移動してfiles、上部のナビゲーションバーでリソースを選択します。リソースを追加する>既存のファイルを追加する場合に選択します。プロジェクトに入れたばかりのファイルを参照し、それを追加することを選択します。

これで、プロジェクトのプロパティの[リソース]タブにファイルが表示されます。[リソース]タブでファイルの名前をより意味のあるものに変更します。

これで、ファイルはプロジェクトの埋め込みリソースになり、次のコードでアクセスできます。

var MyFile = Properties.Resources.MyFile
于 2011-03-17T15:02:55.453 に答える