如何将重启动作添加到vdproj?
我需要一个MSI文件,在安装结束时重启PC。
答案 0 :(得分:3)
只需添加“REBOOT”属性,其值为“Force”,这将提示用户在安装完成后重新启动,或者在没有用户界面时自动重启。
如果你不能在vdjproj中执行此操作,那么只需在构建设置后使用Orca编辑MSI的Property表。
如果要强制重启,可以设置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
答案 1 :(得分:3)
以下是我的解决方案,基于saschabeaumont的answer。
每次构建安装程序时,要自动修改.msi以提示重新启动:
在.vdproj部署项目文件所在的文件夹中创建名为“AddRebootPrompt.vbs”的文件,下面列出了VB脚本。
在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
如果成功,您将看到“添加强制重启提示以安装序列”。在构建安装程序项目时,在Build Output日志窗口中。
答案 2 :(得分:0)
如果需要重新启动,Windows Installer应自动检测它。如果你想重新启动,因为你懒得手动启动服务,你需要找到一些其他方式(我不知道任何简单的方法)。