我正在尝试卸载旧驱动程序并根据选中的复选框安装新驱动程序。卸载应该在安装新驱动程序之前发生。
现在的问题是,当我尝试卸载时,安装弹出窗口显示另一个进程正在运行,因此无法安装。
但我们也不应该使用睡眠时间
我正在尝试使用 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;