Самовосстановление MSI запущено для пользователя без прав администратора, когда Tabctl32 был установлен через модуль слияния
Одним из наших приложений является приложение VB6, для которого требуется Tabctl32.ocx.
Поэтому я добавил "tabctl32.msm" (который содержал его с версией 6.1.97.82) в Wix для каждой машины. Когда я запускал MSI для каждой машины, он установил, что OCX и приложение работали нормально, когда я, как администратор, вошел в систему и запустил приложение VB.
Однако, если кто-либо со стандартными привилегиями пользователя вошел в систему и запустил это приложение VB в первый раз, оно вызвало самовосстановление MSI. После того, как самовосстановление было завершено для этого пользователя, оно работало и больше не вызывало самовосстановление для этого пользователя. Это самовосстановление не происходило для пользователей с правами администратора.
Когда я исследовал MSI с Orca, в таблице "ModuleDependency" этот модуль tabctl32 имел зависимости от COMCAT msm и OLEAUT32 msm, мы также установили их вместе с модулями слияния.
Я не понимаю, почему самовосстановление происходит не для пользователей-администраторов, а для обычных пользователей?
Кто-нибудь может объяснить, что здесь происходит?
1 ответ
Это может не иметь ничего общего со стандартными пользователями или пользователями-администраторами или OCX - это могут быть просто разные пользователи.
Если в MSI есть какой-либо ресурс, которым владеет определенный пользователь (например, ориентированный на пользователя файл в личных папках или других файлах или запись в реестре в HKCU), то при первой установке все это будет установлено для устанавливающего пользователя.
Если другой пользователь войдет в систему и использует приложение (возможно, установленное на компьютере), то триггеры восстановления (например, с помощью ярлыка) заметят, что эти пользовательские элементы отсутствуют для данного конкретного пользователя, и установят их. Это должно произойти только один раз - если ремонт повторяется для одного и того же пользователя, то это нечто более серьезное.
В любом случае журнал событий приложения должен иметь запись журнала MsiInstaller с некоторыми данными о продукте и отсутствующем компоненте.
Это также может зависеть от приложения VB6 - оно старое, не имеет манифеста и поэтому может странным образом взаимодействовать с UAC. Например, если его поведение виртуализировано для использования местоположения \VirtualStore для системной папки, тогда, возможно, потребуется переустановить элемент управления вкладками в эту виртуализированную системную папку. Администраторы не будут иметь такую же проблему.