Я копался в Google, пытаясь найти подходящий способ определения пути установки, выбранного пользователем из мастера установки.
По сути, я сталкиваюсь с проблемой, когда моя служба не может создавать файлы в своем собственном каталоге, потому что ей не хватает соответствующих разрешений. Я предполагаю, что правильный способ решить эту проблему - убедиться, что любой учетной записи, используемой службой, предоставлены соответствующие разрешения на доступ к файлам в ее папке.
Но прежде чем я смогу решить, как устанавливать разрешения через .Net, мне нужно знать папку установки. Я использую проект установки, который имеет класс Installer, который также содержит элемент управления ServiceInstaller
. Оба имеют свойство Context
, поэтому я проверял его на наличие параметров, доступных при возникновении события AfterInstall для каждого из соответствующих установщиков. Сначала я подумал, что увижу набор свойств TargetDir
, но это не так. Однако я вижу, что AssemblyPath
установлено и указывает на исполняемый файл соответствующей папки.
По сути, я просто хочу убедиться, что это подходящий метод, который я должен использовать:
private void ProjectInstaller_AfterInstall(object sender, InstallEventArgs e)
{
string InstallPath = System.IO.Path.GetDirectoryName(serviceInstaller1.Context.Parameters["AssemblyPath"]);;
}