Как использовать окно WPF для запуска приложения из папки рабочего стола на любом компьютере - PullRequest
0 голосов
/ 05 ноября 2018

Я продолжаю искать в Интернете какое-то учебное пособие по этому вопросу, но ни один из моих источников не дает понять это. Я создал окно WPF в Visual Studio с двумя кнопками Кнопка One Должна использоваться для запуска PDF-файла. Кнопка 2 должна использоваться для запуска приложения .exe, а затем закрыть окно WPF Теперь я обнаружил, что если я использую:

System.Diagnostics.Process.Start("C:/Users/mdkgr/Desktop/FolderName/app.exe")

Тогда это работает, однако, естественно, когда я публикую этот проект, и люди будут использовать его на своей машине, этот метод не будет работать, потому что адрес, несомненно, будет отличаться для каждой машины, на которой он установлен. Мой вопрос просто: Как мне сделать так, чтобы он запускал файл PDF или application.exe на любом компьютере, на котором он установлен? Ни один из учебников по Visual Studio, которые я видел, не дает такого четкого представления.

Edit:

Я попробовал идею @bwing, но у меня появляется ошибка, поэтому я не уверен, правильно ли я ее использую ?? Вот мой код в общественных пустотах:

`public static void LaunchKOS()
        {
            var desktopPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
            // Launch Voice Server
            //Process.Start("C:/Users/mdkgr/Desktop/Knight O S Beta01_Data/voice-recognition-server-pc/VoiceServer/bin/Release/KittVoiceServer");

            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
            Process.Start("C:/Users/mdkgr/Desktop/Knight O S Beta01");
            // Close This Window
            Environment.Exit(0);
        }
        public static void LaunchPDF()
        {
            Process.Start("C:/Users/mdkgr/Desktop/Knight O S Beta01_Data/Knight O.S. Features.pdf");
        }`

EDIT:

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

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);
        }

1 Ответ

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

Если файлы находятся на рабочем столе, вы можете получить путь к рабочему столу с помощью

var desktopPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);

Если файлы находятся в той же папке, что и приложение Windows WPF, вы можете использовать эту папку для получения этой папки

var exePath = AppDomain.CurrentDomain.BaseDirectory;

Затем вы просто добавляете имя файла и делаете вызов, как вы делали это раньше

var combinedPath = Path.Combine(desktopPath, "app.exe");
Process.Start(combinedPath
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...