我正在尝试将.NET应用程序部署为ClickOnce应用程序,但我无法定义应用程序的安装位置。我需要知道这一点,因为我必须包含支持文件。我已经将支持文件添加为“现有项目”。我曾假设该程序将安装在Program Files中,但它并不存在。相反,桌面上只有一个快捷方式。有人可以解释使用VS2012定义安装路径的方式/位置吗?
答案 0 :(得分:2)
我发现一个解决方案是使用一些Application类属性来确定ClicOnce安装程序实例的位置。但请注意,在卸载程序时会删除一些。
// To get the path for the executable file that started the application, not including the executable name.
PATH_RESOURCES = Application.StartupPath ;
对于持久数据,我创建了对特定路径的引用,如:
PATH_USERDATA = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\myAppName\";
if (!System.IO.Directory.Exists((string)PATH_USERDATA))
{
System.IO.Directory.CreateDirectory((string)PATH_USERDATA);
}
PATH_REPORTS = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\myAppName\";
if (!System.IO.Directory.Exists((string)PATH_REPORTS ))
{
System.IO.Directory.CreateDirectory((string)PATH_REPORTS );
}
答案 1 :(得分:1)
Clickonce 应用程序安装在用户配置文件下,而不是程序文件路径下。
在Windows Vista和Windows 7上,clickonce应用程序路径将位于c:\users\username\AppData\Local\Apps\2.0\
在Windows XP上,clickonce应用程序路径将位于c:\document and Settings\username\LocalSettings\Apps\2.0\
请注意,Clickonce应用程序路径在安装时每次都不同,我发现最好的方法是让您的应用程序编写自己的应用程序路径到reg键,这样您就可以通过查看注册表确切了解应用程序路径的位置
答案 2 :(得分:0)
因此, user831062 指出,ClickOnce应用程序安装在用户配置文件下,而不是程序文件路径下。因此,每台机器上的安装目录都不同,几乎不可能直接访问。
我被挂起的部分,是我在项目中包含的文件所在的位置,更重要的是 - 我如何访问它们?
嗯,如上所述IN THIS LINK,如果您将文件标记为“数据文件”,请在:
下Project Properties > Publish > Application Files > Publish Status
您可以使用以下内容访问它们:
textBox = File.ReadAllLines(ApplicationDeployment.CurrentDeployment.DataDirectory + @"\myFile.txt")).ToList();
如果你没有将它标记为“数据文件”,而只是标记为“包含(自动)”,它将只位于安装目录本身,可以通过直接调用文件来访问它类似的东西:
textBox = File.ReadAllLines(@"myFile.txt")).ToList();
无论如何,花了我一个小时才找到这个,所以希望它可以帮助其他人。
答案 3 :(得分:0)
如果已将文件添加到项目中,请将“构建操作”的属性设置为“内容”,并将“复制到输出目录”设置为“始终复制”。这样,文件将包含在您的部署中。运行应用程序时,检索程序集的位置,并查看与项目中包含它们的位置相同的相对文件夹。例如,如果它们位于构建输出目录的顶层文件夹(/ bin / debug /或/ bin / release /)中,它们将与可执行文件包含在同一文件夹中,您可以使用此文件发现它:
System.Reflection.Assembly.GetExecutingAssembly()。位置