Почему WPF Aplication не запускает оба .exe-приложения? - PullRequest
0 голосов
/ 08 ноября 2018

Я сделал очень простое приложение WPF, которое должно иметь несколько вариантов: Вариант 1 - запустить файл PDF Вариант 2 - запустить пару исполняемых файлов, необходимых для запуска моего программного обеспечения.

Проблема в том, что на разработанной мной машине он прекрасно открывает оба .exe-файла, но странно, что, когда я пытаюсь это сделать на своем ноутбуке HP, он хочет открыть только файл unity3d exe, а не exe-файл голосового сервера.

Кто-нибудь знает, почему это так, это сводит меня с ума, пытаясь понять это. вот как у меня при вызове кнопки кодируется в C #

public static void LaunchKOS()
{
    var desktopPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
    var desktopPathkos = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
    // Launch Voice Server
    var combinedPath = Path.Combine(desktopPath, "Knight O S Beta01_Data/voice-recognition-server-pc/VoiceServer/bin/Release/KittVoiceServer");
    Process.Start(combinedPath);
    // Launch Knight O.S. Unity Settings Window
    var combinedPathkos = Path.Combine(desktopPathkos, "Knight O S Beta01");
    Process.Start(combinedPathkos);


    // Close This Window
    Environment.Exit(0);
}

EDIT:

На случай, если по какой-то причине ему не нравится делать оба .exe-файла с одной кнопки, я даже попытался просто запустить Voiceserver.exe с помощью вызова одной кнопки, и я все равно получаю тот же результат, что и при его запуске. на компьютере, на котором я разработал приложение, но не на каком-либо другом компьютере, несмотря на тот факт, что папки с файлами одинаковы ??

Должна быть логическая причина, почему это не работает ??

Кто-нибудь?!?

РЕДАКТИРОВАТЬ: более одного способа кожи кошки

Ну, возможно, это не самый элегантный способ решения проблемы, но мне удалось придумать обходной путь. Я создал ярлык VoiceServer.exe, а затем в своем коде кнопки выполнил ярлык, и теперь он откроет оба файла .exe.

Это глупо, что мне даже нужно было это делать, но это то, что я в итоге сделал. : /

1 Ответ

0 голосов
/ 08 ноября 2018

Разделителем папок для локальных файловых путей является "\", а не "/".

Path.Combine () определяется с параметром params, поэтому, чтобы избежать проблем с \ трактовкой как escape-символа, лучше просто передать каждое имя папки в виде отдельной строки.

var combinedPath = Path.Combine(desktopPath, "Knight O S Beta01_Data", "voice-recognition-server-pc", "VoiceServer", "bin", "Release", "KittVoiceServer");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...