Столкнулся со странной проблемой...
Ситуация в следующем: Есть папка с игрой, в ней 2 папки (Папка1 и Папка2) и приложение Updater.exe. В папке 2 лежит лаунчер (прога с графической оболочкой и кнопкой запуска игры), перемещать лаунчер нельзя, ибо если лаунчер запустить из другой папки, то игра не запустится и будет орать на конфиги.
Суть такова - лаунчер проверяет обновление , и если оно есть, то запускает Updater.exe из папки выше, который скачивает обновление вместо того, чтобы распаковать его "в себя" (в место где он находится) , он распаковывает файлы в папку 2 (с лаунчером), ибо процесс лаунчера вызвал апдейтер (Хотя, если запускать просто сам файл апдейтера, он обновляет все правильно, НО, потом, когда запускает лаунчер - При нажатии кнопки играть игра ругается на недостающие конфиги.. )
Почему процессы себя так ведут и как это можно исправить?
Метод проверки обновления и запуска апдейтера в лаунчере
void CheckUpdate()
{
string updVers = GetSettingValue("update_version");
string curVers = _xmlhelper.GetSettingValue("update_version");
if (updVers != curVers){
Process.Start(AppDomain.CurrentDomain.BaseDirectory + @"..\Updater.exe");
Application.Current.Shutdown();
}
}
Метод обновления в апдейтере и запуска лаунчера после
void Load()
{
downloader.LocalDirectory = workPath;
downloader.Files.Clear();
string getUpd = _web.DownloadString(_xmlhelper.GetSettingValue("update_url"));
string updVers = GetSettingValue("update_version");
string curVers = _xmlhelper.GetSettingValue("update_version");
if (updVers != curVers)
{
downloader.Files.Add(new WowSuiteUpdater.FileInfo(_xmlhelper.GetSettingValue("url") + _xmlhelper.GetSettingValue("file_zip")));
downloader.Start();
}
else {
pBarTotalProgress.Visibility = Visibility.Hidden;
Process.Start(AppDomain.CurrentDomain.BaseDirectory + "tes3mp\\Launcher.exe");
Application.Current.Shutdown();
}
}
ProcessStartInfo startInfo =
new ProcessStartInfo(AppDomain.CurrentDomain.BaseDirectory + "tes3mp\\Launcher.exe");
startInfo.WorkingDirectory = AppDomain.CurrentDomain.BaseDirectory + "tes3mp";
Process.Start(startInfo);
Если для программы важно, какая папка текущая при запуске, то Вам надо взять за правило запускать Ваши программы с явным указанием рабочей директории. Или писать код так, чтобы он читал конфигурационные файлы, не полагаясь на текущую директорию, а вычисляя путь к этим файлам из полного пути к EXE-файлу.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Есть большая база MS ACCESS у которой создатель решил поставить во всех таблицах тип поля 'ID' как числовой, изменить нельзя тк
В ходе разработки игры столкнулся с задачей реализации не то чтобы компьютера, а внутриигровой операционной системыЭто не главная задача...
Перевожу код из c++ cli в c# и столкнулся с проблемойЧто означает данный фрагмент когда