Installshield Проблемы с удалением предыдущих версий

Я искал эту тему и нашел много сообщений, но ни один из них не описывает точную проблему, с которой я столкнулся. В нашем продукте (который я унаследовал от другого разработчика) был метод InstallScript (см. ниже), который, хотя и работал некоторое время, казалось, не вызывался ниоткуда, поэтому я добавил пользовательское действие для его вызова и поместил его после шага ISSetupFilesExtract как в пользовательском интерфейсе, так и в последовательности выполнения, и когда я запускаю его, он либо не работает, либо выдает ошибку. Итак, вот сценарий:

export prototype MainApplication_Installing();
function MainApplication_Installing()
begin
Disable(CANCELBUTTON);

SetStatusWindow(-1,"Uninstalling previous versions...");
//Uninstall 3.0.5
LaunchApp("MsiExec.exe","/X{ABA98465-AE8B-49BB-A445-46744EF236C0} /qn");    
//Uninstall 3.1.1
LaunchApp("MsiExec.exe","/X{954ADD40-DFEF-40DD-896A-FF29E5E43FB8} /qn");    

где /X — это код продукта каждой предыдущей версии, но, как я уже сказал, это не сработало, поэтому после неудачной попытки отладки сценария я попробовал другой маршрут, создав основное обновление, где я указал код обновления каждой предыдущей версии. версия в разделе: Подготовить установку к сценариям обновления-> Обновить установку установщика Windows-> Удалить 3.05–3.1.1, но это тоже не работает. Когда я устанавливаю продукт сейчас, он устанавливает его параллельно со старой версией (я вижу обе в Панели управления-> Удалить или изменить программу.

введите здесь описание изображения

Итак, как мне это сделать и почему ни один из них не работает?

Заранее спасибо!


person Ben_G    schedule 13.12.2017    source источник


Ответы (1)


Как только ваша установка/удаление находится в InstallExecuteSequence, вы не можете запустить другой процесс установки/удаления. Это ограничение установщика Windows, заключающееся в том, что одновременно может выполняться только один процесс MSI.

person Doc    schedule 14.12.2017