C# 执行与版本一起工作的应用程序。

C# 执行与版本一起工作的应用程序。,c#,winforms,process,publishing,asp.net-4.5,C#,Winforms,Process,Publishing,Asp.net 4.5,你好 目前,我正在编写一个简单的代码,其中我希望使用以下代码启动一个新的应用程序: ProcessInfo.FileName = @"T:\APP.exe"; ProcessInfo.RedirectStandardError = true; ProcessInfo.RedirectStandardOutput = true; ProcessInfo.WindowStyle = ProcessWind

你好

目前,我正在编写一个简单的代码,其中我希望使用以下代码启动一个新的应用程序:

            ProcessInfo.FileName = @"T:\APP.exe";
            ProcessInfo.RedirectStandardError = true;
            ProcessInfo.RedirectStandardOutput = true;
            ProcessInfo.WindowStyle = ProcessWindowStyle.Maximized;
            ProcessInfo.CreateNoWindow = false;
            ProcessInfo.UseShellExecute = false;  

            Process proc = Process.Start(ProcessInfo);
我想启动的“应用程序”正在定期更新。每个版本都安装在APPDATA文件中。不幸的是,对于我使用Visual Studio发布的每个版本,文件夹位置都有一个唯一的id,例如:

本地\Apps\2.0\YCAL8JOR.XMP\WLOTE7VA.1D9\cond.\u 6757f2505ca8bd82\u 0001.0000\u fee986f0e782c

因此,我的“ProcessInfo.FileName”将始终不同。是否有某种方法可以让我动态访问我的应用程序,这样我就可以不断更新我的应用程序,而不必每次都更改此函数中的文件路径


(我还是个编程新手,我的无知让我大吃一惊)

我想你可以用两种方法来实现这一点

  • 我们可以尝试在安装程序上执行自定义操作,实际使用特定键将安装路径写入注册表 和您的代码来读取注册表以获取路径并执行它
  • 另一种方法是从父目录获取文件(我的意思是,直到您确定将安装此文件的目录),按创建日期和匹配您的Exe名称排序,并获取最新的文件并启动进程

  • 如果用户可以选择安装路径,则选项2将不起作用。如果您使用ClickOnce发布应用程序,我建议使用选项#1

    ,如果应用程序运行在同一目录下
    System.Reflection.Assembly.getExecutionGassembly().Location
    @PaulZahra我使用的是visual studio 2013的发布向导,我不确定这是否是ClickOnce方法。:)使用注册表项跟踪安装路径。我会为你写一些代码并作为答案提交,但我现在在手机上。谢谢你的建议@Tim。我查过钥匙了,我发现有很多钥匙。如果你能和我分享一些代码,那就太好了!我还不确定如何处理选项1,但我会尝试:)@Nieksa以下链接可能会让您了解如何实现这一点