.net ClickOnceappref.ms参数

lxkprmvk  于 2023-04-22  发布在  .NET
关注(0)|答案(3)|浏览(111)

我有一个ClickOnce应用程序,可以在线或离线使用。该程序需要一个参数。当在线时,我在URL上传递参数,如“url?argument”,它工作得很好。离线时,我使用应用程序的startmenu链接启动一个进程。
有没有可能通过这个链接向我的应用程序传递一个参数?我想我可以以某种方式计算出应用程序文件的位置,但是有没有其他的选择?

umuewwlo

umuewwlo1#

我可以通过引用应用程序“%userprofile%\Desktop\Your Shortcut Name Here.appref-ms”来实现这一点
然后,为了传递参数,将它们作为单个的、没有空间的实体传递,如下所示:arg1、arg2、arg3
在命令行中,整个过程看起来像这样:

"%userprofile%\Desktop\Your Shortcut Name Here.appref-ms" arg1,arg2,arg3

然后在代码中使用

AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData[0]

取回args
我昨天写了这个博客:http://www.developingfor.net/net/processing-command-line-arguments-in-an-offline-clickonce-application.html

tyu7yeag

tyu7yeag2#

您可以将参数传递给离线ClickOnce应用程序。我只会设置一个指向ClickOnce快捷方式的快捷方式,并在最后添加参数。

jexiocij

jexiocij3#

不,你不能从开始菜单快捷方式传递参数。如果你找到了一种方法,让我知道,因为我已经尝试了很长一段时间:)。
我是这样解决我的问题的……
如果ActivationUri属性为 not null,则应用程序是从浏览器启动的,并通过查询字符串传递参数(正如您所描述的那样)。
如果ActivationUri * 为 * null,则应用程序是从开始菜单启动的。在这些情况下,我从与应用程序一起部署的配置文件中获取参数。
参数传递的是什么类型的信息?这对于确定如何存储参数(app.config、应用程序设置、用户设置、独立存储等)很有用

旁注

我以为我通过使我的应用程序成为“单示例”并尝试处理StartupNextInstance应用程序事件来做一些事情,但没有运气。您只能通过这种方式获得传统的命令行参数,而不是ClickOnce查询字符串参数。

相关问题