【问题标题】:C# Cannot write to Application.ExecutablePath, some boxes i can some i cannot? uninstall from thisC# 无法写入 Application.ExecutablePath,有些框我可以,有些我不能?从此卸载
【发布时间】:2010-09-22 05:26:59
【问题描述】:

所以我一直在写信给

Environment.SpecialFolder.ApplicationData 

此数据文件,卸载时需要删除。我正在使用 Innos Setup 来构建我的安装程序。这对我很有效。所以我的数据文件挂在上面的路径中,当我曾经尝试将它写入时,我这样做了

Application.ExecutablePath

我测试过的某些盒子会在我尝试在那里写入数据时引发严重错误。我做研究,不知何故它并不总是可写的,它是我如何想出 Environment.SpecialFolder.ApplicationData

这就是我的数据文件现在驻留在 SpecialFolder.ApplicationData 中的原因。问题是如果用户卸载并重新安装我需要那个文件消失。这可能是我对 Innos 的了解不足,但我不知道如何知道该文件将在哪里告诉 innos。

然后我想我有一个聪明的解决方案:Innos 可以在卸载完成后运行一个文件,所以我让我的程序创建这个文件“uninstallData.bat”,上面写着:

del "the file in my special folder application data path"

我把它写给drumroll

Application.ExecutablePath 

(是的,它正在开发中,我忘记了它是不可行的。)

所以我当然回到第一方,我需要将文件写入 Innos 知道的关于 {app} 的路径,并且我需要它能够删除我在 SpecialFolder 中的数据文件......我不关心我是怎么做的,我只需要那个文件消失。

还有其他环境。或应用程序。我错过了什么?也许某个卸载程序可以查看并且可以写入的地方?

顺便说一句,我不确定为什么我开发的盒子可以写入应用程序文件夹没有问题,但它不能在其他盒子上......很奇怪。

对于如何破解这个坚果,任何输入都会丢失。

【问题讨论】:

  • 请codejoy,重新改写你的问题,让每个人都能明白你在说什么......
  • 默认情况下,在 Windows XP 及更高版本上 Application.ExecutablePath 需要管理员权限(或至少是高级用户)才能写入。

标签: c# .net path


【解决方案1】:

环境位置在用户配置文件中。如果机器上有多个用户,并且他们都运行应用程序,那么每个配置文件中都会有一份文件的副本。

路径还取决于操作系统。

不管怎样,%APPDATA%%LOCALAPPDATA% 都指向了当前用户的应用数据位置。这些 Windows 环境变量应该在 Innos 中可用。

【讨论】:

  • 谢谢,我会用 Innos 试试这个。
【解决方案2】:

Appliccation.ExecutablePath 根据标准定义不可写 - 程序文件文件夹绝不应被正在运行的应用程序操作。其他地区的特殊文件夹数量。很高兴您终于找到了.... Microsoft 长期以来(至少 10 年)正确记录的内容。

我建议你找一个合适的安装程序 - 我想到了 WIX。您的问题与 C# 完全无关 - 它似乎完全是一个“糟糕的安装程序”问题。或者提供一个程序(不是 bat 文件)在卸载时运行。你到底有什么问题?

【讨论】:

  • 我猜它是糟糕的安装程序。我可以编写一个单独的小文件来删除特殊文件夹中的数据文件。因为我不确定特殊文件夹的“标准”程度。它们是否会根据操作系统而变化。我想现在我知道它叫做“特殊文件夹”,我可以查一下。
  • 其实你应该查一下。这在很长一段时间内都有完整的记录。我可以回答这个问题,但说真的 - 只需在 Visual Studio 中按 F1 并标记它,您就可以获得所有文档。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-13
  • 1970-01-01
  • 1970-01-01
  • 2020-11-08
  • 1970-01-01
  • 2023-03-25
相关资源
最近更新 更多