none
Visual Studio 2015のオフラインインストーラが作成できない RRS feed

  • 質問

  • 以下のコマンドでVisual Studio 2015のオフラインインストーラを作成しようとしましたが

    ja_visual_studio_community_2015_with_update_3_x86_x64_web_installer_8922964.exe /layout s:\vc14\visual_studio_community_2015_with_update_3

    以下のエラーで終了してしまいました。

    [1CEC:0F00][2018-01-02T19:30:52]i000: SI:  製品のエントリ 'PowerShellToolsV1' を処理しています。
    [1CEC:0F00][2018-01-02T19:30:52]i000: SI:  ファイルをダウンロードしています: 'http://go.microsoft.com/fwlink/?LinkID=616995'
    [1CEC:0F00][2018-01-02T19:30:59]i000: SI:  ファイル 'http://go.microsoft.com/fwlink/?LinkID=616995' を場所 's:\vc14\visual_studio_community_2015_with_update_3\OfflineCache\installers\PowerShellToolsV1\en\0\items-itemName=AdamRDriscoll.PowerShellToolsforVisualStudio2015' にダウンロードしました
    [1CEC:0F00][2018-01-02T19:30:59]i000: SI:  Certificate not valid for file:s:\vc14\visual_studio_community_2015_with_update_3\OfflineCache\installers\PowerShellToolsV1\en\0\items-itemName=AdamRDriscoll.PowerShellToolsforVisualStudio2015
    [1CEC:0F00][2018-01-02T19:30:59]e000: SI:  System.ApplicationException: ダウンロードしたファイルの署名の確認に失敗しました。改ざんされている可能性があります
       場所 Microsoft.Web.PlatformInstaller.CommandLine.Offline.InstallerProductTask.ThrowOnDownloadFailedTrustVerification(String downloadedPath)
       場所 Microsoft.Web.PlatformInstaller.CommandLine.Offline.InstallerProductTask.Execute(OfflineCacheSnapshot snapshot, String offlineFeedPath, ProductEntry entry, XmlNamespaceManager namespaceManager, ILogger logger, IEnumerable`1& errorMessages)
       場所 Microsoft.Web.PlatformInstaller.CommandLine.Offline.Tasks.OfflineTaskManager.AddProduct(OfflineCacheSnapshot snapshot, String onlineFeedPath, String offlineFeedPath, String productId, ILogger logger, Func`1 checkIfUserCanceled, IEnumerable`1& errorMessages)
       場所 Microsoft.Web.PlatformInstaller.CommandLine.Offline.OfflineCacheManager.SyncProducts(UpdateMode updateMode, ICollection`1 productIds, String parent, String callerBaseDirectory, Func`1 checkIfUserCanceled)
    [1CEC:0F00][2018-01-02T19:30:59]i000: MUX:  Some operations failed, see the detailed error messages for more information:
    [1CEC:0F00][2018-01-02T19:30:59]e000: MUX:  製品 'PowerShellToolsV1' のダウンロードに失敗しました。ダウンロードしたファイルの署名の確認に失敗しました。改ざんされている可能性があります
    [1CEC:0F00][2018-01-02T19:30:59]i000: MUX:  Set Result: Return Code=1603 (0x643), Error Message=製品 'PowerShellToolsV1' のダウンロードに失敗しました。ダウンロードしたファイルの署名の確認に失敗しました。改ざんされている可能性があります, Result Detail=製品 'PowerShellToolsV1' のダウンロードに失敗しました。ダウンロードしたファイルの署名の確認に失敗しました。改ざんされている可能性があります, Vital=False, Package Action=DownloadThirdParty, Package Id=VSSecondaryInstaller_box
    [1CEC:0F00][2018-01-02T19:31:03]i000: MUX:  Source confirmed
    [1CEC:06D4][2018-01-02T19:31:03]i000: MUX:  Apply Complete: Disk Space Used in bytes for Installation:  MaxAppDrive: 0  MaxSysDrive: 58056704  AppDrive: 0  SysDrive: 26238976
    [1CEC:06D4][2018-01-02T19:31:03]i000: MUX:  Free Disk Space after install:  SystemDrive D:\ 68490907648 bytes  AppDrive D:\ 68490907648 bytes
    [1CEC:06D4][2018-01-02T19:31:03]i000: MUX:  Go to Finished page.
    [1CEC:06D4][2018-01-02T19:31:03]i000: MUX:  Watson Bucketting Parameters
    [1CEC:06D4][2018-01-02T19:31:03]i000: MUX:  P1 - vs_community
    [1CEC:06D4][2018-01-02T19:31:03]i000: MUX:  P2 - 14.0.25420.01.00
    [1CEC:06D4][2018-01-02T19:31:03]i000: MUX:  P3 - 14.0.25420
    [1CEC:06D4][2018-01-02T19:31:03]i000: MUX:  P4 - Layout
    [1CEC:06D4][2018-01-02T19:31:03]i000: MUX:  P5 - VSSecondaryInstaller_box
    [1CEC:06D4][2018-01-02T19:31:03]i000: MUX:  P6 - DownloadThirdParty
    [1CEC:06D4][2018-01-02T19:31:03]i000: MUX:  P7 - 0x643
    [1CEC:06D4][2018-01-02T19:31:03]i000: MUX:  P8 - 製品 'PowerShellToolsV1' のダウンロードに失敗しました。ダウンロードしたファイルの署名の確認に失敗しました。改ざんされている可能性があります
    [1CEC:06D4][2018-01-02T19:31:03]i000: MUX:  P9 - 製品 'PowerShellToolsV1' のダウンロードに失敗しました。ダウンロードしたファイルの署名の確認に失敗しました。改ざんされている可能性があります
    

    何らかの対処方法をどなたかご存じないでしょうか。

    • 署名の確認を成功させる方法
    • 署名の確認に失敗してもファイルを消さず処理を続行させる方法
    • 署名の確認に失敗したらスキップして処理を続行させる方法
    • 署名の確認に失敗するコンポーネントをオフラインインストーラから除外する方法
    • それ以外の方法

    環境は、Windows 10 Fall Creators Update x64、Windows 8.1 Update x64どちらもダメでした。windows updateはどちらも最新です。

    ※vs2017を使えというアドバイスは必要ありません。

    ※isoを使えというアドバイスは必要ありません。

    ※以下のurlはすべて確認しましたが、いずれもうまくいきませんでした。

    • https://social.msdn.microsoft.com/Forums/sqlserver/en-US/d963d31d-bd74-45ef-bdc4-7855a7649494/visual-studio-2015-offline-installation?forum=vssetup
    • https://msdn.microsoft.com/en-us/library/mt706497.aspx
    • https://docs.microsoft.com/en-us/visualstudio/install/install-certificates-for-visual-studio-offline
    2018年1月3日 5:58

回答

  • PowerShellToolsの更新に伴ってリンク先が更新されたようです。
    D:\新しいフォルダー>curl -I http://go.microsoft.com/fwlink/?LinkID=616995
    HTTP/1.1 302 Moved Temporarily
    Cache-Control: no-cache
    Pragma: no-cache
    Content-Length: 0
    Expires: -1
    Location: https://adamrdriscoll.gallerycdn.vsassets.io/extensions/adamrdriscoll/powershelltoolsforvisualstudio2015/3.1.618/1516589473337/PowerShellTools.14.0.vsix
    Server: Microsoft-IIS/8.5
    X-AspNetMvc-Version: 5.2
    X-AspNet-Version: 4.0.30319
    X-Powered-By: ASP.NET
    Date: Fri, 26 Jan 2018 06:44:14 GMT
    Connection: keep-alive
    
    
    D:\新しいフォルダー>curl -O https://adamrdriscoll.gallerycdn.vsassets.io/extensions/adamrdriscoll/powershelltoolsforvisualstudio2015/3.1.618/1516589473337/PowerShellTools.14.0.vsix
      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                     Dload  Upload   Total   Spent    Left  Speed
    100 2042k  100 2042k    0     0  4355k      0 --:--:-- --:--:-- --:--:-- 4355k
    
    D:\新しいフォルダー>ls -l
    total 2043
    -rw-r--r-- 1 h Administrators 2091804 Jan 26 15:44 PowerShellTools.14.0.vsix
    これように作ったローカルプロキシを使わずともダウンロードできるようになりました。
    • 回答としてマーク hATrayflood 2018年1月26日 8:56
    2018年1月26日 8:55

すべての返信

  • s ドライブというのはネットワークドライブでしょうか?

    何か影響があるかもしれないので、展開先をローカルドライブに指定して試してみてはいかがでしょう?

    ログを見た感じだと、PowerShellToolsV1 のDLに失敗しており、それを抱えているのが、WebPlatformInstallerのようなので、何か権限などで影響があるのかもしれません。

    また、オフラインインストーラを作成したフォルダをフォルダごとコピーする分にはどこにコピーしても利用できるはずなので、最初から内部公開用フォルダにDLせず、ローカルにDLしても問題なく動作するはずです。


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

    2018年1月5日 5:07
  • 証明書とか中間証明書とかが入っていない系の問題と思いますが。
    手でPowerShellTools.14.0.vsixをダウンロードして、署名検証したらどうなります?

    なお、参考までに、こちらだとこういう結果になります。

    >ver
    Microsoft Windows [Version 10.0.16299.192]

    > vsixsigntool.exe verify /v  C:\Users\~\Downloads\PowerShellTools.14.0.vsix
    Verifying: "C:\Users\~\Downloads\PowerShellTools.14.0.vsix"

    Signing Certificate:
            Issued to  : Adam Driscoll
            Issued by  : DigiCert SHA2 Assured ID Code Signing CA
            From       : Sat Jan 28 09:00:00 2017
            Expiry     : Thu Feb  1 21:00:00 2018
            Sign Method: RSA/SHA256
            SHA1 hash  : f2 be f3 3f 6d d7 32 bb  ae 4d d9 27 a5 bb 01 0a
    93 a4 9b d5


    VsixSignTool Success: Package "C:\Users\~\Downloads\PowerShellTools.14.0.vsix" is valid.

    Number of files successfully Verified: 1
    Number of errors: 0


    jzkey

    2018年1月5日 23:43
  • わかりにくくてすみません。sドライブはSATA接続のローカルなハードディスクですね。

    管理者権限で起動したコマンドプロンプトからでもダメでした。

    2018年1月6日 2:43
  • 同じ結果になりました。

    ただし、vsixsigntool実行時にvcruntime140.dllを要求されたので、vcredist 2015をインストールしました。

    また、このあと再度オフラインインストーラを作成しましたが、同じエラーのままで解消できませんでした。

    2018年1月6日 4:29
  • これは署名の検証に失敗しているのではなくて、そもそもファイルのダウンロードに失敗してます。

    インストーラーはhttp://go.microsoft.com/fwlink/?LinkID=659004&clcid=0x411を見に行って最新のダウンロードリスト(feed.xml)を取得し、そのリストに記述されているダウンロード先からローカルにダウンロードします。
    しかし、このダウンロード先に問題があります。

    このリストではPowerShellToolV1のダウンロードURLはhttp://go.microsoft.com/fwlink/?LinkID=616995となっていますが、
    このアドレスにアクセスすると本来ならインストールパッケージにリンクされているはずなのに正しくリンクされていません。

    http://go.microsoft.com/fwlink/?LinkID=616995
    ↓302
    https://visualstudiogallery.msdn.microsoft.com/c9eb3ba8-0c59-4944-9a62-6eee37294597/file/199313/1/PowerShellTools.14.0.vsix
    ↓301
    https://marketplace.visualstudio.com/vsgallery/c9eb3ba8-0c59-4944-9a62-6eee37294597

    もともとは正しかったのかもしれませんが、リンク先のファイルが無くなったからなのか、VisualStudioGalleryだったのがMarketPlaceに変更になったからなのかは判りませんが、ファイルをダウンロードできません。
    飛ばされたページのダウンロードの
    https://adamrdriscoll.gallerycdn.vsassets.io/extensions/adamrdriscoll/powershelltoolsforvisualstudio2015/3.0.582/1504150209811/199313/7/PowerShellTools.14.0.vsix
    からはダウンロードできるので、完全になくなっているわけではないです。

    というわけで、理屈としては修正するにはfeed.xmlの内のリンクを変更などしてやればいいわけです。
    変更箇所はPowerShellToolsV1を検索するとproductIdがPowerShellToolsV1となっているentry中に、それっぽいinstallerURLというタグがあるので、アドレスを書きかえてやります。

      <entry>
        <productId>PowerShellToolsV1</productId>
        <Title>PowerShell Tools for Visual Studio</Title>
        <version>3.0.0</version>
        <summary>PowerShell スクリプトとモジュールの開発とデバッグ用のツールのセット</summary>
        <id>http://go.microsoft.com/fwlink/?LinkID=616995</id>
        <longSummary>PowerShell スクリプトとモジュールの開発とデバッグ用のツールのセット</longSummary>
        <author>
          <name>Adam Driscoll</name>
          <uri>https://visualstudiogallery.msdn.microsoft.com/c9eb3ba8-0c59-4944-9a62-6eee37294597?SRC=Home</uri>
        </author>
        <terms>
          <termsText>License</termsText>
          <termsLink>http://go.microsoft.com/fwlink/?LinkId=616996</termsLink>
          <termsLinkText>License</termsLinkText>
        </terms>
        <discoveryHint>
          <vsix>
            <id>59875F69-67B7-4A5C-B33A-9E2C2B5D266D</id>
            <version>3.0.0</version>
          </vsix>
        </discoveryHint>
        <installers>
          <installer>
            <id>1</id>
            <languageId>en</languageId>
            <architectures>
              <x86/>
              <x64/>
            </architectures>
            <vsixId>59875F69-67B7-4A5C-B33A-9E2C2B5D266D</vsixId>
            <installerFile>
              <fileSize>2087816</fileSize>
              <installSize>5757191</installSize>
              <installerURL>https://adamrdriscoll.gallerycdn.vsassets.io/extensions/adamrdriscoll/powershelltoolsforvisualstudio2015/3.0.582/1504150209811/199313/7/PowerShellTools.14.0.vsix</installerURL>
            </installerFile>
            <logFiles>
              <location>%temp%\secondaryinstaller_vsix.log</location>
            </logFiles>
            <installCommands>
              <vsixSetup>
                <commandLineArguments>/quiet /uninstall:58dce676-42b0-4dd6-9ee4-afbc8e582b8a /log:"%PrimaryLogLocation%PowerShellTools.log"</commandLineArguments>
                <returnCodeMappings>
                  <mapping>
                    <returnCode>2003</returnCode>
                    <success/>
                  </mapping>
                  <mapping>
                    <returnCode>1002</returnCode>
                    <success/>
                  </mapping>
                </returnCodeMappings>
              </vsixSetup>
              <vsixSetup>
                <commandLineArguments>/quiet /admin %InstallerFile% /log:"%PrimaryLogLocation%PowerShellTools.log"</commandLineArguments>
              </vsixSetup>
            </installCommands>
            <repairCommands>
              <vsixSetup>
                <commandLineArguments>/quiet /admin %InstallerFile% /log:"%PrimaryLogLocation%PowerShellTools.log"</commandLineArguments>
              </vsixSetup>
            </repairCommands>
            <uninstallCommands>
              <vsixSetup>
                <commandLineArguments>/quiet /uninstall:%VsixId% /log:"%PrimaryLogLocation%PowerShellTools.log"</commandLineArguments>
              </vsixSetup>
            </uninstallCommands>
          </installer>
        </installers>
      </entry>

    しかし、単純に書き換えてもインストーラーはfeed.xmlの検証に失敗しします。
    これは元のfeed.xmlが改ざんされていないかをチェックするために署名されているからです。
    ですから、書き換えたxmlファイルの署名をやり直してやる必要ががあります。
    なお署名に使った証明書は信頼されたルート証明機関に登録されてないとインストールエラーになるようです。署名に使える元のファイルと同じマイクロソフトの証明書はないので、自己証明書を作って登録しておきます。

    あとはインストーラに対して書き換えたxmlファイルを読み込むように/OverrideFeedUriというオプションで指定してやります。

    ja_visual_studio_community_2015_with_update_3_x86_x64_web_installer_8922964.exe /overridefeeduri "E:\VS2015U3COM\feed_fix_PowerShellTools_Installer_Url.xml" /layout E:\VS2015U3COM

    このようにしてダウンロードが完了するまでは確認できました。(インストールが成功するかまではテストしてません)

    署名をしたり面倒なので、自己証明書と書き換えたfeed.xmlを置いておきます。
    なお、ルート証明機関に自己証明書を入れておくのは危険なので、わざと有効期間が短い証明書にしてあります。よって、すぐに試さないと無効になります。

    #1回試験するだけで26GBもダウンロードするのは大変


    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    2018年1月6日 13:33
  • あ、なるほど。vsixじゃなくウェブページのhtmlが落ちてきてるから署名の確認は当然失敗してて

    それならinstallerURLを書き換えればOKってことですね。ヒントありがとうございます。

    ただ、このパターンだとインストール時にこれ専用の自己証明書をあらかじめ入れとかないといけないので

    あとでやるときうっかり忘れそうですね。(しかも期限切れ)

    ネットワークで解決できそうだったので、プロキシサーバ作りました。

    https://github.com/hATrayflood/vs2015_install_proxy

    これで自己証明書を作ることなく、すべてダウンロードできました。

    2018年1月9日 15:25
  • PowerShellToolsの更新に伴ってリンク先が更新されたようです。
    D:\新しいフォルダー>curl -I http://go.microsoft.com/fwlink/?LinkID=616995
    HTTP/1.1 302 Moved Temporarily
    Cache-Control: no-cache
    Pragma: no-cache
    Content-Length: 0
    Expires: -1
    Location: https://adamrdriscoll.gallerycdn.vsassets.io/extensions/adamrdriscoll/powershelltoolsforvisualstudio2015/3.1.618/1516589473337/PowerShellTools.14.0.vsix
    Server: Microsoft-IIS/8.5
    X-AspNetMvc-Version: 5.2
    X-AspNet-Version: 4.0.30319
    X-Powered-By: ASP.NET
    Date: Fri, 26 Jan 2018 06:44:14 GMT
    Connection: keep-alive
    
    
    D:\新しいフォルダー>curl -O https://adamrdriscoll.gallerycdn.vsassets.io/extensions/adamrdriscoll/powershelltoolsforvisualstudio2015/3.1.618/1516589473337/PowerShellTools.14.0.vsix
      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                     Dload  Upload   Total   Spent    Left  Speed
    100 2042k  100 2042k    0     0  4355k      0 --:--:-- --:--:-- --:--:-- 4355k
    
    D:\新しいフォルダー>ls -l
    total 2043
    -rw-r--r-- 1 h Administrators 2091804 Jan 26 15:44 PowerShellTools.14.0.vsix
    これように作ったローカルプロキシを使わずともダウンロードできるようになりました。
    • 回答としてマーク hATrayflood 2018年1月26日 8:56
    2018年1月26日 8:55