MSIを使用してアプリと共に.NET Frameworkをインストールする
-
03-07-2019 - |
質問
VS2008でセットアッププロジェクトを作成しました。私のWinFormsアプリは.NET 2.0を使用しているため、.NET 2.0 Prerequisityを選択してセットアッププロジェクトをビルドしました。
クリーンなPCでSetup.msiを実行すると、.NETが欠落していることを正しく検出し、インストールするかどうかを尋ねます。 .NETが正常にインストールされた後、インストーラーは単に終了し、アプリのインストールを続行しません(そうすべきだと思います)。
.NETが既にインストールされているPCでMSIファイルを実行すると、アプリが正しくインストールされます。
.NET 2.0とアプリを1ステップで一緒にインストールする方法はありますか?
解決
製品のインストール方法
セットアッププロジェクトは2つのファイルを出力します:
- Windowsインストーラーパッケージ(.msi)、および
- いわゆるブートストラップ(setup.exe)
ブートストラッパーは、指定したすべての前提条件の有無を確認し、まだインストールされていない場合はダウンロードしてインストールする可能性があります、アプリケーションのインストールを続行します(.msiを呼び出して)。 そのため、.msiファイルではなく、常にsetup.exeを起動してアプリケーションをインストールする必要があります(すべての前提条件がターゲットシステムにあることがわかっている場合を除きます)。
Krakkosが言うように、ブートストラップは前提条件とアプリケーション(つまり.msiファイル)の両方をインストールします。ただし、ブートストラッパーによるmsiのインストールを妨げるような構成設定については知りません。
トラブルシューティングを行うには、インストールのログを作成して、ログファイルで問題を探すことができます。
他のヒント
Divoに感謝、
MSIファイルを実行していました。
Setup.EXEファイルの実行時に制限はありますか?正しく覚えている場合は、Windows 2000で一度実行しようとしましたが、実行されませんでした。 MSIファイルのみを実行できました。クリーンなWin2000を搭載したPCでチェックして、戻ってきます。
編集:クリーンなWindows 2000 SP4で試しましたが、結果は次のとおりです。
- Kernel32.dllにHeapSetInformationがないことを示すメッセージが表示され、Setup.exeは実行されません
- Setup.msiは実行されません(拡張子.msiは不明です)
次に、Windows Installer 3.1を手動でインストールしました:
- Setup.exeは引き続き同じエラーメッセージで実行されません
- Setup.msiは正常に実行されます(ただし、.NETのみをインストールします...私の最初の問題はありません)
Windows XPでは、Setup.exeは問題なく実行されます。
Win2000を使用しているユーザーは、Windows Installer 3.1、.NET 2.0をインストールしてからアプリを手動でインストールする必要があるようです。 .NETを手動でインストールしても、Win2000 SP4ではSetup.exeに同じエラーメッセージが表示されます。
編集:Win 2000の問題は、 Windows 2000 SP4用の更新プログラムのロールアップ1(KB891861)。
このHanselminutesのエピソードでは、Paint.Netの詳細について詳しく説明しています。ダウンロード&の手配必要な.NETフレームワークをオンデマンドでインストールし、アプリケーションのインストールと統合します。確かに、これはおそらくほとんどのアプリケーションが必要とするより複雑な方法ですが、それでも興味深い議論です。