次の方法で共有


Windows インストーラ配置のトラブルシューティング

更新 : 2007 年 11 月

このセクションのトピックでは、配置プロジェクトの作成時およびアプリケーションの配置時に発生する可能性があるさまざまな問題を取り上げます。

ロケールが英語以外のコンピュータに MFC アプリケーションをインストールすると、MFC アプリケーションがローカライズされない

Visual Studio 配置プロジェクトを使用して MFC アプリケーションを配置すると、ローカライズされたマージ モジュール Mfc_loc_e.msm および Mfc_loc_fe.msm の依存関係が検出されません。マージ モジュールは Visual C++ に含まれています。既定のインストール先は、\Program File\Common\Merge Modules です。ローカライズされた MFC アプリケーションを配布するには、配置プロジェクトに 2 つのマージ モジュールを手動で追加する必要があります。詳細については、「配置と依存関係」を参照してください。

アセンブリの依存関係が検出されない

配置プロジェクトにプロジェクト出力グループ、アセンブリ、またはマージ モジュールを追加すると、依存アセンブリがすべて自動的に検出され、プロジェクトに追加されます。実行時にコードによって読み込まれる依存アセンブリは、デプロイメント ツールでは検出できません。コードからのアセンブリの読み込みを避けるか (可能な場合)、配置プロジェクトに依存アセンブリを手動で追加する必要があります。詳細については、「配置と依存関係」を参照してください。

Web サーバーにインストールされたファイルが見つからない

Web サーバーに Web セットアップをインストールするときに、Web アプリケーション フォルダと Web カスタム フォルダに含まれるファイルを、Web ルートを基準にどこにインストールするかは、これらのフォルダの VirtualDirectory プロパティで決まります。このプロパティを空白のままにすると、ファイルは Web ルート フォルダ (inetpub\wwwroot) にインストールされます。詳細については、「VirtualDirectory プロパティ」を参照してください。

Web サーバーのルート ディレクトリに Web アプリケーションをインストールする方法

既定では、Web セットアップ配置プロジェクトを使用して Web アプリケーションをインストールすると、Web ルート フォルダの直下に配置プロジェクトと同名のフォルダが作成され、そのフォルダにファイルがインストールされます。ファイルのインストール先は、Web アプリケーション フォルダの VirtualDirectory プロパティで指定します。Web ルート ディレクトリにインストールする場合は、VirtualDirectory プロパティを null に変更します (既定値を削除します)。詳細については、「VirtualDirectory プロパティ」を参照してください。

Xcopy コマンドで配置された Web アプリケーションがデバッグできない

Xcopy コマンドで Web アプリケーションを Web サーバーにコピーすると、アプリケーションに合わせたインターネット インフォメーション サービス (IIS) の自動構成は行われません。そのため、アプリケーション フォルダがアプリケーションのルートと認識されず、デバッグが機能しなくなります。

コピー後に、IIS Manager を使用して新しいフォルダをアプリケーションのルートとして設定する必要があります。さらに、DLL がダウンロードされるのを防ぐために、アプリケーションの Bin フォルダのアクセス許可を設定する必要があります。

kz0ke5xt.alert_note(ja-jp,VS.90).gifヒント :

Xcopy コマンドを使用するよりも、Copy Project コマンドまたは Web セットアップ配置プロジェクトを使用することをお勧めします。詳細については、「配置の代替手段」を参照してください。

依存関係の分析をオフにする方法

残念ながら、依存関係の分析の検索および解決をオフにする直接的な方法はありません。ただし、代替手段があります。SearchPath プロパティをクリックすると表示されるダイアログ ボックスの [標準の検索パスを含む] オプションをオフにするという方法です。

その他に、以下の点を考慮する必要があります。

  • [ファイルの追加] コマンド ([プロジェクト] メニューの [追加] を選択し、[ファイル] を選択) を使用してファイルを追加する必要があります。[プロジェクト出力] の追加 ([プロジェクト] メニューの [追加] を選択し、[プロジェクト出力] を選択) を使用すると、コード プロジェクトから報告された依存関係が含まれます。

  • ビルド時に "依存関係が見つかりません。" という警告が 1 回以上表示されることがありますが、この場合は無視してかまいません。

  • 一部のファイルのみについて依存関係の分析をオフにする場合は、標準の検索パスをオフにして該当ファイルをマージ モジュール プロジェクトに含めることができます。次に、[マージ モジュールの参照] を使用し ([プロジェクト] メニューの [追加] を選択し、[マージ モジュールの参照] を選択)、標準の検索パスをオンにして通常のセットアップ プロジェクトに .msm を含めます。

変更または削除することがユーザーにより求められているファイルの修復をオフにする方法

Visual Studio では、プログラムの開始時に必要なすべてのファイルが存在することを確認できるように、アドバタイズ ショートカットを作成します。この動作を変更してファイルが修復されないようにするには、セットアップ プロジェクト内のファイルを選択し、Condition プロパティを NOT REINSTALL に変更します。これによって修復のためにファイルが再インストールされなくなります。さらにその Transitive プロパティを TRUE に変更し、条件が再評価されるようにします。こうすると、ファイルの削除後、最初はインストーラが画面に一瞬表示されますが、インストーラはファイルを再インストールすべきでないことを確認するので、その後インストーラが表示されることはありません。

カスタム動作/インストーラ クラスをデバッグする方法

次の方法があります。

  • コードに System.Diagnostics.Debugger.Launch への呼び出しを追加します。この方法では、Just-In-Time デバッグ機能が開き、コードに新しいデバッガを接続できます。

  • コードに MessageBox.Show("Debug Me") への呼び出しを追加します。メッセージ ボックスが表示されたら、Visual Studio を使用して MessageBox プロセスにアタッチします。次に、コードに break (Visual C# プロジェクトの場合) または stop (Visual Basic プロジェクトの場合) を追加します。

  • デバッグ設定 (\winnt\Microsoft.net\Framework\version にあります) で InstallUtil.exe を起動するようにし、パラメータとして InstallUtil.exe をアセンブリに渡します。F5 キーを押すと、ブレークポイントに達します。InstallUtil.exe は、MSI と同様にカスタム動作を実行します。

COM インターフェイスへのアセンブリの登録が機能しない

これは RegAsm の既知のバグです。たとえば別のクラス ライブラリにアセンブリが依存している場合、登録情報を取得するために RegAsm が呼び出されるので、RegisterCOM が動作しないことがあります。RegAsm が \obj ディレクトリ内で呼び出されるので依存関係が見つからず、RegAsm が通知なしで失敗するからです。最も良い問題回避の方法は、\bin ディレクトリからアセンブリを手動で追加することです。もう 1 つの問題回避の方法は RegisterSelfReg を使用することです。

また、必ず RegAsm/Codebase を使用して手動で登録するようにしてください。アセンブリが共有された場所にない場合、呼び出し元のコードと同じディレクトリにない限り、アセンブリは見つかりません。/Codebase では、ディレクトリがレジストリに入力されます。

ログ ファイルを使用して Windows インストーラのインストールをトラブルシューティングする方法

Windows インストーラは、プログラムのインストール中にその処理をログ ファイルに記録します。ログ ファイルは、.msi ファイルが存在するディレクトリにあります。

インストールのログ ファイルを取得する方法

次の 2 つの方法があります。

  • コマンド ラインからログ スイッチを指定して実行します。

    misexec /i mysetup.msi /l*v mylog.txt
    
  • 次を .reg ファイルとして保存し、レジストリにロードします。

    REGEDIT4
    
    [HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\Installer]
    "Logging"="voicewarmup"
    "Debug"=dword:00000007
    

    次に \temp ディレクトリを開き、日付順に並べ替えます。最新の msi*.log ファイルは、前回のインストールまたはアンインストールのものです。

以前にインストールされた製品のサブディレクトリにインストールする方法

  1. 以前にインストールされた製品 (製品 1) が MyFile.txt という名前のファイルを持つ場合を考えます。

  2. (Windows インストーラ SDK の) ORCA を使用し、File テーブルを表示して MyFile.txt に対応する行を検索します。

  3. Component_ 列の値を取得し、Component テーブルを開きます。

  4. Component テーブルで、Component 列に Component_ 値がある行を検索し、その ComponentID を得ます。この値をクリップボードにコピーします。ORCA を閉じます。

  5. セットアップ プロジェクトで、起動条件エディタを開き、Windows インストーラのコンポーネント検索を追加します。新しい検索の ComponentID プロパティとして ComponentID を貼り付けます。

  6. Property プロパティをコピーします。これにより、COMPONENTEXISTS1 のようになります。

  7. ファイル システム エディタを開き、[アプリケーション フォルダ] を選択します。

  8. DefaultLocation プロパティを編集します ([COMPONENTEXISTS1]MySubFolder などにします)。これは、COMPONENTEXISTS1 内のパスの末尾に '\' が含まれるためです。

上記の手順 6. の後、コンポーネントが見つかったかどうかを確認し、見つからなかった場合はインストールを回避してメッセージを表示するための条件を 起動条件エディタに追加することもできます。この場合の条件は、COMPONENTEXISTS1 になります (COMPONENTEXISTS1 が空でない場合はインストーラを実行しても問題がないことを意味します)。

既定以外のポートにカスタム Web フォルダをインストールする方法

既定以外のポートにカスタム Web フォルダをインストールするには、コマンド ラインからインストールを実行します。このコマンドには、各 Web カスタム フォルダの Property プロパティ値を含める必要があります。一般的に、NEWWEBPROPERTY1 などの値を使用します。また、Web アプリケーション フォルダの TARGETPORT を含める必要があります。

たとえば、Web サーバーにポート 20 が使用されている場合、コマンド ラインは次のようになります。

msiexec /i mywebsetup.msi TARGETPORT=20 NEWWEBPROPERTY1PORT=20

このコマンドは、Web フォルダが 1 つだけの場合です。複数の Web フォルダがある場合は、フォルダごとに指定した PROPERTY=VALUE ペアを追加して、各フォルダのポートを指定のポートにリダイレクトする必要があります。

インストール中にユーザー インターフェイス内でポートが変更された場合にカスタム Web フォルダでこのコマンド ライン値が使用されるため、[インストール アドレス] ダイアログ ボックスを表示しない方が良い場合があります。

Web サイトのルートにインストールする方法

c:\inetpub\wwwroot などの Web サイトのルートにインストールするには、Web セットアップ プロジェクト内で、またはインストール中に、VirtualDirectory に空の文字列を設定します。

ServicedComponent を GAC にインストールし、それを COM+ カタログ内で構成する方法

ServicedComponent を GAC にインストールし、それを COM+ カタログ内で構成しようとすると、次のコンパイル エラーが表示されることがあります。

"Unable to build custom action named 'Primary output from RegServer (Active)' because the file's Folder property is set to Global Assembly Cache."

"GAC のアセンブリはカスタム操作実行時には必ずしも使用 (GAC に反映) できないため、このインストールはサポートされません。"

この問題を回避する方法は、可能であればコードを別のファイルに格納したうえで、GAC に送られないファイルにカスタム動作コードを含めることです。この方法ではコードを配布できない場合もあります。

インストール後にプログラムを自動的に実行する方法

  1. 次のコードを含む .vbs ファイルを作成します。

    Set WshShell = CreateObject("WScript.Shell")
    WshShell.Run """" & Property("CustomActionData") & """",7,False
    Set WshShell = Nothing
    
  2. セットアップ プロジェクトを開き、カスタム動作エディタに移動します。

  3. [確定] ノードを選択して右クリックし、新しいカスタム動作を追加します。

  4. ファイル システムを検索し、手順 1. で作成した .vbs ファイルを追加します。

  5. 次を追加することにより、CustomActionData プロパティを編集します。YourApp.exe は、スタートアップ アプリケーション ファイルの名前です。

    [TARGETDIR]YourApp.exe

ショートカット上でアンインストール リンクを作成する方法

  1. セットアップ プロジェクトのディレクトリで、新しい Uninstall.bat ファイルを作成します。

  2. セットアップ プロジェクト内で、ProductCode プロパティ ([[12345678-1234-1234-1234-123412341234]] などの値) をコピーします。

  3. Uninstall.bat を編集して次を含む 1 行を挿入します。ProductCode は手順 2. でコピーした値です。

    Msiexec /x ProductCode

  4. セットアップ プロジェクトのアプリケーション フォルダに Uninstall.bat を追加します。

  5. Uninstall.bat を右クリックし、[ショートカットの作成] を選択してショートカットを作成します。

  6. セットアップ プロジェクトで、適切な [スタート] メニュー フォルダにショートカットを含めます。

  7. ショートカットの名前を "<Application Name> のアンインストール" などに変更します。

セットアップ プロジェクトの使用例の参照先

セットアップ プロジェクトの使用例については、「Windows インストーラでの配置に関するチュートリアル」を参照してください。

.NET Framework ベースのアプリケーションの配置を計画する方法

ガイド『Deploying .NET Framework-based Applications』では、.NET Framework ベースのアプリケーションの効果的な配置を計画、実装するために必要な情報を提供しています。

Windows インストーラ SDK をダウンロードできるサイト

次のプラットフォーム SDK Web サイトから Windows インストーラ SDK をダウンロードできます。

https://www.microsoft.com/downloads/details.aspx?FamilyId=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5&displaylang=en

Crystal Reports を更新し、ヘルプを入手できるサイト

更新済みのソフトウェアとマージ モジュールは、次の BusinessObjects.com Web サイトのダウンロードと更新プログラムのページからインストールできます。

http://support.businessobjects.com/fix/downloads_updates.asp

アプリケーションと共に .NET Framework をインストールするために役立つブートストラップを入手できるサイト

Microsoft .NET Framework Setup.exe ブートストラップのサンプルは、次のサイトで入手できます。

https://www.microsoft.com/downloads/details.aspx?FamilyID=bf253cfd-1efc-4fc5-ba7e-6a6f21403495&displaylang=en

Visual Studio .NET Framework ブートストラップ プラグインは、次のサイトで入手できます。

http://workspaces.gotdotnet.com/vsboot

"修復できないビルド エラーです。" エラー メッセージの解決方法

Setup and Deployment Projects のビルド時に "修復できないビルド エラーです。" エラー メッセージが表示される場合は、次の文書を参照してください。

「[PRB] セットアップ/デプロイメント プロジェクトをビルドすると "修復できないビルド エラーです。" というエラー メッセージが表示される」(https://support.microsoft.com/?id=329214)。

検証エラー メッセージの解決方法

"An error occurred when validating. HRESULT = '80040155'" などのエラー メッセージが表示される場合は、「[PRB] セットアップ/デプロイメント プロジェクトをビルドすると "修復できないビルド エラーです。" というエラー メッセージが表示される」 (https://support.microsoft.com/?id=329214) を参照し、「登録が見つからない」の手順に従ってください。

カスタム動作の配置中に IIS を変更する方法

「Modifying Internet Information Services During Deployment with Custom Actions」(https://msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_vstechart/html/vbtchUsingCustomActionsToModifyInternetInformationServerDuringDeployment.asp?frame=true) では、いくつかの問題を解決する方法について説明しています。たとえば、次のような構造です。

  • ファイル システム エディタの Web フォルダで、使用可能でない IIS フォルダの設定を変更する方法

  • Visual Basic 6 と Visual Basic .NET (以降のバージョン) の両方を使用するハイブリッド アプリケーションを配置する方法

  • Visual Basic 6 アプリケーションの配置と比較した場合の Visual Studio .NET (以降) のアプリケーションの配置の相違

"無人配置" に関する情報の参照先

「No-Touch Deployment in the .NET Framework」(https://msdn.microsoft.com/library/en-us/dv_vstechart/html/vbtchno-touchdeploymentinnetframework.asp) を参照してください。

ASP.NET アプリケーションを配置する方法

Visual Studio .NET を使用した ASP.NET アプリケーションの配置については、「Deploying an ASP.NET App Using Visual Studio .NET」を参照してください。

Windows 2000 でのインストール後、アプリケーションの実行が失敗し、MDAC 2.8 が必要という警告が表示される

System.Data 名前空間を参照するアプリケーションは、MDAC (Microsoft Data Access Components) Version 2.8 以降との依存関係を持ちます。ほとんどの場合、このファイルは、オペレーティング システムの一部として既にインストールされています。Windows 2000 Service Pack 3 以前では、アプリケーションと共にコンポーネントをインストールすることが必要になる場合があります。これは、コンポーネントをブートストラップ パッケージに追加し、インストール時に Microsoft からファイルをダウンロードすることで実現できます。詳細については、「配置の必要条件 (Visual Studio)」を参照してください。

関連するサポート技術情報の文書

次のサポート技術情報の文書は、Windows インストーラの配置の問題について情報を提供しています。

参照

概念

配置と依存関係

配置の代替手段

参照

VirtualDirectory プロパティ

その他の技術情報

アプリケーションとコンポーネントの配置

Windows インストーラでの配置に関するチュートリアル