2

Inno Setup アンインストーラーに問題があります。インストールとアンインストールを追跡するために実行したいexeファイルがあります。exe は非常に単純で、サーバーにメッセージを送信します。

[Files]
Source: "Tracker\LocalSandboxInstallTracker.exe"; DestDir: "{app}/Tracker";
Source: "Tracker\LocalSandboxInstallTracker.exe.config"; DestDir: "{app}/Tracker";
Source: "Tracker\Tracker.Client.dll"; DestDir: "{app}/Tracker";

[Run]
Filename: "{app}\Tracker\LocalSandboxInstallTracker.exe"; Parameters: " {#MyAppVersion} install"; Flags: runhidden; StatusMsg: "Sending tracking data..."

[Code]
procedure InitializeUninstallProgressForm();
var
  ResultCode: Integer;
begin
  Exec ('{app}\Tracker\LocalSandboxInstallTracker.exe',' {#MyAppVersion} uninstall','',SW_SHOW, ewWaitUntilTerminated, ResultCode);
end;

インストール時の呼び出しはうまく機能しますが、アンインストール時には機能しません。Exec コマンドにブレークポイントを配置しましたが、実際にはそこを通過しますが、exe が呼び出されないようです。

4

2 に答える 2

5

スクリプト関数{app}に渡す前に、定数を展開する必要があります。定数の値を取得する必要があるときはいつでもExec使用してください。ExpandConstantスクリプトを次のように変更します。

Exec(ExpandConstant('{app}\Tracker\LocalSandboxInstallTracker.exe'), 
  '{#MyAppVersion} uninstall', '', SW_SHOW, 
  ewWaitUntilTerminated, ResultCode);

また、関数の結果と出力結果コードをチェックして、Exec関数が失敗したときに対応する必要があります。で取得するエラー コードはResultCodeSystem Error Codes参照と照合するかSysErrorMessage(ResultCode)、スクリプトからエラーの説明を取得するために使用できます。

于 2012-11-28T18:31:54.057 に答える
4

{app}Exec 呼び出しのように定数を使用する場合は、ExpandConstant 関数を呼び出す必要があります。

[Code]
procedure InitializeUninstallProgressForm();
var
  ResultCode: Integer;
begin
  Exec (ExpandConstant('{app}\Tracker\LocalSandboxInstallTracker.exe')
    ,' {#MyAppVersion} uninstall','',SW_SHOW, ewWaitUntilTerminated, ResultCode);
end;

そうしないと、exe を見つけることができません。

于 2012-11-28T18:34:50.887 に答える