【问题标题】:Save files to install directory instead of desktop after installing published C# win forms desktop app安装已发布的 C# win forms 桌面应用程序后将文件保存到安装目录而不是桌面
【发布时间】:2015-09-07 17:04:40
【问题描述】:

在我的 win forms C# 应用程序中,我将图像导出为 pdf 和 word。在导出之前,需要将图像保存为位图。是这样的吗:

// code
bitmap.Save("Image.jpeg", ImageFormat.Jpeg);
bitmap.Dispose();

现在 word 和 pdf 导出的代码从保存的位置正常读取此文件。但是,当我测试我的桌面应用程序时,代码 "Image.jpeg"saves 图像到 bin 目录。

当我使用 InstallShield 制作安装程序并安装我的程序时,此选项有效,但它会将我的图像保存到桌面。我真的不想要那个。

设法将其发送到 ApplicationData 目录,但也不希望这样......

string imageSaved = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "Image.jpeg");
bitmap.Save(imageSaved, ImageFormat.Jpeg);
bitmap.Dispose();

如何将我的文件导航到安装目录?

【问题讨论】:

  • 将文件保存在安装应用程序的同一文件夹中不是一个好主意。通常操作系统会通过写入此文件夹的权限来阻止。
  • 所以您的建议是将它留在 AppData 目录中?此图像仅用作链接,直到用户将文件保存为 .pdf 或 .docx。我应该在使用后以编程方式将其删除吗?
  • 1) 是的,2) 可能是的
  • 好的。谢谢你的建议:)
  • This answer 会给你所有的可能性,但正如我所说,最好继续使用 AppData

标签: c# winforms installation installshield publish


【解决方案1】:

只需使用Application.StartupPath

获取启动应用程序的可执行文件的路径, 不包括可执行文件名。

启动应用程序的可执行文件的路径。这 路径会有所不同,具体取决于 Windows 窗体是否 应用程序是使用 ClickOnce 部署的。 ClickOnce 应用程序是 存储在 C:\Documents 中的每个用户应用程序缓存中,并且 设置\用户名目录。

例如你可以这样使用它:

string imageSaved = Path.Combine(Application.StartupPath, "Image.jpeg");
bitmap.Save(imageSaved, ImageFormat.Jpeg);

对于 ClickOnce 应用程序,您可以使用ApplicationDeployment.CurrentDeployment.DataDirectory,更多信息请参阅Accessing Local and Remote Data in ClickOnce Applications

【讨论】:

  • 是的,我明白了,但需要先检查一下它是如何工作的...谢谢您的回复
  • 这可行,但它不会将图像保存到任何这些位置,我找不到保存的图像。当我运行调试器时,它位于 bin 文件夹中,在部署和安装之前
  • 没有例外,因为它运行良好。我将文件保存为图像并将其转换为 pdf,我只是在创建后不知道“图像”的位置。当我在创建安装程序之前运行 debbuger 时,它进入 bin 文件夹,但是当我安装我的应用程序时,它不会进入安装目录、文档、桌面等任何地方......
  • @dodoria1992 它位于您保存它的位置,如果您使用的是Path.Combine(Application.StartupPath, "Image.jpeg"),那么查看您的Application.StartupPath 是什么并在那里找到它。例如,保存图像后只需执行MessageBox.Show(Application.StartupPath)
  • @dodoria1992 如果您尝试写入受保护的文件夹,它未显示的原因可能是UAC Data Redirection
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-16
  • 1970-01-01
  • 2013-08-23
  • 1970-01-01
  • 2018-07-14
相关资源
最近更新 更多