2017-01-04 11 views
2

Одним из наших приложений является приложение VB6, для которого требуется Tabctl32.ocx.Самостоятельный ремонт MSI для пользователя, не являющегося администратором, когда Tabctl32 был установлен с помощью модуля слияния

Так что я добавил «tabctl32.msm» (который содержал его с версией 6.1.97.82) для Wix на основе машин. Когда я запускал этот MSI для каждой машины, он установил, что OCX и приложение отлично работали, когда я был зарегистрирован как администратор и запустил приложение VB.

Однако, если кто-либо со стандартными правами пользователя зарегистрировался и впервые запустил это приложение VB, он вызвал саморемонт MSI. Как только саморемонт завершен для этого пользователя, он работал и больше не запускал саморемонт для этого пользователя. Этот саморемонт не произошел для пользователей admin.

Когда я изучил MSI с Orca, в таблице «ModuleDependency», этот модуль tabctl32 имел зависимости с COMCAT msm и OLEAUT32 msm, мы также установили их вместе с модулями слияния.

Я не понимаю, почему саморемонт не происходит для пользователей-администраторов, а для стандартных пользователей?

Может ли кто-нибудь объяснить, что здесь происходит?

ответ

3

Это может быть не что-то общее со стандартными пользователями или пользователями администраторов или OCX - это может быть только разных пользователей.

Если в MSI есть какой-либо ресурс, принадлежащий определенному пользователю (например, ориентированный на пользователя файл в личных папках или других местах или запись реестра в HKCU), то первая установка будет устанавливать их все для установка пользователь.

Если другой пользователь входит в систему и использует приложение (установленное на машину, надеюсь), то восстановление триггеров (например, использование ярлыка) заметит, что эти пользовательские элементы отсутствуют для этого конкретного пользователя и будут их устанавливать. Это должно произойти только один раз - это ремонт повторяется для одного и того же пользователя, тогда это нечто более серьезное.

В любом случае журнал событий приложения должен иметь запись журнала MsiInstaller с некоторыми данными о продукте и отсутствующем компоненте.

Это также может зависеть от приложения VB6 - оно устарело, не имеет манифеста и поэтому может взаимодействовать с UAC странным образом. Например, если его поведение виртуализировано для использования местоположения \ VirtualStore для системной папки, возможно, потребуется переустановить элемент управления вкладкой в ​​эту виртуализованную системную папку. У пользователей Admin не было бы такой же проблемы.

+0

Вы очень близки. Фактически, средство просмотра событий имеет две записи: Обнаружение продукта ' {A958E33B-5EC8-45C7-B1E0-661D0D7AD318}', функция 'ThisFeature', компонент '{1CD44446-251F-40CC-B158-717060F8A3B6}' не удалась. Ресурс «HKEY_CURRENT_USER (64) \ Software \ Company \ InstalledMyAppShortcuts» не существует. Обнаружение продукта {A958E33B-5EC8-45C7-B1E0-661D0D7AD318} ", функция 'ThisFeature' не удалось во время запроса для компонента" {FC3E0B6A-F62B-11D1-B144-00C04F990B2B} – Petronius

+0

Но клавиша быстрого рег Безразлично существует для любого пользователя, поскольку он специфичен для HKCU. И «{FC3E0B6A-F62B-11D1-B144-00C04F990B2B}» является GUID для Tabctl32.ocx. Если я устанавливаю Tabctl32.ocx как свободный файл вместо модуля слияния, самовосстановление не происходит. Это означает, что я точно знаю, что ярлык не является виновником. – Petronius

+0

Не уверен, что это означает: «клавиша быстрого доступа не существует для какого-либо пользователя, поскольку она является специфичной для HKCU», поскольку установка на установку будет устанавливать ее для пользователя установки, но не для других пользователей.В вашем сообщении недостаточно информации о ключевых файлах/записях реестра или о том, какие компоненты находятся в этой функции, потому что восстанавливается вся содержащая функция, а не только компонент. – PhilDW

 Смежные вопросы

  • Нет связанных вопросов^_^