4

我有一个在线或离线可用的 ClickOnce 应用程序。该程序接受一个参数。在线时,我在 URL 上传递参数,如“url?argument”,效果很好。离线我使用应用程序的开始菜单链接启动一个进程。

是否可以通过此链接将参数传递给我的应用程序?我想我可以以某种方式计算出应用程序文件的位置,但是还有其他选择吗?

4

3 回答 3

11

我可以通过将应用程序引用为“%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]

检索参数。

我昨天刚刚写了一篇博客:http: //www.developingfor.net/net/processing-command-line-arguments-in-an-offline-clickonce-application.html

于 2010-06-24T12:46:46.570 回答
2

您可以将参数传递给离线 ClickOnce 应用程序。我只是设置一个指向 ClickOnce 快捷方式的快捷方式,并在最后添加参数。单击此处查看有关如何为离线 ClickOnce 应用程序传递和处理参数的文章。

于 2010-06-08T20:49:06.503 回答
1

不,您不能从“开始”菜单快捷方式传递参数。如果您找到方法,请告诉我,因为我已经尝试了很长时间:)。

以下是我在我的情况下解决问题的方法......

如果ActivationUri属性为空,则应用程序是从浏览器启动的,并通过查询字符串传递参数(就像您描述的那样)。

如果 ActivationUri空,则应用程序是从开始菜单启动的。在这些情况下,我从与应用程序一起部署的配置文件中获取参数。

你的论点传递了什么类型的信息?这对于确定如何存储参数(app.config、应用程序设置、用户设置、隔离存储等)很有用

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

于 2009-02-18T06:41:17.720 回答