Я создал программу установки, которая должна удалить некоторые файлы и папки, если они уже существуют, и заменить их новыми.
Когда пользователь нажимает кнопку «Установить», программа установки запрашивает UAC. При выборе Да установщик вызовет метод для удаления существующих файлов и папок. Но он не может удалить файлы и папки. Я использую код DI.Delete (путь). Это дает эту ошибку
Access to the path 'CodeCreate.aspx' is denied.
at System.IO.Directory.DeleteHelper(String fullPath, String userPath, Boolean recursive)
at System.IO.Directory.Delete(String fullPath, String userPath, Boolean recursive)
at System.IO.DirectoryInfo.Delete(Boolean recursive)
at CustomizationCA.CustomActions.DeleteExistingFilesAndFolder(Session session)
Если я запускаю командную строку от имени администратора и затем использую команду «msiexec / i Setup.msi», она удаляет эти файлы и папку.
А при использовании Directory.Delete (путь, истина); Я получаю это как исключение
Exception thrown by custom action:
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.Security.SecurityException: The source was not found, but some or all event logs could not be searched. Inaccessible logs: Security.
at System.Diagnostics.EventLog.FindSourceRegistration(String source, String machineName, Boolean readOnly)
at System.Diagnostics.EventLog.SourceExists(String source, String machineName)
at System.Diagnostics.EventLog.VerifyAndCreateSource(String sourceName, String currentMachineName)
at System.Diagnostics.EventLog.WriteEntry(String message, EventLogEntryType type, Int32 eventID, Int16 category, Byte rawData)
at System.Diagnostics.EventLog.WriteEntry(String source, String message, EventLogEntryType type, Int32 eventID, Int16 category, Byte rawData)
at System.Diagnostics.EventLog.WriteEntry(String source, String message)
at CustomizationCA.CustomActions.DeleteExistingFilesAndFolder(Session session)
Я использую инструмент WIX для создания установщика.
Если перейти к свойствам определенного файла, а затем дать полное разрешение всем пользователям, а затем попытаться удалить файл, файл будет удален.