正在使用 inno setup 进行另一个安装/卸载

问题描述 投票:0回答:0

我正在尝试卸载旧驱动程序并根据选中的复选框安装新驱动程序。卸载应该在安装新驱动程序之前发生。

现在的问题是,当我尝试卸载时,安装弹出窗口显示另一个进程正在运行,因此无法安装。

但我们也不应该使用睡眠时间

我正在尝试使用 BeforeInstall 关键字在运行方法中卸载

Name: "LatestFeigIscDriver"; Description: "Latest driver"; Types: full; MinVersion: 10.0

[Files] 
Source: "D:\Drivers\LatestFeigIdUsb\*"; DestDir: "{app}\Drivers\LatestFeigIdUsb\"; Components: LatestFeigIscDriver; MinVersion: 10.0


[Run]
Filename: "{app}\Drivers\LatestFeigIdUsb\setup_feigidusb_v3.26.0_win10_build2020120901.exe"; Flags: skipifdoesntexist; BeforeInstall: MyBeforeInstallLatestFeigIdUsb; Parameters: ""; Description: "Installing Latest driver..."; StatusMsg: "Installing driver..."; Components: LatestFeigIscDriver; MinVersion: 10.0



procedure MyBeforeInstallLatestFeigIdUsb();
var
  sIdUnInstallString: String;
  Version: TWindowsVersion;
  iResultCode: integer;
  Results: boolean;
begin
  Results := False;
  GetWindowsVersionEx(Version);
  if (Version.Major >= 10) then
  begin
  sIdUnInstallString := GetFeigIdUninstallString();
    if sIdUnInstallString <> '' then
    begin
      MsgBox('Please wait while the installer checks for old drivers...', mbInformation, MB_OK);
      sIdUnInstallString := RemoveQuotes(sIdUnInstallString);
     
      if Exec(sIdUnInstallString, '/VERYSILENT /NORESTART /SUPPRESSMSGBOXES', '', SW_SHOW, ewWaitUntilTerminated, iResultCode) then
      begin
      end;

    end;
  end;
end;
function GetFeigIdUninstallString(): String;
var
  sUnInstPath: String;
  sUnInstallString: String;
begin
  if IsWin64 then
  begin
     sUnInstPath := ExpandConstant('SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\OBID USB Standard Driver v2.5.0.1');
  end 
  else 
  begin
     sUnInstPath := ExpandConstant('SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\OBID USB Standard Driver v2.5.0.1');
  end;
  
  sUnInstallString := '';
  if not RegQueryStringValue(HKLM, sUnInstPath, 'UninstallString', sUnInstallString) then
     RegQueryStringValue(HKCU, sUnInstPath, 'UninstallString', sUnInstallString);
  
  Result := sUnInstallString;
end;
windows installation windows-installer inno-setup pascalscript
© www.soinside.com 2019 - 2024. All rights reserved.