드라이버를 설치/업데이트 할 MSI가 있습니다. 그러나 설치를 시작하기 전에 드라이버가 실행 중이고 종료되었는지 감지하고 싶습니다. 고객이 Active Directory를 사용하여 컴퓨터에 배포 할 때 자동으로이 작업을 수행해야합니다.내 Wix MSI에서 소프트웨어가 실행 중임을 어떻게 감지합니까?
WIX 설치 스크립트를 사용하면 어떻게 할 수 있습니까?
드라이버를 설치/업데이트 할 MSI가 있습니다. 그러나 설치를 시작하기 전에 드라이버가 실행 중이고 종료되었는지 감지하고 싶습니다. 고객이 Active Directory를 사용하여 컴퓨터에 배포 할 때 자동으로이 작업을 수행해야합니다.내 Wix MSI에서 소프트웨어가 실행 중임을 어떻게 감지합니까?
WIX 설치 스크립트를 사용하면 어떻게 할 수 있습니까?
내가 여기에 뭔가 빠졌는지 확실하지 않지만 설치하기 전에 드라이버를 종료해야하는 경우 사용자 지정 동작이 최선의 방법이라고 생각합니다.
VB 스크립트를 사용하거나 관리되는 어셈블리를 호출하여 사용자 지정 동작을 작성할 수 있습니다. 나는 후자를 더 좋아한다. (VB 대신 C#을 선호한다.) 윅스 소스 파일의 사용자 지정 작업은 같을 것이다 :
어셈블리를 나타내는 이진 요소를 선언으로 호출 할 그런 다음 사용자 지정 작업을 정의
<Binary Id="BIN_DriverManagement" SourceFile=".\DriverManagement.CA.dll />
, 어셈블리의 메서드를 호출 :
를<InstallExecuteSequence>
<Custom Action="CACT_ShutDownDriverAction" After="LaunchConditions" />
</InstallexecuteSequence>
012 :
<CustomAction Id="CACT_ShutDownDriverAction" BinaryKey="BIN_DriverManagement" DllEntry="ShutDownDriver" />
마지막 단계는 설치 순서로 사용자 지정 작업을 schedulling 것
실제로 이러한 사용자 지정 작업을 예약해야하는지 여부는 요구 사항에 따라 다릅니다.
C#으로 구현 된 사용자 지정 작업 기능은 Microsoft.Deployment.WindowsInstaller 네임 스페이스의 [에서 CustomAction] 속성을 앞에 추가해야한다, 그래서 다음과 같습니다
[Microsoft.Deployment.WindowsInstaller.CustomAction]
public static ActionResult ShutDownDriver(Session session)
{
// Shut down the driver here.
}
가 그것을 조금 어렵지 않다 C#을 사용합니까? .NET 런타임이 설치되었는지 확신 할 수 없습니다. –
물론 이것은 문제가 될 수 있지만 사용자 지정 작업은 .NET 코드에만 국한되지 않습니다. CustomAction의 FileKey 특성을 사용하여 실행 가능한 사용자 지정 네이티브 코드를 실행할 수 있습니다. –