Вопрос по c#, file-io – Удалить загруженную сборку
В мое приложение входит деинсталлятор. Все работает нормально, за исключением того, что я не могу найти способ удалить файл uninstaller.exe, когда все это будет сделано.
Я попытался скопировать текущую сборку exe во временный каталог, но дескриптор файла исходного файла все еще заблокирован.
Есть идеи?
MoveFileEx имеет возможность запланировать удаление файла при следующей перезагрузке.
If dwFlags specifies MOVEFILE_DELAY_UNTIL_REBOOT and lpNewFileName is NULL, MoveFileEx registers the lpExistingFileName file to be deleted when the system restarts.
Что-то вроде:
[return: MarshalAs (UnmanagedType.Bool)]
[DllImport ("kernel32", CharSet = CharSet.Auto, SetLastError = true)]
private static extern bool MoveFileEx (string lpExistingFileName, string lpNewFileName, int dwFlags);
public static bool ScheduleDelete (string fileFullName) {
if (!File.Exists (fileFullName))
throw new InvalidOperationException ("File does not exist.");
return MoveFileEx (fileFullName, null, 0x04); //MOVEFILE_DELAY_UNTIL_REBOOT = 0x04
}
если бы вы опубликовали некоторый код того, как именно вы копируете uninstaller.exe и меняете выполнение на этот конкретный исполняемый файл.
Я думаювыгрузка домена приложения освободит дескриптор файла.