0

我为 C# windows 服务编写了一个 x64 windows 安装程序。Windows 服务本身以任何 CPU 为目标。它将服务正确安装到“程序文件”。但是,卸载时,我需要删除日志目录。但是当我尝试使用 Environment 获取“程序文件”的路径时,它返回“程序文件(x86)”,因此无法找到日志目录并将其删除。我该如何解决这个问题。代码在 ProjectInstaller 类中运行,如下所示

   try
    {
                    string path = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles) + @"\PathToLogsFolder"; 
logger.Info(path);
//The above line always shows Program Files (x86) instead of "Program Files"
    if (Directory.Exists(path))
    {

       Directory.Delete(path, true);

    }
    else
    {
      logger.Info("Path does not exist:"+path);
    }                
    }
    catch (Exception e)
    {
     logger.Error("Failed to delete Logs directory on uninstall:" + e.Message);
     logger.Error(e.StackTrace);
    }
4

1 回答 1

0

最可能的解释是您的代码作为 32 位代码运行,而不是作为本机 64 位代码运行。您有一个 64 位安装程序,但这并不意味着您的所有代码都将运行 64 位。您没有明确说明这一点,但如果该删除代码在自定义操作中,则将该代码明确构建为 64 位,并且与服务相同。

于 2018-10-24T18:09:10.070 回答