在安装防护罩中安装先决条件之前检查系统状况

时间:2018-02-20 15:41:54

标签: installshield prerequisites

我们使用installshield作为installscript MSI项目类型创建的安装程序将安装SQL Express 2014 SP(x64)作为先决条件。但是,当系统有挂起的重新启动时,SQL Express安装将失败。我们希望安装程序在安装SQL Express之前检查系统是否有挂起的重新启动。目前,SQL express被定义为设置先决条件。

在SQL Express安装之前进行此检查的最佳方法是什么?

以下代码检查系统挂起重启条件,并按预期工作。

function CheckSystemReboot(hMSI)
 OBJECT objSysInfo;
 string szMsg;
 NUMBER nReturn;
begin
// TODO: Perform custom initialization steps, check requirements, etc.
set objSysInfo = GetObject("");
set objSysInfo = CreateObject("Microsoft.Update.SystemInfo");

if IsObject(objSysInfo) then
    if objSysInfo.RebootRequired then
        szMsg ="A system reboot is pending. Please reboot your system before 
                 installing this product"; 
        MessageBox ( szMsg , SEVERE );
        return ERROR_INSTALL_FAILURE;
    else //test only
        szMsg = "A system reboot is not needed"; 
        MessageBox ( szMsg , SEVERE );
        return ERROR_SUCCESS ;                  
    endif;
  endif;   
end;   

1 个答案:

答案 0 :(得分:1)

Installscript MSI项目类型充满了错误和问题 - 只是为了传达信息。特别是与我的经验中的升级方案有关。我永远不会使用这个项目类型。

除此之外,您不知道该脚本是否有效?我想你可以看看这些脚本正在做什么(他们检查的注册表位置):

如果这不是您要求的,可能会更新您的问题?