Windows Installer无法访问目录

时间:2018-12-26 14:16:50

标签: c# service windows-installer

我正在尝试使用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目录,以便删除在此创建的文件

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

谢谢

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

  

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

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

替代品 :我不是.NET专家,所以我不使用托管代码自定义操作。但是,如果它们是基于DTF的,我不确定它们在当前目录或执行目录方面是否有问题。列出一些其他链接: