6

私はオープンソースのC#アプリケーションを開発しています。しばらくの間、私は自分でコーディングした基本的な.NETインストーラーを使用してきました。ただし、最近の変更では、インストーラーに多数のファイルを追加する必要があるため、これは実用的ではなくなりました。リリースごとに変更される可能性があります。ZIPファイルも実用的ではありません。

オンラインでいくつかのチェックを行いましたが、MSI、ClickOnce、自己解凍型ZIP、および(最も有望な)NSISシステムがたくさんあります。どれも私のニーズにぴったり合っていないようですので、どのシステムを使用するかについてのアドバイスを探しています。

私のプログラムの実際のインストールは非常に簡単です。基本的に、bin \ Releaseディレクトリ(およびすべてのサブディレクトリ)をクライアントのコンピュータにコピーする必要があります。私は、すべてのファイルを.NETインストーラーに埋め込み、何がどこに行くのかを示すファイルテーブルを維持することで、これをややアドホックに実現してきました。

残念ながら、アプリをローカライズしただけです。現在、30以上の.resxファイル(dllにコンパイルされ、Visual Studioによってより多くのサブディレクトリに配置されています)があり、明らかに、30以上のフォルダーとDLLをインストーラーに追加することは実用的ではありません。したがって、なぜ私はこの検索をしているのですか。

他にもいくつかの要件があります。

  • インストーラーは、事前定義されたディレクトリで指定された.exeを検索する必要があります。(私のアプリは置き換えのドロップになるように設計されています).exeが見つからない場合は、その場所の入力を求める必要があります
  • インストーラーは、「OldApp.exe.bak」が存在することを確認する必要があります。そうでない場合は、「OldApp.exe」の名前を「OldApp.exe.bak」に変更する必要があります
  • インストーラーはファイルを更新する必要があります。つまり、「Culture.de.dll」が変更されていない場合、インストーラーはそれをそのままにします。
  • インストーラーは、すべての.NET IDE(VS、SharpDevelop、Monoなど)のすべてのWindowsバージョンで動作する必要がありますが、他のプラットフォームで動作する必要はありません。
  • ソリューションをビルドすると、インストーラーが自動的に再生成されます。つまり、「ビルド後」セクションで実行可能である必要があります。
  • インストーラーの世代は、ソースコードリポジトリに追加できる必要があります。これは、私のアプリのソースをダウンロードした人なら誰でもインストーラーをコンパイルできるようにするためです。

長い投稿で申し訳ありませんが、投稿数は少ないほうがいいと思いました。

4

4 に答える 4

5

SharpSetupをお勧めします。WiXとC#を組み合わせて、非常に柔軟な実装を実現します。私はそれが達成できないことに気づきました。

于 2012-04-16T17:32:37.817 に答える
2

WIXを幅広く使用しています: http ://wix.codeplex.com/

通常とは異なることを行うために、いくつかの終了ルーチンを使用してインストーラーをカスタマイズする必要がある場合がありますが、Windowsインストーラーフレームワークにはそれを可能にするフックがあります。

これらの定義ファイル(XML)をソース管理に配置し、インストールを実行するようにビルドを構成できます。ただし、ソースを入手する人は誰でもWIXユーティリティをインストールする必要があります。

于 2012-04-16T17:30:47.827 に答える
2

NSISをお勧めします。私の経験から、私が必要としたインストーラー機能は、NSISドキュメントまたはコミュニティの例でカバーされています。Jenkinsビルドサーバーと統合されたNSISを使用しているため、VisualStudioとのNSIS統合についてコメントすることはできません。VisualStudioとのNSIS統合を提供するVisual&Installerと呼ばれる無料のVisualStudioアドインがあるようです。個人的には使っていませんが、現在活発に開発されているようですので、ぜひチェックしてみてください。

于 2012-04-23T22:37:29.470 に答える
1

WIXは良いものです。ウィキペディアによると、Microsoftは自社製品のいくつかのインストーラーを作成するために使用しています。

于 2012-04-16T17:31:28.903 に答える