【问题标题】:windows installer cannot access directorywindows 安装程序无法访问目录
【发布时间】:2019-05-24 18:54:09
【问题描述】:

我正在尝试使用 windows 服务安装程序为 windows 服务(服务是 LocalSystem 帐户)运行一些自定义操作代码,我收到以下错误消息:

安装 MSI 时出现错误消息:

Error 1001. An Exception occurred in the OnAfterInstall event handler
of System.ServiceProcess.ServiceInstaller. --> Access to the path XXX
is denied. 

此代码抛出错误:

protected override void OnAfterInstall(IDictionary savedState)
{
      string path = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
      System.IO.File.WriteAllText(path, "test");
}

在代码中我试图访问服务 .exe 目录,这样我就可以删除在那里创建的文件

我的目标是为安装/卸载过程进行自定义操作。我想删除安装后创建的文件,如日志和配置文件。

谢谢

【问题讨论】:

  • 请不要使用图片代替文字。
  • 请解释...你在哪里失去了我?我认为这很清楚
  • 只有 2018 年,技术进步还没有准备好在其他用户搜索相同的错误消息时快速处理图像并将其转换为纯文本,也没有很多工具可以轻松转换源代码截图成文本,以便我们懒惰的程序员将它们复制到我们的 IDE 中。

标签: c# service windows-installer


【解决方案1】:

您正在尝试将文本写入目录而不是文件。变量“path”从 Path.GetDirectoryName() 返回,它是一个目录。在下一行中,您尝试对此变量执行 File.WriteAllText(),因此出现错误。

【讨论】:

  • 简单的答案,我不敢相信我错过了它。 谢谢!
【解决方案2】:

Path.Combine:正如其他人已经提到的,您需要指定正确的完整路径(路径和文件名)。也许使用 Path.Combine?例如:

 System.IO.File.WriteAllText(Path.Combine(path, "filename.txt"), "test");

替代方案:我不是 .NET 专家,也不使用托管代码自定义操作。但是,如果它们是基于 DTF 的,我不确定它们是否对当前目录或执行目录有任何麻烦。列出一些进一步的链接:

【讨论】:

    猜你喜欢
    • 2021-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-17
    • 1970-01-01
    • 1970-01-01
    • 2021-10-25
    • 2010-10-09
    相关资源
    最近更新 更多