0

exe ​​파일을 클릭하여 실행하면 완벽하게 실행되는 주요 업그레이드 (Installscript msi)를 만들었습니다.콘솔 응용 프로그램에서 InstallScript 프로젝트를 실행하는 방법

나는 같은 exe를 실행하지만 설치 후 이번에는 새로운 버전과 함께 이전 버전이 프로그램 추가/제거 목록에 표시되는 콘솔 응용 프로그램을 만들고 있습니다.

모든 구성 요소가 올바르게 설치하지만 콘솔 응용 프로그램에서 EXE 파일을 실행하는 경우에만

이유는 이전 버전까지 보여주고있다? 실제 설치는 콘솔 응용 프로그램을 다시 호출지고 다음 시작할 때 나는 EULA 등, 설치 프로그램이 열립니다 콘솔 응용 프로그램에서와 접수 후 EXE를 호출 할 때 내가 관찰 한

// Enter the executable to run, including the complete path 
start.FileName = @"folder1\MyISProj.exe"; 
// Do you want to show a console window? 
start.CreateNoWindow = true; 
start.WindowStyle = ProcessWindowStyle.Minimized; 

start.UseShellExecute = false; 
start.RedirectStandardOutput = true; 

// Run the external process & wait for it to finish 
using (Process proc = Process.Start(start)) 
{ 
    //proc.WaitForExit(); 
    proc.Close(); 
} 

한가지 더있다. 이 동작을 멈추기 위해 콘솔 응용 프로그램을 한 번만 실행하기 위해 Main 메서드에서 검사를 추가했습니다. 이제 설치 프로그램이 콘솔 응용 프로그램을 다시 실행하려고하면 프로세스가 이미 실행 중인지 여부를 확인합니다. 예이면 콘솔 응용 프로그램에서 반환됩니다.

Process[] result = Process.GetProcesses(); 

foreach (var item in result) 
{ 
    if (item.ProcessName.Contains("MyISProj")) 
    { 

     Console.WriteLine("There is already a instance running."); 
     System.Environment.Exit(0); 
     return; 
    } 

} 

하지만이 또한 추가/제거 프로그램 목록을 수행 한 후

두 가지 항목을 보여줍니다. 이 문제를 해결하기 위해해야 ​​할 일은 무엇입니까? 나는이 문제에 붙어있다.

저는 InstallShield 2011 Professional Edition을 사용하여 exe 파일을 만듭니다.

답변

0

두 가지 문제가 있습니다. 첫째, 프로그램 추가/제거의 두 항목에서 알 수 있듯이 유효한 주요 업그레이드가 없다는 것입니다. ProductCode를 변경했지만 업그레이드 테이블 항목 (FindRelatedProducts 및 RemoveExistingProducts에 의해 실행 됨)이 이전 설치를 감지하지 못하고 업그레이드의 일부로 제거하지 않습니다. 인터넷 검색에서 찾을 수있는 여러 가지 원인이 있습니다.

둘째는 InstallScript MSI 자동 설치가 뒷면에있는 고질적 인 문제라는 것입니다. 응답 파일을 생성 한 다음 응답 파일을 실행해야합니다. 이것은 매우 부서지기 쉽고 지원하기에 훨씬 간단한 이야기 ​​인 Basic MSI로 머무를 것을 제안하는 큰 이유입니다. (msiexec/I foo.msi/qn REBOOT = R 및 3010 종료 코드가 재부팅이 필요하고 억제되었다는 것을 확인하십시오.)

+0

MsiGetProperty (ISMSI_HANDLE, "ISACTIONPROP1", szOldProductValue, nProSize); 기존의 기존 제품 코드를 반환합니다. 그것을 클릭하여 "exe"를 실행할 때 잘 작동하지만 콘솔 응용 프로그램에서 동일한 exe를 실행할 때 문제가 발생합니다. 내 것은 조용한 설치가 아닙니다. 코드에 표시된대로 exe를 호출하고 있습니다. msiexec을 사용할 수 없으므로 msi가 아닌 exe입니다. – PSR

관련 문제