0

제거시 사용자 정의 Windows 양식을 표시하려고합니다. 이를 위해 C# 사용자 정의 액션을 사용할 것입니다. 사용자가 확인 또는 취소를 클릭 할 때까지 사용자 지정 작업을 대기 시키려면 어떻게합니까? 양식이 닫힌 경우에만 사용자 지정 작업을 완료하고 싶습니다. 따라서 내 사용자 지정 작업에서 다음을 수행하십시오.제거시 사용자 정의 Windows 양식

CollectUninstallData f = new CollectUninstallData(); 
      f.Show(); 
      return f.FormResult; 

그러나 양식이 잠시 깜박이고 양식이 닫힐 때까지 기다리지 않고 제거가 계속됩니다. GUI가 다른 스레드에 있기 때문에 이것은 논리적입니다. 그러나 양식을 닫을 때까지 기다리려면 어떻게해야합니까?

설치 패키지에 사용자 지정 Windows 양식을 표시하는 것이 시원하지 않기 때문에 누구나보다 세련된 솔루션을 제공 할 수 있다면 고맙게 생각합니다.

+1

Windows Installer에서 제공하는 UI를 사용하지 않는 이유는 무엇입니까? (그러나 제어판에서 시작할 때 최소 UI에서 제거가 실행됩니까?) –

+0

@Alexey Ivanov 내 접근 방식이 작동하지 않으면 시도해 보겠습니다. .NET에서 WiX보다 양식을 만드는 것이 훨씬 쉽습니다. –

+1

[WixEdit] (http://wixedit.sourceforge.net/)을 사용하여 Windows Installer의 UI를 디자인 할 수 있습니다. 포함 된 UI는 .NET보다 가볍습니다. 제거시 수집하려고하는 데이터는 무엇입니까? 아니면 일종의 확인입니까? –

답변

0

Show() 대신 ShowDialog() 메서드를 사용해야합니다. 후자는 양식을 표시하고 사용자 지정 작업이 실행을 중지하는 이유를 제어합니다. 전자는 양식을 모달 대화 상자로 표시하고 사용자가 양식을 닫을 때까지 반환하지 않습니다.

CollectUninstallData f = new CollectUninstallData(); 
DialogResult r = f.ShowDialog(); 
f.Dispose(); 
return r; 

당신은 사용자가 확인을 클릭 여부를 알 수 또는 취소를하려면이 문 return r == DialogResult.OK ? 0 : 1를 사용합니다. 리턴 코드 0은 대개 성공을 나타내고 비 0은 실패를 나타냅니다.

관련 문제