2017年6月1日木曜日

インストーラーにC++2015ランタイムを追加してみよう

こんばんは。よーです。初めての投稿です!

今回はちょっと?かなり??マイナーな情報かもしれませんがVC++のインストーラ作成についてお話ししたいと思います。

先日、VC++6.0⇒VC++2015へバージョンアップし、いざ!インストーラを作成して・・・ってところでハマった話。

昔ながらのセットアッププロジェクト(昔はディストリビューションウィザードかな?)を作成してショートカットを追加してと。
あっランタイムも必要なので必須コンポーネントをチェックして。よし!ビルドしよう。



















ってあれっ?ビルドに失敗している。。。








ビルド結果を見ると、なにやらC++2015ランタイムのインストーラが存在しないためNGになっている様子。
それならと思い早速マイクロソフトへGo。










これこれ。今回は32ビット版が欲しいので「vc_redist.x86.exe」をダウンロード。

対象フォルダ「C:\Program Files (x86)\Microsoft Visual Studio 14.0\SDK\Bootstrapper\Packages\vcredist_x86」へインストーラをコピーして、あらためてリビルド。あれ?同じエラーが。
良くみると「C++ "14" Runtime Libraries (x86)' のファイル 'vcredist_x86\vcredist_x86.exe' をローカル コンピューターにダウンロードする必要があります。」

あっファイル名が違う!なるほどなるほど。リネームしてリビルド。








ビルドに成功したものの、警告が2つ増えた。。。仕方ないので1つずつ解決することに。

まず、1行目の警告。
「カルチャ 'ja-JP' を項目 'Visual C++ "14" Runtime Libraries (x86)' に対して一致できませんでした。カルチャ 'en' を使用します。」
どうやら日本語用のカルチャを用意しないといけないとのこと。

先ほどインストーラをコピーしたフォルダを確認すると・・・









英語カルチャしかない!ので英語カルチャ「en」をコピー⇒「jp」にフォルダをリネーム。
フォルダ内の「package.xml」を開き、「Culture」を"ja"に修正。








これでOKかなとリビルド。








警告が1つ消えたものの、もう1つは残ったまま。

なので、2つ目の警告。
「'Visual C++ "14" Runtime Libraries (x86)' 内の 'PublicKey' 属性の値は
ファイル 'C:\Program Files (x86)\Microsoft Visual Studio 14.0\SDK\Bootstrapper\Packages\vcredist_x86\vcredist_x86.exe' の値と一致しません。」

どうやらインストーラの公開キーが一致しないとのこと。
再度、先ほどインストーラをコピーしたフォルダの「product.xml」を開くと・・・
















公開キー「PublicKey」発見!この値を修正することに。
今回ダウンロードしたインストーラの公開キーを確認。
インストーラを右クリックプロパティ⇒「デジタル署名タブ」の「sha1」の詳細⇒証明書の表示⇒「詳細タブ」の公開キーをクリックすると




















これこれ。この文字列をコピーし空白を除去して「PublicKey」の値と置き換えて、もう一度リビルド。








結果!エラーも警告もなく、インストーラ作成に成功しましたとさ。めでたしめでたし。

0 件のコメント:

コメントを投稿