0

私はプログラミングにそれほど長くはかからないので、それがばかげた質問だったらすみません。

デフォルトの Visual Studio インストーラー プロジェクト、InstallShield、NSIS など、いくつかのセットアップ クリエーターが存在することは知っていますが、独自のソリューションがあればクールだと思いました。

独自のインストーラー クリエーターを作成したいとしましょう。これは、インストールしたい複数のファイルを追加し、独自のスクリプト システム (おそらく XML ベース) を定義できるツールです。追加したすべてのファイルをパックするツールを作成する.. zip は簡単なステップだとしましょう。しかし、実行可能ファイルをビルドするものを開発するにはどうすればよいでしょうか? これはどのように達成されていますか?

アドバイスや役立つヒントをいただければ幸いです。

4

3 に答える 3

2

Wixをご覧になることをお勧めします。Wix はオープン ソースであるため、どうしてもインストーラー コードを書きたくない場合は、Wix ソースに貢献できます。Wix では、必要に応じて C# で独自のカスタム アクションを作成することもできます。さらに、それは非常に xml ベース (通常、インストーラーは xml ファイルの束) であるため、ニーズを非常によく満たしているようです。

于 2013-01-11T15:29:47.553 に答える
2

それがあなたのニーズを満たしているかどうかはわかりません。filenameこれは、という名前の実行可能ファイルに基づいて名前が付けられたファイルにデータを追加する方法BaseExecutableです。データは .zip またはその他のものである可能性があります。これは、追加されたデータをそれ自体BaseExecutableから読み取るある種のインストーラー (私の場合は Win32 実行可能ファイル)です。データの開始位置は、結果の実行可能ファイルの位置 44、45、46、47 にあります。私は.NET exeでそれを試しませんでした

public void Create(string Filename, string BaseExecutable)
{
    FileStream Source = new FileStream(BaseExecutable, FileMode.Open, FileAccess.Read, FileShare.Read);

    file = new FileStream(Filename, FileMode.Create, FileAccess.Write, FileShare.None);

    byte[] buffer = new byte[65536];
    Source.Read(buffer, 0, 48);
    file.Write(buffer, 0, 44);

    writer = new BinaryWriter(file, Encoding.ASCII);
    writer.Write((uint)Source.Length);

    int count;
    while ( (count=Source.Read(buffer, 0, buffer.Length))>0)
        file.Write(buffer, 0, count);

    // append custom data here ...
}
于 2013-01-11T15:55:22.190 に答える
1

単純な方法の 1 つは、標準の実行可能ファイルを取り、通常のファイルの終わりの後にデータを追加するプログラムを作成することです (「マジック ワード」を使用)。その「標準実行可能ファイル」が行うことは、単純にそれ自体を読み取り、データの始まりを示すマジック ワードを見つけて、そのデータを抽出することです。特に新しい言語やランタイムでは、もっと洗練された方法が間違いなくありますが、私が言及したのは、単純な C でも実装できる基本的な方法です。

あるいは、.NET を使用すると、ランタイム コンパイラを利用して、ストック コードからオンザフライで実行可能ファイルを作成できます。また、VS プロジェクトにリソースを埋め込むように、リソースを埋め込むこともできると思います。ただし、私はこれについて 100% 肯定的ではありません。

于 2013-01-11T15:27:15.740 に答える