ClickOnce部署位置

5

我们有一些特殊要求:

  1. 从我们的应用程序中启动ClickOnce应用程序。它将下载ClickOnce应用程序到用户的缓存中。
  2. 完成后,主应用程序需要访问下载到ClickOnce应用程序文件夹中的某些文件。

主应用程序是否有办法知道ClickOnce安装文件夹的位置?

谢谢, yyff

3个回答

4
您可以通过检查执行程序并检索位置来实现此操作。
System.Reflection.Assembly assm = System.Reflection.Assembly.GetExecutingAssembly();

这是您的ClickOnce部署位置。-->assm.CodeBase

3

请尝试以下方法:

using System.Deployment.Application;
...
var dep = ApplicationDeployment.CurrentDeployment;
var path = dep.DataDirectory;

它可能不在DataDirectory路径中,但其中一个属性几乎肯定是您要查找的内容。


1
这是 Click1 如何找到他自己的位置吗? - H H
谢谢,不过你的回答是针对从ClickOnce启动的应用程序。在我的情况下,我的主应用程序启动ClickOnce应用程序并且是一个不同的进程。有没有什么办法? - yyff

2
假设Click1应用是您的,您可以将其保存到更易访问的位置。通常情况下,您可以将其写入用户\文档文件夹中。

怎么做呢?据我所读,开发者无法控制 ClickOnce 应用程序的安装位置。 在 WinXP 中,它是用户缓存下一个随机命名的文件夹。不知何故,我需要一种方法来知道该文件夹的名称,但不能从从 ClickOnce 启动的应用程序中获取。 - yyff
这有点困难。问题是为什么Click1应用程序不能下载到例如Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) - H H
有没有办法在Click1中定义下载位置?如果有的话,我很乐意知道。 - yyff
你还没有回答是否拥有click1。 - H H
让Click1将“文件”移动/复制到更公共的地方。 - H H

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接