Я следующий (упрощенный) код для установки WinService:ManagedInstallerClass.InstallHelper является замок WinService ехе
public static bool InstallService(string fullFileName)
{
try
{
ManagedInstallerClass.InstallHelper(new[] { fullFileName });
return true;
}
catch (Exception ex)
{
return false;
}
}
я заметил, что при вызове его в моем мастере установки EXE файл из WinService не блокируется до всей установки мастер не завершен. Есть ли способ избежать этой блокировки? Как «освободить ресурсы» сразу после установки InstallService? Я нашел аналогичную проблему here. GC.Collect() мне не помог.
Я попытался вызвать метод в отдельном потоке, но безуспешно.
Это нормально, сборки, загруженные Assembly.LoadFrom() остаются загруженными и сохраняют блокировку файла до тех пор, пока AppDomain не будет выгружен. Вам нужно будет запустить этот код в новом AppDomain и выгрузить его самостоятельно, чтобы этого не произошло. –