【问题标题】:ClickOnce appref.ms argumentClickOnce appref.ms 参数
【发布时间】:2009-02-17 19:21:19
【问题描述】:

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

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

【问题讨论】:

    标签: .net clickonce


    【解决方案1】:

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

    【讨论】:

    • 感谢您的提醒;这可能很有用。您的博客条目是我的一个简短摘录,人们可能会觉得它有用。我的博客条目确实展示了如何创建以逗号分隔的参数列表,但我不想假设用户只有没有空格、逗号、引号等的参数。如果您尝试使用逗号分隔的列表并且出现任何这些字符,它将忽略参数列表的其余部分。这就是我包含 html 编码示例的主要原因。 (如果你想知道)。
    • 是的,我发现您的博客文章很有帮助,只是比我需要的详细得多:-) 另外,对于以后发现此内容的任何人:上面的“$userprofile”应该是 %userprofile% - 不知道那里发生了什么
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

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

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

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

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

      【讨论】:

      猜你喜欢
      • 2014-02-23
      • 1970-01-01
      • 2022-08-22
      • 2022-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-30
      相关资源
      最近更新 更多