none
InstallShield Limited Editionのビルド時のエラーについて RRS feed

  • 質問

  • いつもお世話になっております。arubi-momoです。

    開発環境は、Windows10、VisualStudio2010 Professional sp1、VC++です。

    現在、Windows7からWindows10への開発環境移動の検証作業を行っております。

    InstallShield LE のプロジェクトを追加したソリューションをビルドすると、以下のエラーが発生しました。

    error:-6017 The build was unable to extract COM information

    その後のメッセージを読むと、管理者権限がないとビルドできない、というような内容でした。

    Windows7では正常にビルドできていたプロジェクトなので、Windows10に変えた影響だと思っています。

    .NETではアプリケーションマニフェストファイルなど追加して、管理者権限を付与することができると思うのですが、VC++でどう解決すればよいのかがわかりません。

    どなたか解決方法についてご存知の方がいらっしゃいましたら、ご教示いただければ幸いです。

    何卒、よろしくお願いいたします。

    2018年1月31日 2:47

回答

  • UACの確認をしたところ、レベルが一番下になっていませんでした。※Windows7では一番下でした。

    変更しようとしたところ、PCのセキュリティに関する部分は全社で一元管理されており、変更ができませんでした。

    これは原因を知ってもらうために書いたものです。
    先ほども書きましたが、Windows 10 ではそれを一番下にしても、UAC は有効のままとなるような仕様ですので、その設定変更で解決しないことを理解しておいてください。
    ゆえに、試されているように、Visual Studio を管理者として実行することになります。

    「問題が発生したため、PCを再起動する必要があります。エラー情報を収集しています。自動的に再起動します。

     停止コード:REGISTRY_FILTER_DRIVE_EXCEPTION、失敗した内容:ISRegFit64.sys」

    UACの設定を変更できていないのに、ビルド中に変更不可の何かを書き換えようとしているのでしょうか。

    違います。
    UAC の問題は解決して次に進んだのですが、実際にレジストリに書き込ませ、その内容をキャプチャしようとする、InstallShield の仕組みで問題が起きています。
    レジストリへの書き込みをキャプチャするためのフィルタードライバーで例外が出ているようですが、正直、難しい問題だと思われます。

    Windows 10 で VS2010 時代の InstallShield を使っていることで、フィルタードライバーと Windows 10 の相性問題が起きている、つまり、その環境では使えないという可能性もあるかもしれません。

    →この見立てで合っていそうで、詳しくは文末追記へ。

    また、kenjinoteさま、マニフェストファイルの作成方法をありがとうございます。

    今回の問題は DLL 側に手を入れても解決しない点はご留意ください。

    -----
    追記

    stackoverflow のこのスレッド によると、この BSOD の問題は InstallShield 2015 で修正されているそうです。
    新しい InstallShield に移行するか、開発環境の Windows 10 移行を諦めるか、インストーラー作成環境だけ Windows 7 というようにソリューションから切り離すか、ご自身の状況に合わせて選択してください。

    2018年1月31日 14:21
    モデレータ

すべての返信

  • なぜ管理者権限がないとビルドできないのかの原因は分かりませんでしたが、Visual C++ プロジェクトで管理者権限のマニフェストを付ける方法は

    1. 対象となる Visual C++ プロジェクトを Visual Studio で開く
    2. プロジェクトのプロパティを開く
    3. 左ペインで、[構成プロパティ]→[リンカー]→[マニフェスト ファイル] を開く
    4. [UAC の実行レベル] を [requireAdministrator (/level='requireAdministrator')] に設定する


    としてビルドすると自動的に出力されるモジュールに管理者権限のマニフェストが埋め込まれます。

    2018年1月31日 3:21
  • それって、Install Shield のエラーですから、Visual Studio 自身を管理者として起動するだけでは?

    (Install Shield は COM の登録情報を抽出するために、実際にレジストリに書き込ませるので HKEY_LOCAL_MACHINE への書き込みアクセスが必要となり、結果的に管理者権限にて実行する必要がある)

    移行で遭遇した理由は断定できませんが、UAC を一番下のレベルに下げていますか? そうであれば、Win7 と Win10 でその意味が異なることが理由でしょう。(Win7 はそれで UAC を完全無効化できるが、Win8 以降はそうならない)

    2018年1月31日 3:32
    モデレータ
  • Azuleanさま

    お世話になっております。ご回答いただきましてありがとうございます。

    UACの確認をしたところ、レベルが一番下になっていませんでした。※Windows7では一番下でした。

    変更しようとしたところ、PCのセキュリティに関する部分は全社で一元管理されており、変更ができませんでした。

    そのため、まずはVisualStudio自身を管理者として起動して動作確認してみました。

    すると、InstallShieldのプロジェクトのビルドの途中で、突然PCが落ち、ブルースクリーンとなってしまいました。エラー内容は以下の通りです。

    「問題が発生したため、PCを再起動する必要があります。エラー情報を収集しています。自動的に再起動します。

     停止コード:REGISTRY_FILTER_DRIVE_EXCEPTION、失敗した内容:ISRegFit64.sys」

    UACの設定を変更できていないのに、ビルド中に変更不可の何かを書き換えようとしているのでしょうか。

    UACの件については担当の方に確認してみます。

    また、kenjinoteさま、マニフェストファイルの作成方法をありがとうございます。

    こちらの方法も後ほど試させていただきます!進展がありましたらまたご報告いたします。

    よろしくお願いいたします。

    2018年1月31日 5:36
  • すでに半ば回答が出ていますが、Visual Studio の問題ではなく InstallShield 側の問題ですね。

    ちょっと検索してみたところ、通常版でも同様のエラーは出ているようで、InstallShield のユーザーフォーラムに

    https://community.flexerasoftware.com/showthread.php?144302-Internal-Build-Error-6017

    というスレッドがありました。

    ちゃんと読んでませんが、IsRegSpy.exe を登録すればいいようです。詳しいことはスレッドを見てください。


    とっちゃん@わんくま同盟, Visual Studio and Development Technologies http://blogs.wankuma.com/tocchann/default.aspx

    2018年1月31日 6:29
  • UACの確認をしたところ、レベルが一番下になっていませんでした。※Windows7では一番下でした。

    変更しようとしたところ、PCのセキュリティに関する部分は全社で一元管理されており、変更ができませんでした。

    これは原因を知ってもらうために書いたものです。
    先ほども書きましたが、Windows 10 ではそれを一番下にしても、UAC は有効のままとなるような仕様ですので、その設定変更で解決しないことを理解しておいてください。
    ゆえに、試されているように、Visual Studio を管理者として実行することになります。

    「問題が発生したため、PCを再起動する必要があります。エラー情報を収集しています。自動的に再起動します。

     停止コード:REGISTRY_FILTER_DRIVE_EXCEPTION、失敗した内容:ISRegFit64.sys」

    UACの設定を変更できていないのに、ビルド中に変更不可の何かを書き換えようとしているのでしょうか。

    違います。
    UAC の問題は解決して次に進んだのですが、実際にレジストリに書き込ませ、その内容をキャプチャしようとする、InstallShield の仕組みで問題が起きています。
    レジストリへの書き込みをキャプチャするためのフィルタードライバーで例外が出ているようですが、正直、難しい問題だと思われます。

    Windows 10 で VS2010 時代の InstallShield を使っていることで、フィルタードライバーと Windows 10 の相性問題が起きている、つまり、その環境では使えないという可能性もあるかもしれません。

    →この見立てで合っていそうで、詳しくは文末追記へ。

    また、kenjinoteさま、マニフェストファイルの作成方法をありがとうございます。

    今回の問題は DLL 側に手を入れても解決しない点はご留意ください。

    -----
    追記

    stackoverflow のこのスレッド によると、この BSOD の問題は InstallShield 2015 で修正されているそうです。
    新しい InstallShield に移行するか、開発環境の Windows 10 移行を諦めるか、インストーラー作成環境だけ Windows 7 というようにソリューションから切り離すか、ご自身の状況に合わせて選択してください。

    2018年1月31日 14:21
    モデレータ
  • ちょっと検索してみたところ、通常版でも同様のエラーは出ているようで、InstallShield のユーザーフォーラムに

    https://community.flexerasoftware.com/showthread.php?144302-Internal-Build-Error-6017

    というスレッドがありました。

    読んでみましたが、別の事象に思えます。
    エラーコードは同じですが、メッセージが明確に異なりますので…。

    • 回答としてマーク arubi_momo 2018年2月5日 8:37
    • 回答としてマークされていない arubi_momo 2018年2月5日 8:37
    2018年1月31日 14:33
    モデレータ
  • Azuleanさま

    いつもお世話になっております。ご連絡が遅くなり申し訳ありません。

    ご丁寧なご回答をいただきましてありがとうございます。

    とっちゃんさまにいただいたページの方法を試しておりましたが、うまくいかず、最新のInstallShieldを試してみるか?という話になっていたところでした。追記いただいた情報を拝見し、最新InstallShieldに移行する方法を試してみようと思います。

    結果はまたご報告させていただきます。

    たくさんのことをご教示いただき、本当にありがとうございました。

    2018年2月2日 7:36
  • いつもお世話になっております。

    結果のご報告になります。

    Azuleanさまのおっしゃる通り、バージョンを2015にアップすることで解決いたしました。

    InstallShield Limited Edition 2015 をインストールし、Visual Studio2010を管理者権限で起動することで問題なくビルドすることができました。

    皆様にいろいろとご教示いただけて、とても勉強になりました。ありがとうございました。

    2018年2月5日 8:36