Установщик Windows не может получить доступ к каталогу - PullRequest
0 голосов
/ 26 декабря 2018

Я пытаюсь запустить некоторый код пользовательских действий для службы Windows (служба - это учетная запись LocalSystem) с установщиком службы Windows, и я получаю следующее сообщение об ошибке:

сообщение об ошибке при установке MSI:

Error 1001. An Exception occurred in the OnAfterInstall event handler
of System.ServiceProcess.ServiceInstaller. --> Access to the path XXX
is denied. 

этот код выдает ошибку:

protected override void OnAfterInstall(IDictionary savedState)
{
      string path = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
      System.IO.File.WriteAllText(path, "test");
}

В коде я пытаюсь получить доступ к каталогу службы .exe, чтобы я мог удалитьфайлы, созданные там

Моя цель - выполнить пользовательское действие для процесса установки / удаления.Я хочу удалить файлы, созданные после установки, такие как журналы и файл конфигурации.

Спасибо

Ответы [ 2 ]

0 голосов
/ 27 декабря 2018

Path.Combine : Как уже упоминалось другими, вам необходимо указать правильный полный путь (путь и имя файла).Может быть, использовать Path.Combine?Например:

 System.IO.File.WriteAllText(Path.Combine(path, "filename.txt"), "test");

Альтернативы : я не являюсь экспертом по .NET и не использую настраиваемые действия управляемого кода,Однако, если они основаны на DTF, я не уверен, есть ли у них какие-либо несоответствия в отношении текущего каталога или исполняемого каталога.Перечисление некоторых дальнейших ссылок:

0 голосов
/ 26 декабря 2018

Вы пытаетесь записать текст в каталог, а не в файл.Переменная «путь» возвращается из Path.GetDirectoryName (), который является каталогом.В следующей строке вы пытаетесь выполнить File.WriteAllText () для этой переменной, поэтому возникает ошибка.

...