Check parameter function in UninstallRun does not work correctly

雨燕双飞 提交于 2020-01-02 14:07:53

问题


I would like to get parameter from [Code]section in [UninstallRun]section. I got "not found" in Debug Output when installing. I didn't call CheckGetFile() when installing...and it didn't call GetFilePath() and CheckGetFile() when Uninstalling..WHY?
Here is my script

[Code]
Var
  Check: Boolean;

function GetFilePath(Default: String): String;
begin
  log('GetFilePath()');
  Check := false;
  Result := '';
  { do something }
  if (Found) then
  begin
    Check := true;
    Result := TargetPath;
  end;
end;

function CheckGetFile: boolean;
begin
  if (Check) then
    begin
      log('Found File');
      Result := true;
    end;
  if (not Check) then
    begin
      log('not found');
      Result := false;
    end;
end;

[UninstallRun]
Filename: "{app}\MyApp.exe"; Parameters: "{code:GetFilePath}"; Check: CheckGetFile();

update

[Code]
Var
  TargetPath: String;

function GetFilePath(): Boolean;
begin
  Result := false;
  { do something }
  if (Found) then
  begin
    TargetPath := 'C:\Windows\xxx';
    Result := true;
  end;
end;

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
var
  ResultCode : Integer;    
begin
  if CurUninstallStep = usUninstall then
  begin
    if (GetFilePath) then
    begin
      Exec(ExpandConstant('{app}\MyApp.exe'), '/q /u' + TargetPath, '',
           SW_SHOW, ewWaitUntilTerminated, ResultCode);  
    end;
  end;
end;

回答1:


The Check parameter is evaluated in install time. You cannot use it to check if the file exists on uninstall time.

You have to use [Code] for this:

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
var
  ResultCode : Integer;    
begin
  if CurUninstallStep = usUninstall then
  begin
    if Check then
    begin
      Exec(ExpandConstant('{app}\MyApp.exe'), '', '',
           SW_SHOW, ewWaitUntilTerminated, ResultCode);  
    end;
  end;
end;


来源:https://stackoverflow.com/questions/55017688/check-parameter-function-in-uninstallrun-does-not-work-correctly

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!