2017-02-02 6 views
0

저는 C# WPF Prism MVVM 모듈러 응용 프로그램의 Windows 설치 프로젝트 (ISM)를 만듭니다. InstallShield 2016 Premier (21 일 평가판)를 사용합니다. 내 C# WPF 응용 프로그램에서 IsFirstRunAfterInstallation이라는 Properties.Settings.Default 플래그가 있습니다. 이 플래그의 유형은 bool입니다. 설치 과정에서이 플래그 을 true로 설정해야합니다.. 응용 프로그램이 처음 실행될 때 설치 완료 후, IsFirstRunAfterInstallation 플래그로 선택되어 다음 : IsFirstRunAfterInstallation 플래그가 트루 전자의 경우 InstallShield 2016 Premier Edition (21 일 평가판)에서이 응용 프로그램 설치 중에 응용 프로그램 코드를 실행하는 방법은 무엇입니까?

if (My_assembly_name.Properties.Settings.Default.IsFirstRunAfterInstallation) 
{ 
    // do some actions here that must be done when application runs first time after its installation. 
    . . . . . . . . . . . . . . . 
    My_assembly_name.Properties.Settings.Default.IsFirstRunAfterInstallation = false; 
    My_assembly_name.Properties.Settings.Default.Save(); 
} 

그리고

이 필요한 일부 C# 코드가 수행 할 수있는 응용 프로그램이 실행될 때를 첫 번째 시간이 실행됩니다 (위에서 볼 수 있듯이). 고객 컴퓨터 내 응용 프로그램의 각 설치시

My_assembly_name.Properties.Settings.Default.IsFirstRunAfterInstallation = true; 
My_assembly_name.Properties.Settings.Default.Save(); 

및 응용 프로그램을 처음 실행할 때 설치 후 체크 : 그래서 IsFirstRunAfterInstallation 플래그가 folowing처럼 사실로 설정되어 있어야합니다. 그래서 나는 다음과 같은 질문을 가지고 있습니다 : InstallShield 2016 Premier Edition (21 일 시험판)을 사용하여 응용 프로그램을 설치하는 동안 응용 프로그램 코드를 실행하는 방법은 무엇입니까?

답변

1

응용 프로그램의 모든 버전에 IsFirstRunAfterInstallation (기본값)이 필요하다면 installshield를 사용하여 아무 것도 할 필요가 없다고 생각합니다.

1- IsFirstRunAfterInstallation (응용 프로그램 속성에서) 기본값을 true로 설정합니다.

2 모든 릴리스의 응용 프로그램 버전 번호를 변경하십시오 (응용 프로그램 속성 또는 AssemblyInfo.cs 클래스에서 직접 변경).

응용 프로그램의 경우 새 버전마다 % AppData % \ Local \\\\에 별도의 디렉토리가 만들어지고 설정이 user.config에 복사/저장되므로 설치 후 응용 프로그램의 첫 번째 실행/실행에 항상 적용됩니다.

위의 방법을 사용하면 응용 프로그램이 버전 별 설정을 자체적으로 유지 관리하므로 사용자 정의/추가 작업을 수행 할 필요가 없습니다. 그러나 사용 가능한 대체 방법이 있습니다. 1- 별도의 exe (콘솔 응용 프로그램) 또는 dll 그것을 맞춤 동작으로 사용하십시오. 또는 2의 installshiled에서 응용 프로그램을 시작하고 뭔가/IsFirstLaunch 명령 줄 매개 변수를 전달합니다의 installshiled 사용자 지정 작업에서 전달 된 사실

매개 변수는 기본 응용 프로그램에서 수신 할 수 있습니다 : 그것은 가치가

private static void Main() 
{ 
string[] args = Environment.GetCommandLineArgs(); 
//Process args here 
} 
    OR 
private static void Main(string [] args) 
{ 
//Process args here. 
} 
+0

하는 것으로 시나리오를 업그레이드 고려를 . 이 "최초 실행"코드는 업그레이드 후 다시 실행해야 할 수도 있으며, 설치가 재설정하지 않으면 앱이이를 다른 방식으로 결정해야합니다. 아마도 부울 대신 "첫 실행"코드가 실행 된 마지막 버전을 저장하십시오. –

+0

동일한 컴퓨터에 같은 응용 프로그램 버전을 다시 설치 (재설치) 할 경우 IsFirstRunAfterInstallation을 true로 설정해야합니다. 가능하다면 Michael Urman, 도와주세요. – Prohor

+0

IsFirstRunAfterInstallation 기본값을 true로 설정하면 모든 릴리스 (배포)마다 응용 프로그램 버전이 변경 될 때 업그레이드 후 첫 번째 실행시 항상 적용됩니다. @MichaelUrman이 말했듯이 플래그를 false로 설정하기 전에 응용 프로그램의 현재 버전을 파일 시스템/txt 파일에 저장할 수도 있습니다. – Munawar