При удалении службы Windows с помощью установщика x64 Environment.SpecialFolder.ProgramFiles возвращает «Program Files (x86)» - PullRequest
0 голосов
/ 22 октября 2018

Я написал установщик Windows x64 для службы Windows C #.Сама служба Windows предназначена для любого процессора.Служба корректно устанавливает «Программные файлы».Однако при удалении мне нужно удалить каталог журналов.Но когда я пытаюсь получить путь к «Программным файлам» с помощью Среды, он возвращает «Программные файлы (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);
    }

1 Ответ

0 голосов
/ 24 октября 2018

Наиболее вероятным объяснением является то, что ваш код работает как 32-битный код, а не как собственный 64-битный код.У вас есть 64-битный установщик, но это не значит, что весь ваш код будет работать 64-битным.Вы явно не говорите это, но если этот код удаления находится в пользовательском действии, тогда создайте этот код, чтобы он был явно 64-битным, и то же самое с сервисом.

...