再起動アクションを vdproj に追加するにはどうすればよいですか?
インストールの最後に PC を再起動するMSIファイルが必要です。
これがsaschabeaumontの答えに基づく私の解決策です。
インストーラーをビルドするたびに再起動を要求するように .msi を自動的に変更するには:
以下に示す VB スクリプトを使用して、.vdproj 展開プロジェクト ファイルが配置されているフォルダーに「AddRebootPrompt.vbs」という名前のファイルを作成します。
Visual Studio ソリューション エクスプローラーで配置プロジェクトを見つけ、右クリックして [プロパティ] に移動します。
PostBuildEvent プロパティに次を貼り付けて、インストーラー プロジェクトのビルド後にスクリプトを実行します。
cscript "$(ProjectDir)AddRebootPrompt.vbs" "$(BuiltOuputPath)"
AddRebootPrompt.vbs コンテンツ:
Dim installer, database, view, result
Dim strPathMsi
If WScript.Arguments.Count <> 1 Then
WScript.Echo "Usage: cscript AddRebootPrompt.vbs <path to MSI>"
WScript.Quit -1
End If
strPathMsi = WScript.Arguments(0)
Set installer = CreateObject("WindowsInstaller.Installer")
Set database = installer.OpenDatabase (strPathMsi, 1)
Set view = database.OpenView ("INSERT INTO Property (Property, Value) VALUES ('REBOOT', 'Force')")
WScript.Echo "Adding forced reboot prompt to install sequence."
view.Execute
database.Commit
WScript.Quit 0
成功すると、「強制再起動プロンプトをインストール シーケンスに追加しています」と表示されます。インストーラー プロジェクトのビルド時にビルド出力ログ ウィンドウに表示されます。
「REBOOT」プロパティに値「Force」を追加するだけで、セットアップが完了したら再起動するようにユーザーに促すか、ユーザー インターフェイスがない場合は自動的に再起動します。
vdjproj でこれを行うことができない場合は、セットアップがビルドされたら、Orca を使用して MSI のプロパティ テーブルを編集します。
強制的に再起動したい場合は、REBOOT=Force および REBOOTPROMPT=Suppress を設定して、ユーザーにプロンプトが表示されないようにすることができます。
または、アクションを使用してForceReboot
、インストールの途中で再起動したりScheduleReboot
、インストールの完了後に再起動をスケジュールしたりできます。vdjproj で追加できない場合は、これらのアクションのいずれかを Orca を使用して追加できます。
次のVBSを使用して、このようなことを行うことができます
Dim installer, database, view, result
Set installer = CreateObject("WindowsInstaller.Installer")
Set database = installer.OpenDatabase ("setup.msi", 1)
Set view = database.OpenView ("INSERT INTO Property (Property, Value) VALUES ('REBOOT', 'Force')")
view.Execute
database.Commit
Set database = nothing
再起動が必要な場合は、Windows インストーラーが自動的に検出します。サービスを手動で開始するのが面倒で再起動したい場合は、別の方法を見つける必要があります (簡単な方法は知りません)。