2009-08-06 6 views
0

내 응용 프로그램 용 VS 설치 프로젝트를 만들었습니다. 그것은 사용자 정의 위치에 응용 프로그램을 설치하고 시작 메뉴에 몇 가지 바로 가기를 만듭니다. 또한 응용 프로그램을 제거하는 데 사용할 수있는 항목을 제어판/프로그램 추가/제거에 만듭니다..NET 설치 프로젝트 및 제거 프로그램

내 앱을 제거 할 수있는 시작 메뉴 항목 (설정에 의해 생성 된 다른 항목 옆에 있음)을 만드는 방법이 있는지 알고 싶습니다.

지금까지 한 가지 해결책을 찾았지만 사용하기가 어려웠습니다. uninstall.bat 파일을 앱 폴더에 배포하고이 파일에 바로 가기를 추가했습니다. *.bat의 내용은 다음과 같다 :이 솔루션에 대해 좋아하지 않는 무엇

@echo off 
msiexec /x {0B02B2AB-12C6-4548-BF90-F754372B0D36} 

내가 내 응용 프로그램의 제품 코드를 업데이트 할 때마다 (내가 VS 같은 내 응용 프로그램 버전을 업데이트 할 때마다 것을하고 있어요 있다는 것입니다 제안) 설치 프로젝트를 빌드하고 올바른 새 제품 코드를 입력하기 전에이 파일을 수동으로 편집해야합니다.

누군가가 앱에 제거 프로그램을 추가하는 간단한 방법을 알고 있습니까?

+0

http://robmensching.com/blog/posts/2007/4/27/How-to-create-an-uninstall-shortcut-and-pass-all- 내 생각 엔 –

답변

1

.bat 파일을 편집하여 인수를 허용 할 수 있습니다.

@echo off 
msiexec /x %1 

설치 프로젝트에서 바로 가기를 정의 할 때 [ProductCode] 속성을 인수로 추가하십시오.

+0

. 그러나 그 일을하는 더 우아한 방법이 없습니까? 기꺼이 전체'박쥐 '파일을 제거하고 설치 프로그램을 설치 프로젝트에 완전히 남겨 두십시오. – RaYell

+2

그런 경우 대신 WiX를 사용하는 것이 좋습니다. –

1

이 정확한 문제가있었습니다.

  • uninstall.bat 파일을 제공 : 내가 무슨 짓을

    이이었다. 이 파일은 무조건 설치되고
  • 은 설치자에서 사용자 정의 조치를 제공하고, uninstall.bat 파일을 다시 쓰고 올바른 제품 코드를 삽입합니다.

여기에 사용자 지정 작업으로 실행되는 스크립트입니다. uninstall.bat 파일을 다시 쓰고 자체를 삭제합니다.

// CreateUninstaller.js 
// 
// Runs on installation, to create an uninstaller 
// .cmd file in the application folder. This makes it 
// easy to uninstall. 
// 
// Mon, 31 Aug 2009 05:13 
// 

var fso, ts; 
var ForWriting= 2; 
fso = new ActiveXObject("Scripting.FileSystemObject"); 

var parameters = Session.Property("CustomActionData").split("|"); 
var targetDir = parameters[0]; 
var productCode = parameters[1]; 

ts = fso.OpenTextFile(targetDir + "uninstall.cmd", ForWriting, true); 


ts.WriteLine("@echo off"); 
ts.WriteLine("goto START"); 
ts.WriteLine("======================================================="); 
ts.WriteLine(" Uninstall.cmd"); 
ts.WriteBlankLines(1); 
ts.WriteLine(" This is part of MyProduct."); 
ts.WriteBlankLines(1); 
ts.WriteLine(" Run this to uninstall MyProduct"); 
ts.WriteBlankLines(1); 
ts.WriteLine("======================================================="); 
ts.WriteBlankLines(1); 
ts.WriteLine(":START"); 
ts.WriteLine("@REM The uuid is the 'ProductCode' in the Visual Studio setup project"); 
ts.WriteLine("%windir%\\system32\\msiexec /x " + productCode); 
ts.WriteBlankLines(1); 
ts.Close(); 


// all done - try to delete myself. 
try 
{ 
    var scriptName = targetDir + "createUninstaller.js"; 
    if (fso.FileExists(scriptName)) 
    { 
     fso.DeleteFile(scriptName); 
    } 
} 
catch (e2) 
{ 
} 

나는 이것을 WiX로 할 수 있다고 생각하지만, 그것을 배우고 싶지 않았다.

1

또 다른 옵션이 특정 명령 행 인수가 주어진다면, 응용 프로그램 자체에서 제거 할 MSIEXEC를 호출하는 것입니다 - 더 자세히 여기의 예를 참조하십시오, 이런 식으로함으로써 http://endofstream.com/creating-uninstaller-in-a-visual-studio-project/

을 당신은하지 않습니다 제거 할 때 명령 프롬프트를 보도록 강요하십시오.