QA@IT

Win7 embedded standard にVC++2015 Redistributableがインストールできない

33418 PV

お世話になります。

VS2015でビルドしたVC++アプリ(x64)をWin7 Embedded(x64)上で起動するために、
同OSに事前にVC++ランタイム(vc_redist.x64.exe)をインストールしようとしたのですが、
インストールプロセスの最後の方で実行されるWindows6.1-KB2999226-x64.msuアップデート
に失敗してしまいます。

・ターゲットOS:Win7 Embedded Standard x64 SP1適用済み
・ターゲットアプリ:VS2015 x64ビルドのMFCアプリ
※Win7 Proffesinal(x64) SP1は問題なく適用できた。

【ログ抜粋】

[0EE0:0EE4][2015-08-31T11:47:05]i325: Registering dependency: {e46eca4f-393b-40df-9f49-076faf788d83} on package provider: Microsoft.VS.VC_RuntimeMinimumVSU_amd64,v14, package: vcRuntimeMinimum_x64
 [0EE0:0EE4][2015-08-31T11:47:05]i301: Applying execute package: vcRuntimeAdditional_x64, action: Repair, path: C:\ProgramData\Package Cache\{BC958BD2-5DAC-3862-BB1A-C1BE0790438D}v14.0.23026\packages\vcRuntimeAdditional_amd64\vc_runtimeAdditional_x64.msi, arguments: ' MSIFASTINSTALL="7" NOVSUI="1"'
 [0EF0:0EF4][2015-08-31T11:47:07]i319: Applied execute package: vcRuntimeAdditional_x64, result: 0x0, restart: None
 [0EE0:0EE4][2015-08-31T11:47:07]i325: Registering dependency: {e46eca4f-393b-40df-9f49-076faf788d83} on package provider: Microsoft.VS.VC_RuntimeAdditionalVSU_amd64,v14, package: vcRuntimeAdditional_x64
 [0EE0:0EE4][2015-08-31T11:47:07]i301: Applying execute package: Windows7_MSU_x64, action: Install, path: C:\ProgramData\Package Cache\42D5BEC7DDFBD49E76467529CBC2868987BF8460\packages\Patch\x64\Windows6.1-KB2999226-x64.msu, arguments: '"C:\Windows\SysNative\wusa.exe" "C:\ProgramData\Package Cache\42D5BEC7DDFBD49E76467529CBC2868987BF8460\packages\Patch\x64\Windows6.1-KB2999226-x64.msu" /quiet /norestart'
 [0EE0:0EE4][2015-08-31T11:47:10]e000: Error 0x80240017: Failed to execute MSU package.
 [0EF0:0EF4][2015-08-31T11:47:10]e000: Error 0x80240017: Failed to configure per-machine MSU package.
 [0EF0:0EF4][2015-08-31T11:47:10]i319: Applied execute package: Windows7_MSU_x64, result: 0x80240017, restart: None
 [0EF0:0EF4][2015-08-31T11:47:10]e000: Error 0x80240017: Failed to execute MSU package.
 [0EE0:0EE4][2015-08-31T11:47:10]i372: Session end, registration key: SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{e46eca4f-393b-40df-9f49-076faf788d83}, resume: ARP, restart: None, disable resume: No
 [0EE0:0EE4][2015-08-31T11:47:10]i371: Updating session, registration key: SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{e46eca4f-393b-40df-9f49-076faf788d83}, resume: ARP, restart initiated: No, disable resume: No
 [0EF0:0EF4][2015-08-31T11:47:11]i399: Apply complete, result: 0x80240017, restart: None, ba requested restart:  No

海外サイト参照により、wusa.exeやDISM.exeを使用して、上記msuを手動でコマンド実行するとうまくいく
という情報もあり、実行してみましたが、
このマシンには適用できませんといったメッセージが出てやはり失敗してしまいます。

そもそもWin7Embeddedは対象外なのでしょうか?それとも他に解決方法はある?

ご助言よろしくお願いします。

回答

RCでエラーになるというのはちらほら見かけますが解決策は見当たらないですね。

これがあったものの、ちょっとエラーの状況が異なりますね。

https://social.msdn.microsoft.com/Forums/vstudio/en-US/4c6acfb4-6399-4113-9d78-4581513c4881/visual-studio-2015-rc-fails-to-install-on-windows-81?forum=vssetup

embeddedの環境が無いので私がその環境だったら試すだろうことぐらいしか書けませんがご参考なれば。

まずイントール中、パッケージは展開されているはずですので、
エラーのダイアログが出ているのであればそのまま
C:\ProgramData\Package Cacheをエクスプローラで開いて
エクスプローラの検索ボックスに KB2999226 など入力して
packages\Patch\x64\Windows6.1-KB2999226-x64.msu
を探し、任意の場所にコピーします(ただしUsers配下ではなく、だれでもアクセスできそうな場所に置きます)

確認していないですが、ディレクトリはGUIDぽいので常に42D5BEC7DDFBD49E76467529CBC2868987BF8460 に既にいるかもしれません。

コピーしたmsuファイルを管理者権限で実行してみてください。
通常、msuファイルはwusaに関連づいていると思いますのでこれは管理者コマンドプロンプトで
wusa Windows6.1-KB2999226-x64.msu と実行するのと同じはずです。

/norestartを付けていませんので完了後に再起動が求められる可能性があります。

それでも失敗するなら wusa Windows6.1-KB2999226-x64.msu /log %temp%\my_msu_log.log などでログを出してみれば追加の情報が得られるかもしれません。

msiexecだと /lv ログファイル名 /lx ログファイル名 で詳細ログやデバッグログが出せたと思うんですが、wusa /?見る限り /log しかなさそうですね。

あとはこちら http://www.office-qa.com/win/win67.htm のブログで紹介されているように、コマンドでmsuを解凍してアップデートを適用してみる手もあります。

それで適用が管理したら、Visual C++ Redistributable for Visual Studio 2015 パッケージをインストールしてみてください。
(上手くすれば、アップデート済みということでスキップされると思います。)

KB2999226が適用できたかどうかは、コンパネのプログラムと機能の適用したWindows 更新プログラム一覧に表れると思いますのでそれを確認するか、イベントビューアで成否を確認してみてください。

前述の通りembedded環境は持っていないので検証は全然できていませんのでその点はご了承ください。

編集 履歴 (1)

本件、現在のところ解決に至っていませんが、別の代替手法で目的は達成できたのでご報告します。

代替手法はいたって単純で、必要なDllをexeと同じワークディレクトリに入れてあげるというものです。
vc_redistでVC++2015のランタイムまではインストールし、失敗したKB2999226(Universal CRT)はVS2015
フォルダ内から必要Dllのみを抽出して、それをInstallShiledのコンポーネント経由でワークフォルダー側へインストール
するようにしました。

以上ありがとうござました。

編集 履歴 (1)

ログを確認したところ、ワーニング2発、エラー2発発生していました。

2015-09-04 10:51:42, Warning               DISM   DISM Provider Store: PID=2568 Failed to Load the provider: D:\Temp\6B2D7E0A-9358-4A9B-B672-EBFCDC3992B3\PEProvider.dll. - CDISMProviderStore::Internal_GetProvider(hr:0x8007007e)

2015-09-04 10:51:42, Warning               DISM   DISM Provider Store: PID=2568 Failed to Load the provider: D:\Temp\6B2D7E0A-9358-4A9B-B672-EBFCDC3992B3\TransmogProvider.dll. - CDISMProviderStore::Internal_GetProvider(hr:0x8007007e)

2015-09-04 10:51:42, Error                 DISM   DISM Package Manager: PID=2568 The package Package_for_KB2999226 is not applicable to the image. - CPackageManagerCLIHandler::Private_ProcessPackageChange

2015-09-04 10:51:44, Error                 DISM   DISM Package Manager: PID=2568 Failed while processing command add-package. - CPackageManagerCLIHandler::ExecuteCmdLine(hr:0x800f081e)

何が起きているのがさっぱりです。どこかでおきたエラーをハンドラーが捕まえて終了といったところでしょうか。
エラーコード0x800F081Eは

Error 0x800F081E is CBS_E_NOT_APPLICABLE which means that the update can't be installed on the current system. This happens when a requirement is missing or the installed files have higher fileversion. 

とあり、事前に別のパッチがあたっている必要があるのかなというところです。

編集 履歴 (2)

filed_onion様

丁寧に回答下さり大変ありがとございました。

前半の試みは下記サイトでも記載されており、
enter link description here
本質問をあげる前に確認したのですが、スタンドアロンインストーラー起動後、インストールが開始され、途中で停止して、「The update is not appliciate to your computer.」メッセージで失敗終了しました。

その他、 wusa.exe Windows6.1-KB2999226-x64.msu /extract:XXXX で中身のcabファイルを取り出し、
DISM.exe /Online /Add-Package /PackagePath:XXXX\Windows6.1-KB2999226-x64.cab
で実行なんかもやってみましたが、いずれも失敗に終わっています。

command.jpg

ログが出力されていたのを見落としていたので、これから中身のチェックしてみたいと思います。

編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。