fondueでWin8の.NET3.5機能を有効化する

Windows8に.NET3.5をインストールしようとすると、

  • 「プログラムと機能」-「Windowsの機能の有効化または無効化」からWindows Update経由でインストール
  • dism.exeでインストールメディアからオフラインインストール

のいずれかになるわけですが、前者はユーザ導線が初心者向きではなく、後者はメディアのパスが不定なので自動化には不向きという状況でした。

ところが、

によると、fondue.exeというコマンドを使うことによって.NET3.5をインストールするためのダイアログ(.NET3.5が無効な状態でそれを必要とするEXEを実行した際に表示されるものと同じもの)を出すことができるということがわかりました。
早速試してみたのですが、そのままでは「既に.NET3.5が有効な状態でもダイアログが出てしまう」という問題があるので、それを回避する簡単なwrapper(VBS)を書いてみました。

[enable_netfx3.vbs]

Set WshShell = WScript.CreateObject("WScript.Shell")

installed = 0
On Error Resume Next
installed = WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5\Install")
On Error Goto 0

result = 0
If (installed <> 1) Then
    result = WshShell.Run("fondue /enable-feature:netfx3 /caller-name:" & WScript.ScriptName, 1, True)
End If

WScript.Quit result

このVBSを実行すると.NET3.5が無効な場合のみインストールするためのダイアログが表示され、インストールの完了を待って結果を返り値で判定することができます。
fondueの存在を知る前はこれと同様のことをするために、

System.Environment.Exit(0);

だけを実行する.NET3.5のEXEを作って対応してましたが、インストールの完了を待つことができるという点でfondueのほうが優れています。

それにしても、本当なら
マイクロソフト公式ダウンロード センターから Microsoft .NET Framework 3.5 Service Pack 1 をダウンロード
辺りにWin8で使えるオフラインインストーラが用意されていれば、こんな面倒なことにはならないのですが…