C#ClickOnce安装文件夹 – Windows如何生成文件夹名称

我想知道Windows如何generate folder ,安装ClickOnce application程序的位置。

在“开始菜单”中是“快捷方式”文件,在“startrek”文件夹中输出的内容如下所示:

C:\ Users \用户名\应用程序数据\本地\应用\ 2.0 \ GT ?? 4KXX.PRJ \ EGV ??? 1G.??C\prin..tion_7???5a2?????74b6_0000.0002_1dae ?? ?? 89111c35

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


例如:

如果我将例如一些settings.txt文件,我希望该用户可以更改应用程序的一些参数。 有没有办法如何知道,哪里会被安装,并在哪里文件? (用户可以在这里find这个settings.txt文件)。

我知道我可以创build该文件,例如在C:\中,启动应用程序后,我将修改“强”path中的文件。 但我真的不喜欢太多的文件,文件夹,无论在C:\,我更喜欢在应用程序相同的文件夹中的设置文件。 但是使用ClickOnce安装是非常困难的 – 找不到这个文件。

这似乎是什么时候,“startrek”就像是项目的散列。


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

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

例如:

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

但是,如果要存储ClickOnce应用程序的设置,则不应通过将文件写入.exe文件夹来完成此操作。

相反,你应该使用微软的应用程序设置支持 。 做任何其他方式将是很多额外的麻烦,微软的支持是非常好的。 它需要半个小时来阅读文档,但它是遥远的最好的事情,恕我直言。

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

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

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

 ApplicationDeployment.CurrentDeployment.DataDirectory 

或者,您可以使用独立的存储空间,并选择是要保存每个应用程序还是每个用户。

我不认为有可能从应用程序本身之外确定这些文件夹。 如果你需要一个已知的位置,你将不得不对它进行硬编码。

更新

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

如果用户正在通过程序修改数据,那么如果不将其保留在ClickOnce程序目录中,则会更快乐。 有一个更新时,你可以完全搞砸了。 看看这篇关于如何处理数据的文章,以确保它的安全并能够找到它。 它讨论把它放在LocalApplicationData中,但是如果你希望你的用户能够找到它并编辑它,就把它放在MyDocuments / yourappname / settings或类似的东西中。

我不会使用独立存储; 有报道和ClickOnce的问题。