C#ClickOnce安装文件夹 - windows如何生成文件夹名称

时间:2013-03-28 19:08:34

标签: c# windows clickonce directory

我想知道Windows generate folder如何安装ClickOnce application

在Startmenu中是文件的“快捷方式”,在“startrek”文件夹中放置的内容如下:

  

C:\ Users \用户名\应用程序数据\本地\应用\ 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”就像是项目的哈希。


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

3 个答案:

答案 0 :(得分:5)

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

例如:

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

但是,如果要存储ClickOnce应用程序的设置,则不应将文件写入.exe的文件夹。

相反,您应该使用Microsoft's Application Settings support。以任何其他方式做这将是一个额外的麻烦,微软的支持是非常好的。它需要半个小时来阅读文档,但它是最好的事情,恕我直言。

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

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

答案 1 :(得分:4)

从ClickOnce应用程序内部,您可以找到使用

存储文件的默认目录
ApplicationDeployment.CurrentDeployment.DataDirectory

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

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

<强>更新

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

答案 2 :(得分:1)

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

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