1

NSIS を使用してアプリケーションのセットアップを作成していますが、既にインストールされているかどうかを確認する必要があります。

 Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
    OutFile "MyAppInstaller.exe"
    InstallDir "$PROGRAMFILES\MyApp"
    InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" ""
    ShowInstDetails show
    ShowUnInstDetails show

    Function .onInit
    ; Check to see if already installed
      ReadRegStr $R0 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME} ${PRODUCT_VERSION}" "UninstallString"
      IfFileExists $R0 +1 NotInstalled
      Messagebox MB_ICONQUESTION|MB_YESNO "MyApp 1.0 is already installed.Do you want to uninstall old version"   IDNO Quit
         Exec $R0
    Quit:
      Quit


    NotInstalled:
      !insertmacro MUI_LANGDLL_DISPLAY

    FunctionEnd ...

しかし、何も起こらず、常にインストールを続行し、インストールされた古いバージョンを検出しませんでした。私は NSIS スクリプトについてよく知らないので、助けていただければ幸いです。

4

1 に答える 1

2

私の唯一の推測は、間違ったレジストリキーをチェックしているか、返されたパスが引用符で囲まれているか、パラメータがあるため、ファイルが存在するかどうかのチェックが失敗したことです。

Messagebox mb_ok $R0行の前でパスを確認します。パスIfFileExistsが空の場合は、ProcessMonitorを試しください。いくつかの手がかりが得られる可能性があります...

于 2012-11-30T08:59:58.913 に答える