관리 패키지의 C#에서 구현할 수있는 코드로 Inno-Setup 스크립트를 확장하고 있습니다. 관리되지 않는 프로세스에서 사용할 함수로 관리되는 DLL에서 메서드를 내보내는 방법을 이미 알고 있습니다. 그것은 IL 직물 수행 할 수 있으며,이를 자동화 할 수있는 도구가 있습니다 :관리되지 않는 프로세스에서 .NET DLL 언로드
- NetDllExport (내가 쓴)
- UnmanagedExports
그래서 보낸 후, 나는 파스칼 스크립트에서 내 함수를 호출 할 수는 Inno-Setup 인스톨러에서. 하지만 한 가지 문제가 있습니다. DLL을 더 이상 언로드 할 수 없습니다. Inno-Setup의 UnloadDLL(...)
을 사용하면 아무 효과가 없으며 설치 프로그램을 종료 할 때까지 파일이 잠긴 상태로 유지됩니다. 이 때문에 설치 프로그램이 2 초 동안 기다린 다음 temp 디렉터리 (또는 설치 디렉터리)에서 DLL 파일을 삭제하지 못합니다. 실제로 누군가가 드라이브를 정리할 때까지 실제로 거기에 있습니다.
전체 AppDomain이 종료되지 않으면 (프로세스가 종료되지 않는 한) 관리되는 어셈블리를 AppDomain에서 더 이상 언로드 할 수 없다는 것을 알고 있습니다. 그러나 관리되지 않는 호스트 프로세스는 무엇을 의미합니까?
로드 및 사용 후 Inno-Setup에서 내 DLL 파일을 언로드하거나 삭제할 수있는 더 좋은 방법이 있습니까?
작은 감자는 제거에 비해 ... DLL이 코드가 같은 모습입니다.NET 버전을 사용하여 설치 프로그램을 설치해야합니다. 예외를 디버깅하는 방법을 모르는 경우 해당 질문을 대신 요청하십시오. –
어쨌든 설치된 응용 프로그램에는 .NET 런타임이 필요하므로 다시 설치되지 않습니다. – ygoe
BTW, .NET은 현재 Windows 운영 체제 구성 요소이며, 최신 버전 만 지원됩니다. 그래서 .NET은 이미 거기에 있어야하고, 없어지지 않아야하며 심지어 Windows에서 유비쿼터스로 간주 될 수도 있습니다. – ygoe