使用ClickOnce应用程序的用户文件的位置

时间:2010-11-15 20:49:40

标签: winforms clickonce

我正在尝试使用ClickOnce部署的WinForms应用。它包含一个可执行文件和一个依赖的dll,以及一个名为“Map”的文件夹中的一堆松散的xml文件。 xml文件似乎在生成的clickonce包中都存在且正确,并且都包含在.manifest文件中。

但是,当我安装并运行时,使用以下代码为我提供了一个找不到目录的例外:

string appPath = Path.GetDirectoryName(Application.ExecutablePath);
string mapPath = Path.Combine(appPath, "Maps");
foreach (string xmlFile in Directory.GetFiles(mapPath, "*.xml"))

当我查看“appPath”(即C:\Users\Mark\AppData\Local\Apps\2.0\0H6ZLXXN.30V\3TNO49OJ.8JH\midi..tion_5194807c0e95e913_0000.0004_b9d52c73fd4d58ad\)时,有app可执行文件和dll,但地图文件夹不存在。

我做错了什么?这是用我的应用程序捆绑额外文件的正确方法吗?我实际上希望Maps文件夹能够让用户轻松访问并添加自己的文件。

1 个答案:

答案 0 :(得分:12)

好吧,我最终找到了一个帮助我的代码片段。 xml文件已经放入ClickOnce“数据目录”(可以使用项目设置对话框的“发布”选项卡上的“应用程序文件”按钮进行配置。然后您可以按如下方式访问数据目录:

    private string GetDataDirectory()
    {
        if (ApplicationDeployment.IsNetworkDeployed)
        {
            return ApplicationDeployment.CurrentDeployment.DataDirectory;
        }
        else
        {
            return Application.StartupPath;
        }
    }