2012-09-17 2 views
0

나는 사용자가 사용자 지정 작업 오류가있는 경우 올바른 암호를 작성하고 다시의 실행 어디에 대화 상자를 보여 않는 방법 사용자 지정 작업WiX. 사용자 지정 작업 럼 SQLCMD 및 처리 오류

<CustomAction Id="SqlCmdExeRESTORE" BinaryKey="WixCA" DllEntry="CAQuietExec" Return="check" Execute="deferred" Impersonate="yes" /> 
<CustomAction Id="SqlCmdRESTORE" Property="SqlCmdExeRESTORE" Value="&quot;[SQLBINDIR]sqlcmd.exe&quot; -S .\MYDB -U sa -P MyPass -Q &quot;RESTORE DATABASE MYDB FROM DISK = N'[MSSQLDIR]\Backup\MYDB.bak'&quot;" /> 

있습니다. 사용자 지정 작업은 사용자와 상호 작용하는 모든 UI를 보여주지해야한다 - 아이디어

답변

1

그것은 그것을 할 올바른 방법이 아니다에 대한

감사합니다. 예를 들어 조용한 (무인) 설치 중에 이러한 동작의 동작을 상상해보십시오.

설치 프로그램의 UI 단계에서 사용자에게 암호를 묻는 것이 좋습니다. 내 말은, 텍스트 상자의 SQL 이름/암호 쌍을 가진 대화 상자를 가지며 입력 된 값을 저장하기 위해 MSI 속성에 해당 텍스트 상자를 연결합니다. 나중에 적절한 속성 값을 사용자 지정 작업에 전달하십시오.

이것은 사용자의 질문에 대한 빠른 해결책이었습니다. 그러나, 나는 지적하고 싶은 몇 가지 디자인 문제를 드러낸다.

먼저 EXE 사용자 지정 동작을 가능한 한 피하려고 시도해야합니다. 여기에 one of the sources describing why이 있습니다. 예를 들어, 사용자 지정 작업을 ADO.NET을 사용하여 SQL 서버를 처리하는 C# 사용자 지정 동작으로 다시 팩할 수 있습니다. 단지 예입니다.

또한 대상 시스템을 변경하는 사용자 지정 동작은 항상 적절한 롤백 동작과 쌍을 이루어야합니다. 롤백의 경우, 시스템은 설치가 시작될 때의 상태로 남아 있어야합니다.