【问题标题】:Excute an application which works with versions.执行适用于版本的应用程序。
【发布时间】:2014-09-08 11:38:01
【问题描述】:

早安,

目前我正在编写一个简单的代码,我想使用下面的代码来启动一个新的应用程序:

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

我要启动的“APP”正在定期更新。每个版本都安装在 APPDATA 文件中。不幸的是,对于我使用 Visual Studio 发布的每个版本,都会为文件夹位置提供一个唯一的 ID,例如:

Local\Apps\2.0\YCAL8JOR.XMP\WLOTE7VA.1D9\cond..tion_6757f2505ca8bd82_0001.0000_fee986f0f10e782c

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

(我还是个编程新手,请原谅我的无知)

【问题讨论】:

  • 如果您使用 ClickOnce 发布您的应用程序,这可能是解决方案msdn.microsoft.com/en-GB/library/xctb6ae4.aspx
  • 如果应用程序运行在同一目录System.Reflection.Assembly.GetExecutingAssembly().Location
  • @PaulZahra 我正在使用 Visual Studio 2013 的发布向导,我不确定这是否是 ClickOnce 方法。 :)
  • 使用注册表项来跟踪您的安装路径。我会为您编写一些代码并作为答案提交,但我在手机上。
  • 感谢@Tim 的建议。我查了钥匙,发现有很多这样的钥匙。如果你能和我分享一些代码,那就太好了!

标签: c# winforms process publishing asp.net-4.5


【解决方案1】:

我认为你可以通过两种方式做到这一点

  1. 我们可以尝试对安装程序进行自定义操作,该操作实际上使用特定键将安装路径写入注册表 以及读取注册表以获取路径并执行它的代码。
  2. 另一种方法是从父目录获取文件(我的意思是直到目录你确定这将被安装)按创建日期排序并匹配你的 Exe 名称并获取最新的并开始进程.

如果用户可以选择安装路径,选项 #2 将不起作用。我建议使用选项#1

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-28
  • 2012-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多