gpt4 book ai didi

windows - 执行上一版本的卸载程序导致系统重启后恢复安装程序

转载 作者:可可西里 更新时间:2023-11-01 11:44:05 27 4
gpt4 key购买 nike

我有一个相当标准的 Inno Setup 安装程序。卸载运行时,需要重新启动,它会删除服务并注销 DLL。我有一些代码可以检测旧版本的软件(感谢 stackoverflow)。如果检测到旧版本并且用户想要安装新版本:

  1. 调用卸载程序
  2. 软件已卸载
  3. 系统(正确)重启
  4. 系统启动,我重新登录

现在应该发生的事情(恕我直言)是安装程序应该从它停止的地方继续,即。将新版本安装到与旧版本相同的文件夹中。但它没有,什么也没有发生。我已经阅读了帮助文件,检查了开关(尽我所能)并询问了 Google 博士,但没有任何结果。

我的问题:是否可以这样做,即。重启后继续安装,如果是这样,如何?

这是我的(以及大部分 stackoverflow)代码,除了在系统重新启动时没有任何继续(如果您需要安装程序的任何其他部分,请告诉我)外,它可以正常工作:

function InitializeSetup(): Boolean;
var
oldVersion: String;
uninstaller: String;
ErrorCode: Integer;
begin

if RegKeyExists(HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{#MyAppID}_is1') then
begin
RegQueryStringValue(HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{#MyAppID}_is1', 'DisplayVersion', oldVersion);
if (CompareVersion(oldVersion, '{#MyAppVersion}') < 0) then
begin
if MsgBox('Version ' + oldVersion + ' of EMPSecure is already installed. Continue to use this old version?', mbConfirmation, MB_YESNO) = IDYES then
begin
Result := False;
end
else
begin
RegQueryStringValue(HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{#MyAppID}_is1', 'UninstallString', uninstaller);
ShellExec('runas', uninstaller, '/SILENT', '', SW_HIDE, ewWaitUntilTerminated, ErrorCode);
if (ErrorCode <> 0) then
begin
MsgBox( 'Failed to uninstall EMPSecure version ' + oldVersion + '. Please restart Windows and run setup again.', mbError, MB_OK );
Result := False;
end
else
begin
Result := True;
end;
end;
end
else
begin
MsgBox('Version ' + oldVersion + ' of EMPsecure is already installed. This installer will exit.', mbInformation, MB_OK);
Result := False;
end;
end
else
begin
Result := True;
end;
end;

最佳答案

当从安装程序调用的卸载程序重新启动系统时,安装程​​序将永远中止。

如果你想在重启后恢复安装程序,你必须自己处理。

例如,您可以将安装程序本身添加到 RunOnce:

RegWriteStringValue(
HKEY_CURRENT_USER, 'Software\Microsoft\Windows\CurrentVersion\RunOnce',
'ResumeMyInstaller', ExpandConstant('{srcexe}'));

关于windows - 执行上一版本的卸载程序导致系统重启后恢复安装程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50693397/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com