如何使用 WPF Window 从任何计算机上的桌面文件夹启动应用程序

How To Use A WPF Window To Launch An Application From Desktop Folder On Any Machine

我一直在 Internet 上搜索这方面的某种教程,但 none 我已经把它说得很清楚了。 我在 Visual Studio 中创建了一个 WPF Window,它有两个按钮 按钮一用于启动 PDF 文件。 按钮二用于启动 .exe 应用程序,然后关闭 WPF window 现在我发现如果我使用:

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

然后它就可以工作了,但是,当我发布这个项目并且人们要在他们的机器上使用它时,这种方法自然不会工作,因为地址无疑对于安装它的每台机器都是不同的。 我的问题很简单: 我该怎么做才能在安装它的任何机器上启动 PDF 文件或 application.exe? 我看过的 Visual Studio 教程的 None 非常清楚地说明了这一点。

编辑:

我尝试了@bwing 的想法,但出现错误,所以我不确定我是否正确使用它??这是我在 public 空白处的代码:

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

编辑:

这种方法在我的一台机器上工作得很好,但是当我在我的 HP 笔记本电脑上尝试它时,它只想打开 Unity3d 应用程序。然而在两台机器上,文件夹目录完全相同,我可以毫无问题地手动打开每个 .exe 文件,但我的启动器应用程序只想在我的 HP 笔记本电脑上打开一个 .exe 文件。有谁知道为什么会发生这种情况?

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

如果文件在桌面上,您可以通过

获取桌面路径
var desktopPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);

如果文件与 WPF Window 应用程序位于同一文件夹中,您可以使用它来获取该文件夹

var exePath = AppDomain.CurrentDomain.BaseDirectory;

然后您只需附加文件名并像以前一样进行调用

var combinedPath = Path.Combine(desktopPath, "app.exe");
Process.Start(combinedPath