Что если другой пользователь попытается запустить приложение? Тогда файлы не будут доступны - это проблема, с которой я боролся в течение многих месяцев ...
Лучшим решением, которое я нашел, было использование малоизвестной (и полностью недокументированной) функции Windows под названием Active Setup . См. http://www.etlengineering.com/installer/activesetup.txt для хорошего описания того, как это работает.
Это та же функция, которую IE использует для установки пользовательских настроек, чтобы суммировать вышеуказанную ссылку, в основном вы создаете раздел реестра, который Windows проверяет каждый раз, когда пользователь входит в систему. Если значение в ключе HKCU меньше найденный в HKLM, он запускает ваш определенный скрипт / программу / что угодно. Вы устанавливаете файлы для каждого пользователя в папку программных файлов, а затем используете функцию Active Setup, чтобы скопировать их в профиль пользователя при следующем входе в систему. Если вам нужно убедиться, что они есть там после завершения установки, запланируйте перезагрузку после завершения установки.
PS. если вы используете MSI вместо NSIS, вам не нужно повышать уровень при запуске программы установки, а Vista должна запускать повышение прав в начале последовательности «Выполнение» (если программа установки спроектирована правильно - мало кто из них), однако, поскольку вы используете NSIS тогда я предполагаю, что вам нужно будет запускать повышение прав при запуске программы установки.
РЕДАКТИРОВАТЬ: Ха-ха, моя точная проблема была также с шаблонами MS Word! Решение, которое я нашел для шаблонов Word, - это прочитать каталог установки из HKLM\SOFTWARE\Microsft\Windows\CurrentVersion\App Paths\Winword.exe
и установить в папку STARTUP
под путем, указанным в этом разделе реестра. Пользователю будет предложено разрешить выполнение макросов при первом запуске, даже если он имеет цифровую подпись, но он будет доступен для всех пользователей. Убедитесь, что шаблон также доступен только для чтения, чтобы избежать ошибок разрешений в дальнейшем.