#install4j
#install4j
Вопрос:
В настоящее время это установщик только для Windows. У меня выбрано «Определить предыдущую установку». У меня также отключено «Оповещение об установке обновлений» на экране приветствия и условие в «Месте установки», чтобы не показывать диалоговое окно, если context.isUpdateInstallation() имеет значение true.
Но я все равно могу изменить каталог установки через файл ответов при автоматической установке.
В результате у меня есть двоичные файлы в двух каталогах, у меня есть только одна служба (созданная установщиком), которая указывает на самый последний каталог установки, и две записи для моего установщика в разделе «Программы и компоненты».
Желаемое поведение будет заключаться в том, что двоичные файлы будут перемещены в новый каталог, и только одна запись в «Программы и компоненты». Я мог бы жить с установщиком, игнорирующим новый каталог установки, и просто убедиться, что все файлы в каталоге установки есть.
Спасибо, Питер
Ответ №1:
Вы можете добавить действие «Запустить скрипт», которое проверяет, обновляете ли вы предыдущую установку или нет.
// Check all installations with the same application ID
// At most there will be one in this case
ApplicationRegistry.ApplicationInfo[] applicationInfos =
ApplicationRegistry.getApplicationInfoById(context.getApplicationId());
if (applicationInfos.length > 0) {
ApplicationRegistry.ApplicationInfo applicationInfo = applicationInfos[0];
if (applicationInfo.getInstallationDirectory().equals(context.getInstallationDirectory())) {
// In that case the previous installation directory is different than
// the current installation directory.
Util.showErrorMessage("The applicaton is already installed in "
applicationInfo.getInstallationDirectory()
" Update that installation or uninstall it first.");
// By returning "false", the action will fail and the installer will quit.
// Note that you have to set the "Failure strategy" property of your "Run script" action to
// "Quit on error", otherwise the installer will continue.
return false;
}
}
return true;
Комментарии:
1. Для моего установщика я изменил приведенный выше код «Run script» с помощью context.setInstallationDirectory() вместо остановки установки, чтобы гарантировать, что каталог установки не изменится.