如何 运行 Azure 应用服务中的 .EXE

How to run a .EXE in an Azure App Service

我有一个 MVC .NET 应用程序,我想 运行 服务器上的一些 .exes。 exe 是 jarsigner.exe 和 zipalign.exe,用于修改和重新签署 android APK。我想从控制器 运行 它们。

它在本地工作,使用进程启动应用程序,但我作弊并使用硬编码路径指向 .exe 和包含 exe 使用的内容的文件夹。

我在 visual studio 中将 .exes 添加到我的项目的顶层,并添加了一个文件夹,其中包含 .exes 要处理的文件。

我正在努力研究如何获得 exe 和文件文件夹的路径。一旦我有了它,我就可以调用流程(我怀疑我可能会遇到权限问题,但一次一步......)。

var processInfo = new ProcessStartInfo(@"C:\jarsigner.exe", @"..arguments"){
 CreateNoWindow = true, UseShellExecute = false
};

I'm struggling to workout how I get the path to the exes, and to the folder of files.

如果你的文件在项目的顶层。我们可以通过Server.MapPath(@"~\Jar\TextFile1.txt")找到路径。 对于 jarsigner.exe。它位于 java JDK 的 bin 文件夹中。所以我们可以使用环境变量。

这是获取 jarsigner.exe 和 运行 结果路径的示例代码。

//string path = Server.MapPath(@"~\Jar\TextFile1.txt");    //get file path on the top-level of project(eg. ~\folder\xxx)
        string JavaPath = Environment.GetEnvironmentVariable("JAVA_HOME", EnvironmentVariableTarget.Machine); 
        if(string.IsNullOrEmpty(JavaPath)){
         JavaPath = Environment.GetEnvironmentVariable("JAVA_HOME", EnvironmentVariableTarget.User);
        }
        string path = JavaPath + @"\bin\jarsigner.exe";

        var processInfo = new ProcessStartInfo()
        {
            FileName = path,
            CreateNoWindow = true,
            UseShellExecute = false,
            WindowStyle = ProcessWindowStyle.Hidden
        };

        Process proc = Process.Start(processInfo);
        proc.WaitForExit();
        if (proc.ExitCode == 0)
            ViewBag.Message = path + " exec success.";
        else
            ViewBag.Message = path + " exec fail.";

        return View();