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

219
26 ноября 2017, 11:49

Добрый день. Написал приложение-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");
Answer 1

Необходимо указать рабочую директорию приложения, проще всего это сделать в свойствах ярлыка, который будет запускать ваше приложение. В свойствах назначенного задания, также присутствует аналогичная настройка. Внутри кода программ,это можно сделать так

string exeDir =Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
Directory.SetCurrentDirectory(exeDir);
Answer 2

Путь папки приложения.

string path = Directory.GetCurrentDirectory();
string path = Application.StartupPath;
Answer 3

Вы не должны использовать относительные пути, если не хотите таких сюрпризов.

Дело в том, что относительный путь — это путь относительно текущего каталога, а не относительно положения программы на диске. (Нет, это не одно и то же.) Программа сама не контролирует стартовое значение текущего каталога, поэтому либо она должна в самом начале устанавливать его, либо просто всегда работать с полными путями.

Связанный вопрос: Как определяется каталог поиска файла?

О том, как получить каталог, в котором лежит приложение, здесь: Как задать относительный путь для создания файла в C#?

READ ALSO
Mассивы класса c шарп

Mассивы класса c шарп

Не могу справится с, на первый взгляд,простой задачей: В строке найти количество вхождений каждой буквыСоздал класс с двумя свойствами

249
Ошибка: SQL logic error near “insert”: syntax error"

Ошибка: SQL logic error near “insert”: syntax error"

Выдаёт ошибку: SQL logic error near "insert": syntax error" Вот код:

203
Имплементация Producer/Consumer pattern

Имплементация Producer/Consumer pattern

Паттерн producer/consumer достаточно часто встречается в многопоточном программированииЕго смысл состоит в том, что один или несколько потоков...

209
Заморозка одной оси вращения

Заморозка одной оси вращения

Интересует вопрос, как заморозить одну ось вращения, чтобы третья не меняласьНапример, если использовать две оси вращения (X и Y ), то объест...

170