読者です 読者をやめる 読者になる 読者になる

Webサービスで起業を目指すプログラマーblog

仕事で使ったプログラミング、サーバー周りで役に立つこと、Webサービス開発に必要な技術情報、モバイル情報を書いてます。わかりやすく見やすくをモットーにしています。

InstallShield2013LEでインストーラー作成時に.NET Framework4.5.1を含めて配布する

VisualStudio InstallShieldLE

VisualStudio2013では、.NET Framework4.5.1を選択し開発が行えます。

VisualStudioに付属するInstallShieldELでインストーラーを作成して、.NET Frameworkも含めて配布しようと思ったら、4.5.1に対応していないことがわかりました。

最新の開発環境なのにインストーラーが対応してないってどういうことやねん!と思ってインストーラーの説明を読んでいると、設定を追加すると使えることがわかりました。

でも設定の追加方法がよく分からないのでいろいろ調べました。
先人のおかけでコードをコピペしたら使えるものを発見したのでありがたく使わせて頂きました。

でも.NET Framework本体だけの設定で言語パックの設定情報はありませんでした。
言語パックの設定は、既存の設定情報に似せて頑張って作ってみると問題なく動作してホッとしました。

環境

VisualStudio 2013
InstallShield 2013LE

.NET Framework4.5.1用の設定ファイルを作成する

.NET Framework4.5.1の設定ファイルを2種類作成します。
ファイル名はわかりやすい名前ならなんでもいいです。
つけた名前が設定画面に表示されます。

本体 Microsoft .NET Framework 4.5.1.prq
日本語パック Microsoft .NET Framework 4.5.1 Language Pack - Japanese.prq


作成したファイルを次のパスに配置します。

C:\Program Files (x86)\InstallShield\2013LE\SetupPrerequisites

設定ファイルの中身

タグの意味はよく分かっていません。
ドキュメントもなさ気だったのでこれかなーっていう感じでやってますので、設定値は間違っている可能性があります。

プロパティIDは、.NET Frameworkをインストールしてレジストリに登録されるアンインストール情報のIDを使っています。

GUIDとかプロダクトコードとか言われるようです。
何が正しいのかよく分かりませんが、アンインストールが正常に行えれば問題ないと思われます。


Microsoft .NET Framework 4.5.1.prq

<?xml version="1.0" encoding="UTF-8"?>
<SetupPrereq>
	<conditions>
		<!-- Test for redistributable 4.5.1 -->
		<condition Type="2" Comparison="2" Path="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" FileName="Release" ReturnValue="378758" />
		<!-- Test for 4.5.1 on Win 8.1 -->
		<condition Type="2" Comparison="2" Path="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" FileName="Release" ReturnValue="378675" />
	</conditions>
	<operatingsystemconditions>
		<!-- run on Win 7 -->
		<operatingsystemcondition MajorVersion="6" MinorVersion="1" PlatformId="2" CSDVersion="" ProductType="1" />
		<!-- run on Win 8 -->
		<operatingsystemcondition MajorVersion="6" MinorVersion="2" PlatformId="2" CSDVersion="" ProductType="1" />
		<!-- do not run on Win 8.1, so do not include v6.3 -->
	</operatingsystemconditions>
	<files>
		<file LocalFile="&lt;ISProductFolder&gt;\SetupPrerequisites\Microsoft .net\4.5.1\NDP451-KB2858728-x86-x64-AllOS-ENU.exe" URL="http://download.microsoft.com/download/1/6/7/167F0D79-9317-48AE-AEDB-17120579F8E2/NDP451-KB2858728-x86-x64-AllOS-ENU.exe" CheckSum="607d3c9b399e3d303a1b14eb4326bd1e" FileSize="0,70087104" />
	</files>
	<execute file="NDP451-KB2858728-x86-x64-AllOS-ENU.exe" cmdline="/q /norestart" cmdlinesilent="/q /norestart" returncodetoreboot="1641,3010" />
	<properties Id="{7DEBE4EB-6B40-3766-BB35-5CBBC385DA37}" Description="This prerequisite installs the .NET Framework 4.5.1 package." />
	<behavior Failure="2" Reboot="2" />
</SetupPrereq>


Microsoft .NET Framework 4.5.1 Language Pack - Japanese.prq

<?xml version="1.0" encoding="UTF-8"?>
<SetupPrereq>
	<conditions>
		<condition Type="2" Comparison="2" Path="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\1041" FileName="Install" ReturnValue="1"></condition>
	</conditions>
	<operatingsystemconditions>
		<operatingsystemcondition MajorVersion="6" MinorVersion="1" PlatformId="2" CSDVersion="" ProductType="1" />
		<operatingsystemcondition MajorVersion="6" MinorVersion="2" PlatformId="2" CSDVersion="" ProductType="1" />
	</operatingsystemconditions>
	<files>
		<file LocalFile="&lt;ISProductFolder&gt;\SetupPrerequisites\Microsoft .net\4.5.1\LangPack\Japanese\NDP451-KB2858728-x86-x64-AllOS-JPN.exe" URL="http://download.microsoft.com/download/B/F/5/BF53AC68-ECA9-4978-A492-7D338BAAE6E6/NDP451-KB2858728-x86-x64-AllOS-JPN.exe" CheckSum="63950ba1d367a5e30b4c850bc47b3304" FileSize="0,5996408"></file>
	</files>
	<execute file="NDP451-KB2858728-x86-x64-AllOS-JPN.exe" cmdline="/q /norestart" cmdlinesilent="/q /norestart" returncodetoreboot="1641,3010" />
	<dependencies>
		<dependency File="&lt;ISProductFolder&gt;\SetupPrerequisites\Microsoft .NET Framework 4.5.1.prq"></dependency>
	</dependencies>
	<properties Id="{1AAF6669-31B2-3840-9346-F0F653840FD1}" Description="This prerequisite installs the .NET 4.5.1 framework Japanese language pack." />
	<behavior Reboot="2" />
</SetupPrereq>

セットアッププロジェクトの設定

セットアッププロジェクトを展開し②にある「Redistributables」を選択します。
f:id:shinsuke789:20140901172652p:plain


検索フィールドに「4.5.1」と入力し作成した設定情報に絞ります。

左のチェックボックスにチェックを入れると、ファイルがない場合確認のダイアログが表示され、OKを押すとローカルにダウンロードされます。

ダウンロードは1つずつしかできないので、ダウンロード毎にチェックします。
複数チェックしても自動でダウンロードは開始されないので注意してください。
ダウンロード先は設定ファイルにある<file>に書かれたパスです。

ダウンロード状況は、VisualStudioの出力ウインドウに表示されます。

ファイルの有無は右側の「Location」で確認できます。

f:id:shinsuke789:20140901172658p:plain


セットアッププロジェクトをSingleImageでビルドすると、セットアップファイルと.NET Frameworkを含むフォルダができます。
セットアップ時は2つとも必要になります。
f:id:shinsuke789:20140901174906p:plain


セットアップを実行すると自動的に.NET Frameworkの有無を判断してインストールが開始されます。
.NET Frameworkが未インストールの時は次のような画面になります。
f:id:shinsuke789:20140901180216p:plain



InstallShieldLEを使ったセットアップの作成は、後日記事にしてみようと思います。