我注意到使用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是否是错误的工具用于命令行应用程序部署?如果不是,正确的工具是什么?
- 只能从“开始”菜单启动且不能带有arg/options的控制台应用程序的意义是什么?