Пытаюсь удалить установленный КОМПАС 3D V9SP1 Demo: 1. Удаление приложений Wine (при настройке версии Windows 2000) 2. запуском setup.exe дистрибутива и выбором опции Удалить Вся файловая структура КОМПАС остается на месте, КОМПАС запускается.
Проверить на новой сборке и v10
Подтверждаю на новой сборке. Запускается мастер. Якобы что-то делает, но ничего не происходит. wine-1.0.9-alt23 wine-etersoft-sql-1.0.9-alt7 libwine-1.0.9-alt23 libwine-gl-1.0.9-alt23
Судя по логу при удалении, процесс удаления ничем не отличается от восстановления/установки. Могу даже предположить, что если удалить какой-то файл, то при удалении Компаса он будет восстановлен :) Вообще в msi.dll сейчас довольно плохо обстоят дела с удалением. Думаю эта бага будет решена не скоро
Очень много раз открывается "/home/username/.wine/dosdevices/c:/" и заканчиваются файловые дескрипторы
> Очень много раз открывается > "/home/username/.wine/dosdevices/c:/" и заканчиваются > файловые дескрипторы Проблема оказалась регрессом, вызванным воркэраундом для работы блокировок на NFS (ошибка #4046). Патч: server: Do not close file descriptors immediately only for regular files. Теперь удаление завершается успешно, но ничего не удаляётся (или, может быть, не всё).
Кстати, достаточно много файлов таки удаляется. Количество файлов в директории Компаса до удаления: $ find KOMPAS-3D\ V10 -type f | wc -l 2135 После удаления: $ find KOMPAS-3D\ V10 -type f | wc -l 460 Попробовал удалять с помощью wine msiexec -x KOMPAS-3D_V10.msi. Почти всё удаляется: $ find KOMPAS-3D\ V10 -type f | wc -l 38
У файлов, которые не удаляются с помощью msiexec -x, установлены права вида -r--r--r--. Если перед удалением файлов убирать с них атрибут FILE_ATTRIBUTE_READONLY, то с помощью msiexec -x удаляются все файлы. Директории остаются на месте.
Действие "RemoveFolders" не реализовано.
Как я понял из документации, действие RemoveFolders нужно только для удаления пустых директорий, создаваемых CreateFolders. Директории, создаваемые для компонентов, должны удаляться и без этого действия. Сделал тестовый msi-пакет, который устанавливает файл test.txt в директорию Test. В Windows директория при деинсталляции удаляется, а в WINE нет.
Сделал, чтобы при удалении файлов удалялись директории, которые становятся пустыми. При этом могут удалиться директории из таблицы CreateFolder, которые не должны быть удалены, но они потом создадутся заново при выполнении действия CreateFolders. Действие CreateFolders в WINE выполнялось всегда, а не только при удалении каких-то компонентов. Сделал, чтобы оно выполнялось только в случае, если никакие компоненты не устанавливаются. Реализовал действие RemoveFolders. Правда, реализацию нельзя считать полностью корректной. Также, как и в случае CreateFolders, не выполняется покомпонентная проверка директорий: либо удаляются все директории (в случае, когда ни один компонент не устанавливается), либо ничего не удаляется. При деинсталляции Компас с помощью msiexec -x директории удаляются практически полностью. Остаётся только c:\Program Files\ASCON
При удалении через значок в "Панели управления Wine" вызывается ControlEvent_Remove. Эта функция устанавливает INSTALLSTATE_ABSENT для всех фич и вызывает ACTION_UpdateComponentStates. Последняя в качестве второго аргумента ожидает имя фичи, но получает "ALL", не находит фичи с таким именем и не устанавливает действия, которые надо произвести с компонентами.
Если в ControlEvent_Remove вызывать ACTION_UpdateComponentStates для каждой фичи, а не для "ALL", то удаляется заметно больше файлов, но всё же не все.
После описанного выше изменения при полной установке Компаса стало ставиться больше файлов, чем до этого: $ find KOMPAS-3D\ V10 -type f | wc -l 4292 И не все из них удаляются даже с помощью msiexec -x
Добавил сброс настроек перед их установкой в MSI_SetFeatureStates. Сделал установку соответствующих properties при обработке некоторых control events. Теперь после деинсталляции остаётся только пустая директория ASCON.
Откатил патч: commit 715f1dde9d0fe621cc1e3018841a1215cd799306 Author: Alexander Morozov <amorozov@etersoft.ru> Date: Fri Aug 14 16:21:45 2009 +0400 msi: Implement ACTION_RemoveFolders (eterbug #953). В свободном wine появилась другая реализация этой функции. Требуется проверить не проявляется ли бага. Речь идёт только об eterhack. в релизе 1.0.12 всё по-старому.
Переделал патч: commit c3f1f804ec4c9ce23aa52a0a485c04ec374a54c7 Author: Alexander Morozov <amorozov@etersoft.ru> Date: Fri Aug 14 16:21:44 2009 +0400 msi: Remove empty directories after removing files (eterbug #953). Теперь вместо: if (!ACTION_VerifyComponentForAction( comp, INSTALLSTATE_ABSENT )) Надо выполнять: if (comp->ActionRequest != INSTALLSTATE_LOCAL)
В eterhack пришлось откатить 2 патча по этой баге: commit cfadf40968cb492ac906920ecf996df7856ea466 Author: Alexander Morozov <amorozov@etersoft.ru> Date: Fri Aug 14 16:21:46 2009 +0400 msi: Do not call ACTION_UpdateComponentStates with "ALL" as a second argument (eterbug #953). commit 30070a72ed3d1129b3e216db7b6b737d119da323 Author: Alexander Morozov <amorozov@etersoft.ru> Date: Wed Oct 20 15:12:23 2010 +0400 msi: Set properties in some control events handlers (eterbug #953). Conflicts: dlls/msi/events.c
Откладываю до работ над 2.0.
Откатил патч: commit 3c757b39b968130ee535a5a4b6d6fac975281964 Author: Alexander Morozov <amorozov@etersoft.ru> Date: Wed Mar 10 14:39:26 2010 +0300 msi: Remove read-only files (eterbug #953). В оригинальном wine перед удалением выставляются атрибуты без всякой проверки. Можно попробовать отправить наш патч в winehq, или забыть про него, т.к сейчас всё должно работать.
Попыталась проверить на машине kompas. Запускаю setup.exe, выбираю удалить - в окошке появляется надпись о наличии свободного места и программа зависает намертво.Создана бага 7343
А нет, дождалась.Несколько минут окно программы не подавало признаков работы...висело,не реагировало на клики, но прошло несколько минут, и появилось сообщение - программа удалена!Действительно в каталоге установки компаса стало пусто.Пока закрываю.
Отправил в рассылку патч, откатывающий "msi: Remove empty directories after removing files (eterbug #953) (new version).", так как: 1) проблему с удалением пустых директорий он сейчас не решает (или решает не полностью). Проверял на текущем eterhack (d69d9bb8ca06c70ed44a449ef6050513eb540d14) и дистрибутиве из /var/ftp/pvt/Windows/CAD - 3D/Kompas/DVD_KOMPAS-3D_V10/KOMPAS-3D_V10/KOMPAS-3D; 2) в текущем виде он приводит к неудачному завершению установки КриптоПро CSP 3.6. Можно, конечно, его подправить, чтобы он этой проблемы не вызывал, но так как толку от него всё равно нет, то лучше откатить.
Нужно проверить на той версии КОМПАС, которую проверяли на установку. Описать воспроизведение проблемы, если она выявится, и передать на исправление.
$ swine 2.1 bugs/9107 Удалил компас через $ wine uninstaller Удалял сначала конфигурации, потом сам компас. запускались мастера установки от компас. Компас удалился но осталось несколько папок и файлов, но это уже мелочи. сам компас удалился
Для тех, кто не пользуется багзиллой или не умеет пользоваться групповым редактированием при поиске, закрываем задачи, которые они должны были принять.