Как определить предыдущую версию при использовании стандартного патча
Я успешно создал стандартный патч, используя InstallShield 2011 Basic MSI. У меня возникли проблемы с обнаружением более ранней версии установленного приложения. Например, у меня есть приложение под названием XYZ с базовой версией 3.7.0.188, которое я хочу установить с версией 3.7.0.201. Я могу успешно применить этот патч к базе 3.7.0.188. Теперь, если я установлю более раннюю версию приложения XYZ (3.7.0.173) и попытаюсь применить мой патч, произойдет сбой. Я хочу быть в состоянии обнаружить это и отобразить диалоговое окно, что это не может быть сделано, или я все думаю неправильно? Какой правильный способ сделать это? Я чувствую, что InstallShield должен быть в состоянии сделать это по своей сути.
2 ответа
Обычно, когда вы пытаетесь применить исправление к версии, которая не соответствует его целям, установщик Windows должен выдать вам сообщение, похожее на "Исправление обновления не может быть установлено службой установщика Windows, поскольку может отсутствовать обновляемая программа или обновление патч может обновить другую версию программы..."Разве вы не получили это сообщение?
Насколько мне известно, это контролируется ОС, а не InstallShield.
Одна вещь, которую нужно изучить, - это если вы видите другое поведение, если вы используете небольшой патч обновления вместо небольшого патча обновления, который вы описали выше. Так как вы не изменили одну из первых трех частей ProductVersion, вы предоставляете небольшое обновление. Об этом гораздо сложнее рассуждать, так как установщик Windows обычно считает версии эквивалентными и не предпринимает никаких действий, чтобы вы не пошли в "неправильном" направлении.
См. Раздел " Исправления и обновления", а также ссылки на небольшие обновления и небольшие обновления.