3

내 솔루션 용 .msi 설치 관리자를 만드는 Visual Studio 2013의 설치 및 배포 프로젝트가 있습니다. 또한 사용자 지정 작업 설치에서 시작되는 C# WinForms 응용 프로그램이 있습니다. 사용자가 명령 줄에서 .msi를 시작하면 설치 사용자 지정 작업 중에 실행되는 응용 프로그램에 명령 줄 인수를 전달할 수있는 방법이 있습니까?.msi 사용자 지정 작업을 설치하는 args 전달

CustomActionData 매개 변수를 사용하여 설치 사용자 지정 동작 응용 프로그램 인수를 제공 할 수 있으므로 어떻게 든 .msi 인수가 무엇이든 동적으로 설정할 수 있습니다. 아니면 이것을하기위한 더 쉬운 방법이 있습니까?

도움을 주시면 감사하겠습니다.

답변

1

앱에 설치 프로그램 클래스를 추가하고 Install 메서드를 재정의 할 수 있습니다. 그런 다음 Context.Parameters 속성의 명령 줄 매개 변수에 액세스 할 수 있습니다.

[RunInstaller(true)] 
public class CustomInstaller : System.Configuration.Install.Installer 
{ 
    public override void Install(IDictionary stateSaver) 
    { 
     base.Install(stateSaver); 
     //this.Context.Parameters contains the command line arguments 
    } 
} 

자세한 내용은 documentation에서 찾을 수 있습니다.

0

그것은 당신이 "명령 줄 인수"에 의해 무슨 뜻인지 따라 다르지만 내가 좋아하는 뭔가를 같이, 당신은 속성 값을 의미 가정

/I [당신의 MSI 경로] MYPROP1 =이 MYPROP2에 msiexec = THAT

그리고 MYPROP1 및 MYPROP2 값을 사용자 지정 작업에 전달하려고합니다.

실행 파일을 맞춤 동작으로 추가하기 만하면됩니다. 사용자 지정 동작의 속성 창에는 인수 설정이 있습니다. [MYPROP2]

이는 실제 값에 설치시 해결하고 명령 줄로 전달 될 것이다

[MYPROP1] : 당신의 값이 있음을 제공합니다. 명령 행에서 볼 수있는 형식을 사용하십시오 (예 :

/one = [MYPROP1]/two = [MYPROP2] 등).

Everyone 설치에서 사용자 지정 작업으로 응용 프로그램을 실행하는 것이 항상 유용하지는 않습니다. 주로 로컬 시스템 계정으로 실행되므로 설치 사용자의 폴더, 일부 데이터베이스, 네트워크 등에 액세스 할 수 없기 때문입니다 . 무언가를 구성하는 경우 앱을 처음 실행할 때 실행하는 것이 더 좋으므로 일반 대화 형 사용자 컨텍스트에서 실행됩니다.