Вызов GetDiretivers в Champaction MSI бросает исключение безопасности только тогда, когда все пользователи
-
25-09-2019 - |
Вопрос
У меня есть пользовательские действия, которые я использую для развертывания некоторых файлов, которые сидят рядом с MSI в пакете обслуживания. Мои пользовательские действия передаются Path MSI через параметр OriginalDatabase, и я проверяю, есть ли папка рядом с ней. Ничего не сумасшедшего, но была боль в заднице, чтобы выяснить.
Установка одного или нескольких пользователей из файлов скопировано локально работает как чемпион. Установка одного пользователя при запуске Setup.exe из сетевой ресурсы работает нормально, однако, когда я устанавливаю всех пользователей из сетевой доли, я получаю исключение безопасности.
В вопросе об этом:
DirectoryInfo[] subdirectories = workingDirectoryInfo.GetDirectories("Foo");
Пользовательское действие проходит с SecurityAction.Demand
Поэтому у меня должен быть весь доступ, который мне нужен.
Любой вход любой любой может обеспечить, значительно ценится.
Спасибо, Кейси
Решение
Я верю, что когда вы устанавливаете для каждого пользователя, сторона сервера не нужно поднять, чтобы выполнить транзакцию, чтобы она оказывала окрашивание интерактивного пользователя и может получить доступ к файлам. Когда вы устанавливаете для всех пользователей, он должен поднять, так что теперь он в основном работает в качестве системы, которая будет использовать учетную запись машины для доступа к файлам и Boom, вы получаете ошибку разрешений.
Могу ли я спросить, почему эти файлы не в вашем установке? Там нет какого-то способа, чтобы вы могли их включить, чтобы вам не нужно иметь пользовательские действия? В противном случае вам, возможно, придется написать пользовательские действия, которые обнаруживают, что исходное использование является исходной долей сети и предотвращает установку, если пользователь не копирует все файлы вниз перед запуском.