2015-07-03 3 views
0

Я создаю пакет установки Windows с Transform, чтобы сделать его multi-instance. Мой файл mst обновляет ProductCode и GUID некоторых компонентов записей реестра. Это установка для каждой машины. Теперь я не могу удалить свой продукт, если:Удалить без источника mst

  1. Мой MST файл удаляется из исходного местоположения
  2. политика TransformsSecure устанавливается на 1

Программа установки пытается с поиском MST файла в исходном месте , не может этого сделать и не удается удалить. Что я могу сделать, чтобы мой продукт удалился в этих двух условиях?

Дополнительная информация. Я вижу, что мои файлы msi и mst кэшируются в папке «c: \ Windows \ Installer». Но каким-то образом установщик не пытается вывести mst из кеша. Также все работает хорошо, если политика TransformsSecure не установлена. В этом случае мой файл mst автоматически кэшируется в папке «c: \ Windows \ Installer {358e77a7-464b-4588-b538-a79fceb0ffa8}».

ответ

0

Возможно, вам понадобится разместить весь подробный журнал деинсталляции, и мне не ясно (извините), если вы не можете удалить из-за своего 1 И 2 ​​или из-за 1 ИЛИ 2. Таким образом, есть определенное количество догадок как это в вашей точной ситуации.

Однако, если mst был удален из кеша установщика, тогда Windows попытается найти его у исходного источника установки, как это было бы, если отсутствовал файл кэшированной MSI. Однако защищенные преобразования запрещают переход к исходному источнику установки (поскольку они могут быть извлечены только из безопасного кэшированного местоположения, а не из DVD, например), поэтому удаление завершится неудачно, если отсутствует кешированный. Так что это нормально - безопасные преобразования требуют доступа к mst в безопасном месте и нигде больше. И да, если преобразования не защищены, он может использовать источник установки.

Иногда системная учетная запись теряет доступ к местоположению кеша установщика и имеет тот же результат. Он не может найти mst в безопасном месте, но преобразования безопасны, поэтому он не может использовать исходный источник установки, поэтому операция завершается с ошибкой.

Таким образом, детали в журнале могут помочь. Получает ли (например) системную ошибку 5, пытающуюся получить mst? Или он говорит что-то еще о том, почему он не может его использовать? И есть ли попытка разрешить источник, которого он не делает, потому что преобразования безопасны?

+0

Извините, я не могу опубликовать журнал прямо сейчас, мой рабочий компьютер недоступен в эти выходные. Но вот подробности о том, что я делаю. Мне нужно, чтобы мой продукт удалялся, даже если мои msi и mst недоступны в исходном местоположении. Мне нужно поддерживать режим TransformsSecure, потому что он по умолчанию с сервера Server 2008. Также некоторые клиенты вынуждают это. У меня проблема с удалением, если оба условия True. Если один из них False, все в порядке. –

+0

Я устанавливаю с помощью следующей команды: msiexec -i "d: \ Temp \ MyProduct.msi" TRANSFORMS = "d: \ Temp \ MyProduct.mst" MSINEWINANCE = 1 Важно использовать полный путь к mst, иначе удалить пытается найти даже d: \ Temp \ MyProduct.msi. –

+0

Я проверю запись реестра MyProduct в списке установленных продуктов и посмотрю, какие имена были сгенерированы для кэширования MyProduct.msi и MyProduct.mst в c: \ WIndows \ Installer ". И эти кэшированные файлы действительно находятся в этой папке и полностью совпадают с исходными файлами. В разделе реестра Transforms указывается только один элемент: d: \ Temp \ MyProduct.mst со значением « .mst. Когда я проверяю журнал деинсталляции, я вижу, что использовался кешированный msi, но кэшированный mst никогда не упоминается. –