【问题标题】:Inno Setup uninstall progress bar change eventInno Setup 卸载进度条更改事件
【发布时间】:2016-05-04 11:59:48
【问题描述】:

在 Inno Setup 的 Uninstall 表单中是否有任何事件/功能,例如 CurInstallProgressChanged 用于进度条的 CurProgressMaxProgress 值?

【问题讨论】:

    标签: inno-setup


    【解决方案1】:

    对此没有本机支持。

    您可以做的是设置一个计时器并观察UninstallProgressForm.ProgressBar.Position 中的变化。

    代码可能是这样的:

    [Code]
    
    procedure TimerProc(h: LongWord; AMsg: LongWord; IdEvent: LongWord; dwTime: LongWord);
    begin
      Log(Format(
        'Uninstall progress: %d/%d',
        [UninstallProgressForm.ProgressBar.Position, UninstallProgressForm.ProgressBar.Max]));
    end;
    
    function SetTimer(hWnd: LongWord; nIDEvent, uElapse: LongWord;
      lpTimerFunc: LongWord): LongWord;
      external 'SetTimer@user32.dll stdcall';
    
    procedure InitializeUninstallProgressForm();
    begin
      SetTimer(0, 0, 100, CreateCallback(@TimerProc)); { every 100 ms }
    end;
    

    对于CreateCallback function,您需要 Inno Setup 6。

    如果您被 Inno Setup 5 卡住,您可以使用 InnoTools InnoCallback 库中的 WrapCallback 函数(代码需要 Inno Setup 5 的 Unicode 版本)。但是从卸载程序中使用外部 DLL 库很棘手,并且有其缺点。请参阅(您的)Load external DLL for uninstall process in Inno Setup。有关另一种解决方案(更好但实施起来更复杂),请参阅How keep uninstall files inside uninstaller?

    【讨论】:

      猜你喜欢
      • 2019-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-27
      • 2016-02-11
      • 2018-05-04
      • 1970-01-01
      • 2011-07-07
      相关资源
      最近更新 更多