代码之家  ›  专栏  ›  技术社区  ›  Alessandro Jacopson

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

  •  2
  • Alessandro Jacopson  · 技术社区  · 16 年前

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

    我需要一个 MSI 安装结束后重新启动电脑的文件。

    3 回复  |  直到 11 年前
        1
  •  3
  •   saschabeaumont    15 年前

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

    如果无法在vdjproj中执行此操作,则只需在构建安装程序后使用Orca编辑MSI的属性表即可。

    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
    
        2
  •  3
  •   Community Mofi    7 年前

    这是我基于 saschabeaumont answer .

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

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

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

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

    cscript "$(ProjectDir)AddRebootPrompt.vbs" "$(BuiltOuputPath)"

    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
    

    如果成功,您将在生成安装程序项目时在生成输出日志窗口中看到“Adding forced reboot prompt to install sequence.”。

        3
  •  0
  •   leppie    16 年前

    如果需要重新启动,Windows Installer应该会自动检测到。如果你想重新启动,因为你太懒,无法手动启动服务,你将需要找到一些其他的方法(我不知道任何简单的方法)。

    推荐文章