【问题标题】:C# ClickOnce install folder - how windows generate the folder namesC# ClickOnce 安装文件夹 - windows 如何生成文件夹名称
【发布时间】:2013-03-19 09:10:49
【问题描述】:

我想知道 Windows generate folderClickOnce application 将在哪里安装。

在开始菜单中是文件的“快捷方式”,放在一些“startrek”文件夹中,例如:

C:\Users\USERNAME\AppData\Local\Apps\2.0\GT??4KXX.PRJ\EGV???1G.??C\prin..tion_7???5a2?????74b6_0000。 0002_1dae????89111c35

这些文件夹名称是什么意思?


例如:

如果我有一些settings.txt 文件,我希望用户可以更改应用程序的一些参数。有没有办法知道,它将安装在哪里以及文件在哪里? (用户可以在哪里找到这个 settings.txt 文件)。

我知道我可以在 C:\ 中创建文件,启动应用程序后,我将修改“强”路径中的文件。但我不太喜欢 C:\ 中的任何文件、文件夹,我更喜欢将设置文件放在与应用程序相同的文件夹中。但是使用 ClickOnce 安装真的很难 - 不可能 - 找到该文件。

“startrek”似乎是项目的哈希。


所以我想知道这个文件夹是什么意思,如果它是项目的一些散列或者是什么。

【问题讨论】:

  • 也许您不应该在设置文件中使用完全限定的路径。在应用程序文件夹中使用相对文件引用
  • 那个问题是我需要完全合格的路径..我需要它只是为一些不懂计算机的人提供信息,我需要告诉他们“这是这个文件..打开它并修改IT“..我需要在我的应用程序中处理文件不是问题(我使用相对参考)..但我用应用程序设置解决它,它不是最好的解决方案,但它至少总比没有好。

标签: c# windows clickonce directory


【解决方案1】:

要查找包含您的可执行文件的文件夹,您可以使用Assembly.Location 属性。

例如:

string exeFolder = System.Reflection.Assembly.GetExecutingAssembly().Location;

但是,如果您想存储 ClickOnce 应用程序的设置,则不应通过将文件写入 .exe 文件夹来实现。

相反,您应该使用Microsoft's Application Settings support。以任何其他方式来做都会有很多额外的麻烦,而且微软的支持非常好。通读文档确实需要半小时,但恕我直言,这绝对是最好的选择。

(我假设您只需要将设置存储在本地 PC 上供同一用户以后使用。如果您希望设置跟随用户(即漫游设置),则不能使用Microsoft 支持。)

如果您想将更复杂的设置存储在直接创建的文件中,则应考虑使用 JRoughan 的答案提到的隔离存储。

【讨论】:

  • 好的,我通过应用程序的设置解决了这个问题。更新应用程序时设置是相同的,所以它是我能做的最好的,另一个用户将访问它..“我不在乎”;D(我没有其他可能性):] thnks
  • 我认为您可以选择 - 在逐个设置的基础上 - 是否为所有用户或当前用户存储该设置。有一个内置的设置编辑器,你可以在我认为的某个地方选择它。
【解决方案2】:

在 ClickOnce 应用中,您可以找到存储文件的默认目录

ApplicationDeployment.CurrentDeployment.DataDirectory

或者您可以使用isolated storage 并选择是要按应用程序还是按用户保存。

我认为不可能从应用程序本身之外确定这些文件夹。如果您需要一个已知位置,则必须对其进行硬编码。

更新

我也不相信可以推断出应用程序的安装目录。即使可能,使用该应用也是不明智的,因为应用的更新不会位于同一位置。

【讨论】:

  • 非常感谢,我会看看隔离存储,它会有所帮助。 DataDirectory 对我来说不是正确的方式,因为我需要手动设置 settings.txt (因此“询问”:])..Programmaticaly 对我来说并不复杂,但我怎么说,我需要设置手动文件,所以我需要知道应用程序的路径.. 谢谢.. 更新:是的,如果更新,文件夹不一样,这是第二个问题:D
【解决方案3】:

如果您有用户正在通过您的程序修改的数据,如果您不将其留在 ClickOnce 程序目录中,您会更高兴。当有更新时,您可能会完全搞砸。查看this article 了解如何处理您的数据以确保其安全并能够找到它。它谈到将其放入 LocalApplicationData,但如果您希望您的用户能够找到并编辑它,只需将其放入 MyDocuments/yourappname/settings 或类似的东西。

我不会使用独立存储;据报道,这和 ClickOnce 存在问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-21
    • 2020-02-22
    相关资源
    最近更新 更多