2

以前のバージョンを探して、先に進む前に削除する単純な Inno Setup インストーラーをまとめようとしています。次のコードを取得するまで、すべてが正常に機能しています。

  if Exec(UninstallString, '/SILENT', '', SW_SHOW, ewWaitUntilTerminated, ResultCode) then
  begin
    MsgBox('Previous version found and uninstalled successfully.', mbInformation, MB_OK);
  end
  else
  begin
    MsgBox('Please uninstall the previous version of this mod before continuing.', mbInformation, MB_OK);
    Result := FALSE;
  end;

これは非常に単純なコードですが、常に失敗します。の内容を確認しましたが、UninstallString正しい ( C:\Windows\unins000.exe) ですが、Execは「ディレクトリ名が無効です」というエラーで失敗します。

「UninstallString」の内容を正しく読み取れないようです。手動で入力すると(たとえばExec('C:\Windows\unins000.exe, ...)正常に機能するためです。

Exec文字列「UninstallString」を意図したとおりに処理するにはどうすればよいですか?

4

1 に答える 1

1

のレジストリ内の正確な文字列MsgBoxを特定するために既に を実行したかどうかはわかりませんが、レジストリでは通常の文字列は.UninstallString"C:\Windows\unins000.exe"

コマンドの余分な部分 に注意してください"

Execコマンドの周りで使用すると"、エラーである ResultCode 267 が返されinvalid directoryます。したがって、の前にそれらを削除する必要がありますExec

C:\Windows\unins000.exe手動で入力したとき、Exec便利なことにそれらを忘れてしまいました ;)

于 2013-10-07T17:22:13.383 に答える