2010-04-08 2 views
2

나는 당신을 위해 운동을했습니다! :).NET 설치 프로그램 클래스에 MSI 매개 변수 전달

C#으로 구현 된 설치 관리자 클래스에서 [INSTALLDIR] MSI 속성을 가져와야합니다. InstallShield 2010을 사용하여 구성 요소의 키 파일로 정의 된 .NET 어셈블리가있는 구성 요소를 만들었습니다. 구성 요소가 .NET Installer 클래스이고 필수 인터페이스가 구현되었으며 실행 흐름 중에 호출되었는지 확인했습니다. 이제 설치 디렉터리 MSI 속성을 가져와야합니다. 너희들은 어떤 생각을 가지고 있니?

지연된 사용자 지정 동작에 속성을 전달하기 위해 미리 정의 된 사용자 지정 동작이 있지만 실제로 설치 관리자 클래스를 실행하기위한 사용자 지정 동작이 없다는 것을 알고 있습니다. 이것은 설치 구성 요소입니다. Visual Studio 설치 프로그램에 대한 몇 가지 샘플이 있지만 설치 방패는 조금 다를 것 같습니다.

감사합니다.

답변

2

InstallShield | .NET Installer 클래스 = 예. .NET Installer 클래스 인수에 넣습니다. 당신은 기본적으로 당신이 다음 INSTALLDIR 및 FOO에 액세스 할 수 있습니다 상황에 맞는 내부

/INSTALLDIR = "[INSTALLDIR] \"/ FOO = 42

그런 짓을.

그러나 나는 정말로 당신에게 정직하고 싶습니다. 당신은 이것을 원하지 않습니다. 필자는 WiX C# DTF를 사용하면 InstallUtil의 많은 문제점을 해결할 수있는 훨씬 더 나은 패턴을 발견하게 될 것입니다.

블로그에 DTF 예제가 있습니다. DTF를 검색하면됩니다.

+0

크리스, 덕분에 많이! 이 접근법은 지금까지는 작동하지만, 필자는 WiX C# DTF에 대해 확실히 읽을 것입니다. .NET 설치 프로그램 클래스에 매개 변수를 전달할 때 발생할 수있는 문제는 무엇입니까? –

+1

http://robmensching.com/blog/posts/2007/4/19/Managed-Code-CustomActions-no-support-on-the-way-and-heres 기본적으로 Severa는 InstallUtil에 대해 나쁘다. in DTF 1) 실패하면 1001 개의 신비한 팝업이 나타납니다. 자동 모드에서도 마찬가지입니다. 2) MSI 핸들을 사용할 수 없으므로 MSI 속성을 설정하거나 MSI 로그에 쓸 수 없습니다. 3) 첫 번째 CLR 버전은 stickey입니다. 1.1 CA가 실행되면 2.0 CA가 실행되면 예외가 발생합니다. –