Я искал Google, пытаясь найти подходящий способ определить путь установки, выбранный пользователем, из мастера установки.Проект установки Visual Studio: получить целевой каталог
В основном я столкнулся с проблемой, когда моя служба не может создавать файлы в своем собственном каталоге, поскольку ей не хватает соответствующих разрешений. Я предполагаю, что это правильный способ разрешить это, чтобы удостовериться, что в любой учетной записи, используемой службой, предоставляются соответствующие разрешения для файлов в ее папке.
Но прежде чем я могу даже решить, как установить разрешения через .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"]);;
}
Вы также должны добавить дополнительное пространство после обратной косой черты «\». В противном случае вы можете получить исключение FileNotFoundException при установке или удалении. См. [Здесь] (http://stackoverflow.com/questions/4516256/how-do-i-fix-setup-project-with-custom-action-file-not-found-exception/4522825#4522825) или [здесь ] (http://stackoverflow.com/questions/8491095/error-1001-using-custom-installer-with-visual-studio-2008). –
Где вы используете этот бит текста? Ваше объяснение мне не совсем понятно, извините. Как аргумент командной строки для проекта? Где-то в коде? Эта ссылка на MSDN тоже сломана. Спасибо, Microsoft! :-) –
О, я вижу сейчас. Я нашел ответ в другом сообщении: «В вашем проекте развертывания добавьте пользовательское действие для установки и фиксации. Для свойства CustomActionData для пользовательского действия Установить введите/Targetdir =" [TARGETDIR] \ "" –