![Win7 클라이언트에 DLL 파일 업데이트를 배포하는 가장 좋은 방법](https://rvso.com/image/658349/Win7%20%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8%EC%97%90%20DLL%20%ED%8C%8C%EC%9D%BC%20%EC%97%85%EB%8D%B0%EC%9D%B4%ED%8A%B8%EB%A5%BC%20%EB%B0%B0%ED%8F%AC%ED%95%98%EB%8A%94%20%EA%B0%80%EC%9E%A5%20%EC%A2%8B%EC%9D%80%20%EB%B0%A9%EB%B2%95.png)
우리는 Windows 7/Server 2008 R2 도메인 환경에 있습니다. 다양한 UI 및 기타 기능을 위한 많은 내부 라이브러리가 포함된 .NET 애플리케이션이 있습니다. 최신 버전 번호를 사용하여 각 "릴리스"에 대해 디렉터리가 생성되는 공유에서 배포합니다. 때때로 특정 요구 사항에 맞게 애플리케이션을 조정해야 하는 일부 부서가 있으며, 다음 릴리스 전에 긴급하게 변경이 필요합니다. 요청된 변경 사항이 포함된 몇 가지 사용자 정의 DLL 파일을 제공하면 이를 수행할 수 있습니다. 저는 클라이언트 시스템이 이러한 "사용자 정의" 파일을 자동으로 확인하고 복사하도록 하는 가장 안정적이고 효율적인 방법을 고안하려고 노력하고 있습니다. 나는 가장 효율적이고 안정적이며 중앙에서 관리되고 클라이언트에 대한 오버헤드가 최소화되는 방식으로 이 작업을 수행하고 싶습니다. 배포할 사용자 정의 파일이 있는 경우 모든 클라이언트가 해당 파일을 공유에 저장한 후 24시간 이내에 복사하는 것이 좋습니다. "Custom" 또는 이와 유사한 이름의 현재 네트워크 릴리스 디렉토리의 하위 폴더로 이동합니다. 현재 SCCM이 없으므로 다음 옵션을 살펴보고 있습니다.
네트워크 디렉터리를 확인하고 robocopy 또는 xcopy를 사용하여 로컬 파일을 복사(덮어쓰기)하는 사용자를 위한 배치 파일 로그온 스크립트입니다. 이렇게 하려면 사용자가 로그오프했다가 다시 로그인해야 하므로 사용자 정의 파일을 가져오는 데 지연이 발생할 수 있습니다. 사용자는 이를 트리거하는 쉽고 안정적인 방법을 갖게 되므로 이는 장점이 될 것입니다.
그룹 정책 기본 설정 항목을 통해 구성된 예약된 작업으로 하루에 몇 번씩 네트워크 디렉터리에서 사용자 정의 파일을 확인합니다. 이는 사용자 로그온 스크립트보다 파일을 더 빨리 가져올 수 있지만 GPP 예약 작업 항목에 대한 경험이 없습니다. 설치 및 유지 관리가 안정적이고 간단합니까? 이번에도 이 작업은 배치 스크립트를 실행하여 네트워크의 파일을 확인하고 /xo 옵션을 사용하여 robocopy를 시작합니다. 사용자 정의 디렉토리에 파일을 넣으면 버전에 관계없이 해당 파일이 필요하다고 가정합니다. 파일 날짜를 확인하는 것만으로도 효과가 있으므로 일단 제자리에 있으면 계속해서 다시 복사되지 않습니다.
위와 동일하지만 이벤트 로그 항목을 기반으로 트리거되는 예약된 작업입니다. 이거 믿을만한가요? 나는 그것을 시도한 적이 없습니다. 애플리케이션이 방금 시작(또는 종료)되었음을 나타내는 이벤트 트리거를 찾은 다음 파일을 즉시 복사하여 사용자 작업이 중단될 가능성을 줄이는 것이 유리할 수 있습니다.
파일 관리/복사를 위한 그룹 정책 기본 설정 항목도 있다는 것을 알고 있습니다. 여러 버전의 애플리케이션에 걸쳐 한 번에 여러 파일을 생성할 가능성이 있기 때문에 이 경우 관리하기에는 너무 많은 작업이 필요할 것이라고 생각합니다.
또한 실제 DLL 파일 버전 비교 등과 같은 흥미로운 작업을 수행할 수 있는 Powershell 스크립트를 고려했지만 이는 아마도 더 많은 리소스 오버헤드가 필요하고(느리게 실행됨) 실제로 필요한 것보다 더 많은 작업을 수행하고 있습니다.
무엇이 가장 효과적일지에 대한 다른 아이디어가 있나요? 여기서 가장 간단한 답변(사용자 로그온 스크립트)이 실제로 최고입니까?
답변1
결국 사용자 로그온 스크립트인 옵션 #1을 사용하게 되었는데, 이는 한동안 안정적으로 작동해 왔습니다. 여기에 전체 스크립트를 게시하고 싶지만 일반적인 사용에는 거의 쓸모가 없게 만드는 내부 애플리케이션 세부 정보로 가득 차 있습니다. 가장 흥미로운 세부 사항은 wmic를 사용하여 로컬에 설치된 애플리케이션의 내부 버전 번호를 얻고 이를 사용하여 배포 서버의 올바른 버전 디렉터리를 참조한다는 것입니다. 이 코드는 wmic.exe에서 반환된 값과 일치하도록 Version이라는 변수를 설정합니다.
set "myfile=c:\\progra~2\\%AppFolder%\\AppName.exe"
for /f "tokens=*" %%f in ('wmic datafile where "name='%myfile%'" get version /value ^| findstr "="') do set "%%f"