Inno Setup的信号灯没有GUI阻塞(Inno Setup Semaphore non GUI

2019-10-21 15:43发布

我有一个Inno Setup的脚本调用DLL。 该DLL启动一个线程这到底调用了Inno Setup的函数指针。 因为我不希望我的Inno脚本的逻辑改变多少,我想用一个信号量或类似的东西。

在这里最重要的部分是图形用户界面不应该被阻止。

在这里我的一小段代码

procedure InstallData();
var
    arrComponents           : TStringList;
    i, index, p             : Integer;
    countComp               : Integer;
begin
    countComp := ICountComponents();
    pbState.Max:= countComp;
    arrComponents := IGetComponentsToInstall(); 
    pbState.Max := countComp;

    for i := 0 to countComp-1 do
    begin
        // lock semaphore

        pbState.Position := i;
        p := Pos(' ', arrComponents[i]);
        if p > 0 then 
        begin
          //Unzip component
          //Call the DLL
        end
        else 
        begin
           //unzip something else
           //Call the DLL
        end 
    end
end;

procedure ProgressCallback(progress:Integer);
begin
    pbStateZip.Position:= progress; 
    //if progress = 100
    // unlock semaphore
    // 
end;

有没有信号灯或者是有一个相当于这个不挡住我的GUI?

文章来源: Inno Setup Semaphore non GUI Blocking