gpt4 book ai didi

.net-core - 使用 ClickOnce : how do I make it useable as a command-line app? 部署的 .net 核心控制台应用程序

转载 作者:行者123 更新时间:2023-12-03 17:22:55 35 4
gpt4 key购买 nike

我注意到可以使用 Visual Studio 通过 ClickOnce 发布 .net core 5 控制台应用程序。
TLDR;
控制台应用程序的全部意义在于能够使用用户输入的命令选项/参数在命令行上调用它。 ClickOnce 允许我发布控制台应用程序这一事实让我相信这是可能的,但 ClickOnce 似乎通过模糊 exe 的实际路径来反对这个用例。我该如何解决这个问题?

详情
我可以使用 ClickOnce 来部署控制台应用程序并且它可以工作,但只能从 Windows 开始菜单中找到应用程序。应用程序不能(很容易?)从命令行调用,因为它的位置不在用户的路径环境变量中。您可能知道,clickonce 会在“开始”菜单中放置可执行文件的快捷方式...C:\users\<user>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\<ConsoleApp>.appref-ms<ConsoleApp>.appref-ms是指向安装程序的 UNC 文件路径的应用程序引用。如果我理解正确,clickonce 会在用户的机器上安装应用程序,但会掩盖实际可执行文件的位置/文件路径。您基本上被迫使用应用程序引用来启动 ClickOnce 应用程序。
这对于 wpf 应用程序很好,因为它们是从“开始”菜单启动的。但是控制台应用程序呢?
我正在编写的控制台应用程序需要用户提供的选项/参数。如果它只是在开始菜单中,它将在没有任何选项/参数的情况下启动并运行。此外,它会在新的控制台窗口中启动。这使得控制台应用程序(以这种方式部署时)作为另一个可供用户在 powershell 中执行其他操作时执行的命令毫无用处。
问题

  • 是否有一种使用 ClickOnce 部署控制台应用程序的低摩擦方式,并在安装期间将其文件路径添加到用户的 PATH 环境变量中,并且在不启动新控制台窗口的情况下运行它?
  • ClickOnce 是用于命令行应用程序部署的错误工具吗?如果没有,什么是正确的工具?
  • 只能从开始菜单启动并且不能有参数/选项的控制台应用程序有什么意义?
  • 最佳答案

    我在 .Net Framework 应用程序上做了这个
    请注意以下要点:

  • 您需要检测正在运行的应用程序是否是网络部署的
  • Click once 应用程序不会将空格字符作为参数分隔符
  • 在我的情况下,您需要定义参数单独的字符,我使用逗号
  • static void
    Main(string[] args)
    {
    if (ApplicationDeployment.IsNetworkDeployed)
    {
    var inputArgs = AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData;
    if (inputArgs != null && inputArgs.Length > 0)
    {
    args = inputArgs[0].Split(new char[] { ',' });
    }
    }
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    Application.Run(new MainForm(args)); // Here you pass the argument to the application

    }
    在 Windows 命令提示符下,您可以调用该应用程序
    myapp.appref-ms argument1,argument2,argument3

    关于.net-core - 使用 ClickOnce : how do I make it useable as a command-line app? 部署的 .net 核心控制台应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65670951/

    35 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com