3

我想知道如何 Windows generate folder,将在哪里ClickOnce application安装。

在 Startmenu 中是文件的“快捷方式”,放在一些“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”就像项目的哈希一样。


所以我想知道该文件夹是什么意思,以及它是否是项目的一些哈希值或那是什么。

4

3 回答 3

5

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

例如:

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

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

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

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

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

于 2013-03-28T19:30:03.317 回答
4

在 ClickOnce 应用程序中,您可以使用以下方式找到存储文件的默认目录

ApplicationDeployment.CurrentDeployment.DataDirectory

或者,您可以使用隔离存储并选择是要按应用程序还是按用户保存。

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

更新

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

于 2013-03-28T19:14:18.007 回答
1

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

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

于 2013-04-07T00:43:36.313 回答