WorkaHolic

ClickOnce 확장 - 삭제메뉴 만들기

2008. 5. 28. 18:03
반응형

ClickOnce 확장 - 삭제메뉴 생성


지난 두달 정말 다사다난한 기간이였다...

안팎으로 한꺼번에 많은 일들이 생겨 정신이 한개도 없는...

오랜만에 블로그를 쓰게되는군...

오늘 내용은 저번에도 언급했던 ClickOnce 삭제 메뉴 맨들기~

ClickOnce 로 설치된 프로그램을 제어판의 프로그램추가/삭제에서 하지 말고 메뉴를 강제로 만들어서 쓰자...뭐 이런 내용...

코딩은 간단하다. 바로가기 만들기의 소스에 약간의 코딩을 추가하여 시작/프로그램의 메뉴에 삭제실행 파일을 만들고 그 안에 stream 으로 삭제명령을 적는다는 이런 내용...

프로그램추가/삭제 때 내부적으로 사용되는 명령을 강제로 실행해주는 것 뿐이다.


바로가기때와 마찬가지로

private void CheckForShortcut()

함수안에 추가만 해주도록 하자.


1. 삭제실행파일 존재여부 체크

// 삭제실행파일 경로

string delFilePath = System.Environment.GetFolderPath(

  Environment.SpecialFolder.StartMenu)

  + @"\Programs\" + companyName + "\Uninstall.bat";

          if (!System.IO.File.Exists(delFilePath))

          {

                     // 파일이 없으면 맨들어주는거다!!

 

2. 삭제실행파일 껍데기 만들기(Uninstall.bat)

StreamReader reader = new StreamReader(startDir);
 string result = reader.ReadToEnd();
      reader.Close();

      result = result.Substring(result.IndexOf("#") + 1);
      Encoding _encoding = Encoding.GetEncoding(949);
      StreamWriter writer = new StreamWriter(delFilePath
, false, _encoding);

 

3. 실제 명령줄 write 하기

// CommandLine 숨기고

 writer.WriteLine("@echo off");

// 삭제명령어 쓰고
 writer.WriteLine(@"start %windir%\system32\rundll32”
  +.exe dfshim.dll,ShArpMaintain “+result);

// 빠져나오고
 writer.WriteLine(@"exit");
 writer.Close();

 

여기다가 추가로 바탕화면에 생성된 파로가기파일을 del 로 삭제해주고 bat 파일도 del 로 삭제해주는걸 넣어주는 쎈스~

 

이렇게 해서 만들어진것은 다음 그림과 같다.

뭐 파일명은 원하는대로 맨들고~

 

파일을 클릭하면 삭제confirm 창이 뜨고 삭제가 수행된다.

오...깔끕하게 삭제...물론 바탕화면 파일도 삭제...

내가 직접 탐색기에서 폴더 삭제했다 의심하지 말기를...--;;

이상으로 ClickOnce 확장은 접어두도록 해야겠다.

이제 TFS 프로그래밍에 대한 이야기를 해야하기 때문에...

반응형