Страницы

Поиск по вопросам

пятница, 31 января 2020 г.

Папка создается не в нужном месте C#

#c_sharp


Добрый день. Написал приложение-1 на C#, которое создает папку. Основное приложение-2
качает его, и закидывает в другую папку внутри себя, что-то вроде "firstApp\secondApp\приложение-1.exe",
после чего приложение-2 запускает приложение-1, которое создает папку не в secondApp\firstApp\приложение-1-folder,
а в secondApp\приложение-1-folder. При этом, когда вручную запускать приложение-2,
оно работает как нужно и создает папку в secondApp\firstApp\приложение-1-folder. То
есть при запуске приложения-1 из вне, оно создает директорию не внутри себя, а в корне
каталога, из которого была запущена. Как решается данная проблема?

Код приложения-2, которое запускает приложение-1

ZipFile.ExtractToDirectory(DownloadName, DownloadName.Remove(DownloadName.Length - 4));
Process.Start(DownloadName.Remove(DownloadName.Length - 4) + "\\" + DownloadName.Replace(".zip",
".exe"), "-sd");


Код приложения-1, которое создает папку

Directory.CreateDirectory("data");

    


Ответы

Ответ 1



Необходимо указать рабочую директорию приложения, проще всего это сделать в свойствах ярлыка, который будет запускать ваше приложение. В свойствах назначенного задания, также присутствует аналогичная настройка. Внутри кода программ,это можно сделать так string exeDir =Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); Directory.SetCurrentDirectory(exeDir);

Ответ 2



Путь папки приложения. string path = Directory.GetCurrentDirectory(); string path = Application.StartupPath;

Ответ 3



Вы не должны использовать относительные пути, если не хотите таких сюрпризов. Дело в том, что относительный путь — это путь относительно текущего каталога, а не относительно положения программы на диске. (Нет, это не одно и то же.) Программа сама не контролирует стартовое значение текущего каталога, поэтому либо она должна в самом начале устанавливать его, либо просто всегда работать с полными путями. Связанный вопрос: Как определяется каталог поиска файла? О том, как получить каталог, в котором лежит приложение, здесь: Как задать относительный путь для создания файла в C#?

Комментариев нет:

Отправить комментарий