При опит за премахване на нашето приложение в Add/Remove Programs се появява следната грешка и приложението не успява да се деинсталира:
Грешка
„mFileBagIDE.dll“ не е валидно кратко име на файл.
Любопитното е, че получавате тази грешка само ако оригиналното инсталационно DVD не е в устройството. Ако DVD е в устройството, деинсталирането работи перфектно.
Ето истинската удивителна: не хванахме този бъг, докато нашето приложение вече не беше широко разпространено и ситуациите на нашите клиенти са такива, че вероятно много от тях вече нямат оригиналния си DVD. Това означава, че инсталаторът на следващата версия (извършващ основно надграждане на инсталатора на Windows) ще се провали, защото не може първо да премахне предишната версия.
Та въпросът ми е двоен:
- Какво направихме, за да създадем този проблем, за да можем да го избегнем в бъдещи версии?
- Има ли начин да кажем на следващия ни инсталатор на Windows да игнорира тази грешка и да премахне предишната версия?
Нашият текущ инсталатор (този, който създава проблеми) е генериран с помощта на InstallAware. Вероятно ще преминем към WiX. Но решенията във всяка платформа (InstallAware, WiX, необработени MSI таблици) се оценяват!
АКТУАЛИЗАЦИЯ: Имам следния ред в таблиците InstallExecuteSequence
и InstallUISequence
в моя MSI, което може да е много подходящо, но нямам представа какво представлява свойството SRCDIREX или къде се задава.
| Action | Condition |
|---------------|--------------|
| ResolveSource | NOT SRCDIREX |