izPack создает деинсталлятор, который не работает в Windows «Программы и компоненты» - PullRequest
4 голосов
/ 14 сентября 2011

Я работаю над графическим установщиком для проекта java, использующего izPack 4.3.4, установка проходит хорошо, но когда я пытаюсь удалить его, щелкнув по его ссылке в окне «Программы и компоненты», появляется сообщение:

Error: Unable to access jarfile C:\Program Files (x86)\myproject\uninstaller\uninstaller.jar

Дело в том, что я решил поместить и переименовать деинсталлятор в корневой каталог установки моей программы, а не в каталог \ uninstaller dir.См. XML:

<info>
...
  <uninstaller name="uninstall.jar" write="yes" path="${INSTALL_PATH}" />
...
</info>

И, фактически, файл uninstall.jar создается в C: \ Program Files (x86) \ myproject \, и он работает, если дважды щелкнуть по нему или открыть меню «Пуск».,Я думаю, что izpacks записывает неправильные данные в реестр Windows, чтобы ссылаться на них в «Программы и компоненты» ... но я не знаю почему ...

1 Ответ

1 голос
/ 30 ноября 2012

Если вы устанавливаете с помощью IZPack в Windows, вы можете (должны) иметь RegistrySpec.xml. Этот парень пишет все записи реестра, которые вам нужны. Windows ищет значение реестра «UninstallString» в качестве файла для запуска, чтобы начать удаление, и вам, вероятно, потребуется перезаписать его. Например по моему:

<pack name="UninstallStuff">
<!-- Special "pack", if not defined an uninstall key will be generated automatically -->
<value name="UninstallString"
    keypath="SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$APP_NAME"
    root="HKLM"
    string="$INSTALL_PATH\uninstall\uninstaller.cmd"/>    
<pack name="UninstallStuff">
...