AppDataFolder отображается в неправильную папку при установке обычным пользователем
Как часть моего проекта Installshield, мне нужно поместить некоторые файлы в папку данных приложения Roaming пользователя (C:\Users\<Username>\AppData\Roaming\MyApp\MyFile
). Для этого я создал компонент и установил его назначение [AppDataFolder]MyApp
,
Хотя это работает нормально, когда я работаю от имени администратора, когда я запускаю установщик от имени обычного пользователя (повышение привилегий во время установки с использованием учетной записи / пароля администратора), MyFile
копируется в роуминговую папку администратора (C:\Users\<AdminUsername>\AppData\Roaming\MyApp\MyFile
), а не пользователя.
Это можно обойти?
1 ответ
Установка файлов в профиль пользователя является проблематичным делом. Рассмотрим другие подходы, как описано здесь: Создайте папку и файл в профиле текущего пользователя из профиля администратора.
Этот связанный ответ несколько перегружен (он пытается обобщить все проблемы, которые могут возникнуть в результате развертывания профиля пользователя), но в основном вы можете попросить ваше приложение скопировать нужный файл в нужную папку профиля пользователя при запуске приложения для каждого приложения. пользователь из доступной только для чтения копии шаблона, установленной где-то в главном каталоге установки приложения (в папке%ProgramFiles%).
Использование приложения для копирования таких файлов в профиль пользователя устранит множество проблем развертывания, которые в противном случае могут возникнуть. Пожалуйста, прочитайте связанный ответ выше для деталей.
Что касается того, что технически происходит в вашем случае, я предполагаю, что вы установили путь к диску для каждого пользовательского компонента. Вам нужно установить путь реестра HKCU для таких компонентов, если вы хотите избежать этой ошибочной ссылки на папку администратора.
ОБНОВЛЕНИЕ: проверьте, если это объяснение лучше: http://forum.installsite.net/index.php?showtopic=21586. Установив путь HKCU для хост-компонента, вы не получите то жестко закодированное имя (ошибочное), которое отображается красными буквами. Проверьте другой ответ ниже в связанной ветке, если проблема все еще не ясна.
Если вы решили пойти по пути ключа HKCU, пожалуйста, прочитайте раздел 3: MSI Self-Repair
в связанном ответе вверху.