Я пытаюсь понять/объяснить, почему происходит следующее:Понимание подсчета ссылок - окна Установщик
1) A.msi создает каталог \ путь \ к \ Foo
2) В. MSI находит \ путь \ к \ Foo с помощью реестра и добавляет несколько файлов в эту папку
3) если B.msi удаляется, дополнительные файлы, которые он добавляет удаляются
4), если в новой версии A.msi (основное обновление) до удаления B.msi, последующая деинсталляция B.msi оставят файлы, добавленные в \ path \ to \ foo. Записи msiexec/x выглядят следующим образом:
(SERVER) MSI (s) (60:08) [14:09:33:018]: Disallowing uninstallation of component:
{BIFF} since another client exists
(SERVER) MSI (s) (60:08) [14:09:33:019]: Disallowing uninstallation of component:
{BAM} since another client exists
(SERVER) MSI (s) (60:08) [14:09:33:019]: Disallowing uninstallation of component:
{HARVEY} since another client exists
(SERVER) MSI (s) (60:08) [14:09:33:019]: Disallowing uninstallation of component:
{ETC} since another client exists
Так, очевидно, подсчет ссылок, правильно? Но не так, как я понимаю. Я бы подумал, что, поскольку каждый файл индивидуально завернут компонентом, а составные элементы уникальны, подсчет ссылок между двумя MSI останется одинаково отдельным/уникальным.
Это тот случай, когда последний установщик выигрывает, когда дело доходит до владения каталогом, и что право собственности на каталог обязательно мешает подсчету/удалению ссылки на файл, завернутый подсчитываемыми компонентами? Кто-нибудь имеет ссылку/документацию, которую они могут поделиться со мной по этой теме?
Я обычно вижу это сообщение в пакетах от нашего клиентов, только если они имеют одинаковые идентификаторы GUID. Я предполагаю, что вы не скопировали файл проекта, используемый для сборки A.msi и повторно использовали для сборки B.msi? (так как это может привести к дублированию идентификаторов GUID компонента) –
Исправить. Гиды уникальны между компонентами A & B. Единственное, что разделяется, это каталог, который B задает как свойство, считывая его из записи реестра, которую пишет A. – NickHansen