Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows installer 作为vdproj中的最后一步重新启动,如何添加它?_Windows Installer_Vdproj - Fatal编程技术网

Windows installer 作为vdproj中的最后一步重新启动,如何添加它?

Windows installer 作为vdproj中的最后一步重新启动,如何添加它?,windows-installer,vdproj,Windows Installer,Vdproj,如何将重新启动操作添加到vdproj 我需要一个文件,可以在安装结束时重新启动电脑。如果需要重新启动,Windows Installer应该自动检测到它。如果由于懒得手动启动服务而想重新启动,则需要找到其他方法(我不知道任何简单的方法)。只需添加值为“Force”的“reboot”属性,该属性将在安装完成后提示用户重新启动,或者在没有用户界面时自动重新启动 如果无法在vdjproj中执行此操作,则在构建安装程序后,只需使用Orca编辑MSI的属性表 如果要强制重新启动,可以将reboot=for

如何将重新启动操作添加到vdproj


我需要一个文件,可以在安装结束时重新启动电脑。

如果需要重新启动,Windows Installer应该自动检测到它。如果由于懒得手动启动服务而想重新启动,则需要找到其他方法(我不知道任何简单的方法)。

只需添加值为“Force”的“reboot”属性,该属性将在安装完成后提示用户重新启动,或者在没有用户界面时自动重新启动

如果无法在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

这是我基于的解决方案

要在每次生成安装程序时自动修改.msi以提示重新启动,请执行以下操作:

  • 使用下面列出的VB脚本,在.vdproj部署项目文件所在的文件夹中创建一个名为“AddRebootPrompt.vbs”的文件

  • 在Visual Studio解决方案资源管理器中找到部署项目,右键单击并转到“属性”

  • 在PostBuildEvent属性中,粘贴以下内容以在生成安装程序项目后运行脚本:

  • cscript“$(ProjectDir)AddRebootPrompt.vbs”“$(BuiltoputPath)”

    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
    
    Dim安装程序、数据库、视图、结果
    暗strPathMsi
    如果WScript.Arguments.Count为1,则
    Echo“用法:cscript AddRebootPrompt.vbs”
    WScript.Quit-1
    如果结束
    strPathMsi=WScript.Arguments(0)
    设置installer=CreateObject(“WindowsInstaller.installer”)
    Set database=installer.OpenDatabase(strPathMsi,1)
    Set view=database.OpenView(“插入属性(属性,值)值('REBOOT','Force')”)
    Echo“添加强制重新启动提示以安装序列。”
    查看。执行
    提交数据库
    WScript.0退出
    

    如果成功,您将在生成安装程序项目时在生成输出日志窗口中看到“添加强制重新启动提示以安装序列”。

    在我的情况下,Windows installer不会自动检测到它。谢谢。如何通过Visual Studio 2008将ForceReboot操作添加到vdproj?什么是Orca?Orca是Windows Installer SDK附带的工具之一。我不熟悉Visual Studio(我只处理MSI,不编写代码),因此无法帮助您。对不起,有没有简单的方法可以在Visual Studio后期生成事件中自动添加属性?(所以我需要一个命令行)