代码之家  ›  专栏  ›  技术社区  ›  Mark Heath

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

  •  4
  • Mark Heath  · 技术社区  · 14 年前

    我有一个WinForms应用程序,我正试图用ClickOnce来部署它。它由一个可执行文件和一个依赖的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\ ),存在应用程序可执行文件和dll,但不存在“映射”文件夹。

    我做错什么了?这是在我的应用程序中捆绑额外文件的正确方法吗?实际上,我希望Maps文件夹是用户可以轻松访问和添加自己的文件的地方。

    1 回复  |  直到 14 年前
        1
  •  12
  •   Mark Heath    14 年前

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

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