У меня есть проект установки .NET, в который я добавил пользовательское действие установщика. В процессе установки пользователь должен указать путь (который часто является UNC-путем) для общего ресурса на своем файловом сервере. Я пытаюсь выполнить некоторую проверку перед тем, как убедиться, что каталог существует:
if (!Directory.Exists(serverDirectory)) {
throw new InstallException("Specified path does not exist or ...");
}
Довольно ванильно - и в консольном приложении код Directory.Exists () работает как положено. Однако в контексте MSI это не так. В частности, вызов Directory.Exists всегда завершается ошибкой при использовании сетевого ресурса. Документация для Directory.Exists указывает , почему :
Метод Exists не выполняет сетевую аутентификацию. Если вы запрашиваете существующий сетевой ресурс без предварительной аутентификации, метод Exists вернет false.
Поиски привели меня к другим аналогичным сценариям в ASP.NET, где олицетворение является решением. Это не применимо здесь, но иллюстрирует проблему.
Как я могу проверить наличие сетевого пути? Чтобы поставить на языке документации - как мне пройти предварительную аутентификацию перед звонком? Пользователь устанавливается как администратор, и просмотр этого пути в проводнике Windows работает успешно, так что это не права пользователя, а отсутствие проверки кодом.
Я создал ненужную проблему - я должен опустить это и выбросить исключение позже при попытке использовать сетевой ресурс ... это в основном тот же самый критический сбой, верно?