헬마입니다.

저번에 간단한 스샷으로 올렸던 통합과정을 좀 더 정리해서 머릿속으로 정리가 되어 이렇게 글을 남겨봅니다.

본 제작과정은 MSI 라는 윈도 인스톨러의 관리자 설치기능을 이용한 것입니다. 따라서 관리자 설치기능과 MSP 의 MSI에 대한 통합을 지원하지 않는 패치파일등은 통합을 할 수 없습니다.

* 이 통합과정은 Visual C++ 을 사용하시는 분들을 위주로 하여 테스트 되었습니다. *

준비물
먼저 Visual Studio 2008 Team Suite ISO 파일과 Visual Studio 2008 SP1 ISO 파일을 구합니다.

이번에 제작과정에서는 2가지 모두 한글판을 기준으로 작업하겠습니다.

작업드라이브는 대략 10기가 정도의 여유공간을 준비하시는 것이 편하십니다.

작업드라이브는 D 드라이브, 가상 시디롬 드라이브는 E 드라이브로 가정하여 진행하겠습니다. ^^

- 먼저 D 드라이브에 VS2008SP1KOR 이라는 기준폴더를 생성하고 가상 시디롬 드라이브에 VS2008 ISO 파일을 마운트합니다.
- 이제 작업의 동반자가 될 명령행 프롬프트 창을 열어둡니다. 검은 바탕의 이 화면은 참으로 언제나 요긴한 것 같네요.

통합하기

-
먼저, 가상 시디롬 드라이브로 이동하여 아래와 같은 명령을 입력하여 기준폴더에 VS2008 에 대한 관리자 설치 이미지를 생성합니다.
= msiexec /a vs_setup.msi TARGETDIR=D:\VS2008SP1KOR

그러면 위와 같은 화면이 나타나고 한참 후에 기준 폴더에 관리자 설치이미지가 생성됩니다.  ( 대략 5-10분 소요됩니다 )

- 이젠, 원본 ISO 파일은 필요가 없습니다. Service Pack 1 ISO 파일을 마운트합니다.
= 먼저, MSP 파일을 통합하기전에 간단한 파일 복사 작업을 해야합니다. 서비스팩 1 의 MSP 파일은 관리자 설치이미지에서 특정위치에서 특정 파일을 찾는데, 실제 파일이 그 위치에 있지 않습니다. ㅠㅠ 그래서 그 파일을 찾아서 원하는 위치에 복사해놓아야합니다. 
* copy "d:\vs2008sp1kor\program files\microsoft visual studio 9.0\common7\1042\WcfSvcHost.chm" "d:\vs2008sp1kor\program files\microsoft visual studio 9.0\common7\ide"
* copy "d:\vs2008sp1kor\program files\microsoft visual studio 9.0\common7\1042\WcfTestClient.chm" "d:\vs2008sp1kor\program files\microsoft visual studio 9.0\common7\ide"

= 일단, 통합이 가능한 중요 MSP 파일을 관리자 설치이미지의 vs_setup.msi 파일에 통합시킵니다. ( 각 명령마다 제일 처음 스샷과 같은 화면이 뜨며 진행상황을 안내합니다 )
* msiexec /a d:\vs2008sp1kor\vs_setup.msi /p e:\vs90sp1\vs90sp1-kb945140-x86-kor.msp /L*vx d:\Vs2008sp1kor\vs90sp1-kb945140-x86-kor.log
* msiexec /a d:\vs2008sp1kor\vs_setup.msi /p e:\vs90sp1\vc90sp1-kb947888-x86-kor.msp /L*vx d:\vs2008sp1kor\vc90sp1-kb947888-x86-kor.log
* msiexec /a d:\vs2008sp1kor\vs_Setup.msi /p e:\vs90sp1\vc90sp1-kb948484-x86_x64-kor.msp /L*vx d:\vs2008sp1kor\vc90sp1-948484-x86_x64-kor.log
* msiexec /a d:\vs2008sp1kor\vs_setup.msi /p e:\vs90sp1\vc90sp1-kb948560-x86_IA64-kor.msp /L*vx d:\vs2008sp1kor\vc90sp1-kb948560-x86_IA64-kor.log

= 이제 설치 데이터베이스 파일을 SP1 이 적용된 설치데이터베이스 파일로 교체해야합니다. 그런데, 왠일인지 MSP 파일을 통합하면서 MS 가 SP1 이 적용된 설치데이터베이스 파일을 자동으로 생성해 둔것이 있습니다. 따라서, 이 파일들을 이용합니다.
* d:\vs2008sp1kor\setup\setup.sdb 파일을 열면 중간쯤에 productkey 라는 부분이 있고 이곳에 시디키가 기록되어있습니다. 이 시디키를 다른곳에 적어둡니다.
* copy "d:\vs2008sp1kor\program files\microsoft visual studio 9.0\CSetupMM\*.*" "D:\vs2008sp1kor\setup"

= 닷넷 프레임워크 3.5 서비스팩 1 이 설치될 수 있도록 파일을 교체합니다 .
* WinRAR 등을 이용하여 서비스팩 1 에 동봉된 dotnetfx35.exe 의 압축을 해제합니다. ( 또는 /extract 옵션을 이용하여 해제합니다 )
* 압축을 해제한 닷넷 프레임워크 3.5 서비스팩 1의 설치파일을 dotNetFramework 라는 디렉토리 그대로 d:\vs2008sp1kor\wcu\dotNetFramework 에 덮어씌웁니다
* copy e:\vs90sp1\dotnetfx35langpack_x86ko.exe d:\vs2008sp1kor\wcu\dotnetframework\dotnetfx35\x86
* copy e:\vs90sp1\dotnetfx35langpack_x64ko.exe d:\vs2008sp1kor\wcu\dotnetframework\dotnetfx35\x64

= Visual C++ 2008 SP1 Runtimes 가 설치될 수 있도록 구성합니다.
* md d:\vs2008sp1kor\wcu\VCRuntimes
* copy e:\vs90sp1\vc_ia64runtime.exe D:\vs2008sp1kor\wcu\VCRuntimes
* copy e:\vs90sp1\vc_x64runtime.exe d:\vs2008sp1kor\wcu\VCRuntimes
* copy e:\vs90sp1\vc_x86runtime.exe d:\vs2008sp1kor\wcu\VCRuntimes

= Microsoft SQL Server Database Publishing Wizard 1.3 를 구성합니다. 
*  wcu\SQLPub 라는 폴더에 서비스팩 ISO 에서 SqlPubWizInstaller.exe 파일을 복사합니다. 
=  Microsoft SQL Server 2008 Management Objects 와 SQL Server System CLR Types 를 구성합니다.
* wcu\SMO 라는 폴더를 생성 후 서비스팩 ISO 에서 SharedManagementObjects.msi, SQLSysClrTypes.msi 파일을 복사합니다. 
=  Microsoft SQL Server Compact 3.5 SP1 English 와 Microsoft SQL Server Compact 3.5 SP1 Design Tools English 를 구성합니다. 
* wcu\SSCE 라는 폴더에 SSCERuntime-enu.msi, SSCEVSTools-enu.msi 파일을 덮어씌웁니다.

 = 모든 통합과정이 끝났습니다. 이제 서비스팩 ISO 파일에서 지금까지 통합에 사용한 파일들( MSP, MSI, EXE ) 은 삭제하시고 사용하시면 됩니다.

부족한 재주로 설명하여서 많이 부족합니다. 의문나는 점이 있으면 댓글 달아주시면 답변 드리겠습니다. ^^

댓글을 달아 주세요

  1. 섭잉 2009.08.10 21:27 Address Modify/Delete Reply

    안녕하세요. 몇 가지 궁금증이 있어 글 남깁니다.
    우선 좋은 팁 감사합니다.
    통합하지 않은 WinSDK-KB946729.msp나 VS90sp1-KB945140-X64-KOR.msp 등은
    따로 설치해야 하는 거에요? 두번째꺼는 64비트 전용인가;;

    그리고 통합한 것을 다시 압축, msdn sp1도 포함하여 이미지 파일(iso)로 만들어 사용하려는데 이건 어떻게 하는겁니까?

    그럼 좋은 하루되세요. 덕분에 좋은 정보 얻고 갑니다.

    • BlogIcon 헬마 2009.08.11 20:46 신고 Address Modify/Delete

      네 통합하지 않은 것들은 따로 SP1Installer.exe 를 통해 설치합니다. 즉, 설치과정상으로는 여전히 2번의 설치를 해야하지만 설치 시간은 대폭 줄이는 형태입니다.

      ISO 로 제작하는 것은 MS도구인 cdimage 또는 UltraISO 등을 통해서 ISO파일로 제작하시면 됩니다.

  2. BlogIcon 상현넘™ 2009.09.04 08:23 Address Modify/Delete Reply

    좋은 내용 감사합니다.
    설치시간을 확실히 줄일수 있겠네요..
    통합DVD만들어 놓고 다음 포멧시 한번 해봐야 겠습니다.
    그리고 내용 좀 제 블로그에 퍼가도 될까요??
    출처는 꼭 남기도록 하겠습니다.

  3. BlogIcon 상현넘™ 2009.09.05 09:36 Address Modify/Delete Reply

    안녕하세요!!~~
    또 글을 남기네요..
    위 방법처럼 통합을 하고 설치를 해보았습니다.
    설치 잘되네요^^ 근데 마지막 로그에 보면 Microsoft SQL Server Database Publishing Wizard 1.3 구성 설치에 실패를 했다고 나오네요!!
    그냥 파일 복사만 해 놓으면 되는게 아닌지요??

    그리고 SP1에 있는 사용한 파일들( MSP, MSI, EXE )을 삭제하고 SP1Installer.exe 를 실행시켜 나머지 SP1 파일을 설치하려고 하는데요..
    설치를 시작하면 다음으로 넘어가질 않네요!!
    혹시 SP1 에서 파일 삭제 후 설정을 해줘야 하는 항목이 존재를 하나요??

    시간될때 답변 좀 부탁드립니다^^

    • BlogIcon 헬마 2009.09.06 01:05 신고 Address Modify/Delete

      먼저, 설치로그에 SQL Server 관련 설치가 실패했다고 나오는 것은 비주얼 스튜디오 설치관리자가 정확히 인식하지 못해서 입니다. 제어판에 추가/삭제에 보시면 정확히 설치되어 있는 것을 보실 수 있습니다.

      저는 SP1Installer.exe 를 실행시키면 webDesigner_Core 등 몇가리를 5분정도로 빠르게 설치 후 모든 과정이 종료도비니다. Sp1 에 나머지 파일들의 목록이라던지, 어떻게 진행이 되지 않는지 스샷등으로 혹시 확인할 수 있나요?

    • BlogIcon 헬마 2009.09.06 01:17 신고 Address Modify/Delete

      아래 파일 목록은 제가 통합과정을 끝낸 후 SP1 설치관리자 쪽에 남은 파일 목록입니다. ^^

      D:\VS2008SP1ENU\Extra SP1 Files\vs90sp1\1033
      D:\VS2008SP1ENU\Extra SP1 Files\vs90sp1\1042
      D:\VS2008SP1ENU\Extra SP1 Files\vs90sp1\DHtmlHeader.html
      D:\VS2008SP1ENU\Extra SP1 Files\vs90sp1\DTE90SP1-KB950425-ENU.msp
      D:\VS2008SP1ENU\Extra SP1 Files\vs90sp1\header.bmp
      D:\VS2008SP1ENU\Extra SP1 Files\vs90sp1\list.txt
      D:\VS2008SP1ENU\Extra SP1 Files\vs90sp1\ParameterInfo.xml
      D:\VS2008SP1ENU\Extra SP1 Files\vs90sp1\SPInstaller.exe
      D:\VS2008SP1ENU\Extra SP1 Files\vs90sp1\SPInstallerEngine.dll
      D:\VS2008SP1ENU\Extra SP1 Files\vs90sp1\SPInstallerUi.dll
      D:\VS2008SP1ENU\Extra SP1 Files\vs90sp1\SqlPubWizInstaller.exe
      D:\VS2008SP1ENU\Extra SP1 Files\vs90sp1\sqmapi.dll
      D:\VS2008SP1ENU\Extra SP1 Files\vs90sp1\TEMP
      D:\VS2008SP1ENU\Extra SP1 Files\vs90sp1\UiInfo.xml
      D:\VS2008SP1ENU\Extra SP1 Files\vs90sp1\VS90sp1-KB945140-IA64-ENU.msp
      D:\VS2008SP1ENU\Extra SP1 Files\vs90sp1\VS90sp1-KB945140-X64-ENU.msp
      D:\VS2008SP1ENU\Extra SP1 Files\vs90sp1\vstor30sp1-KB949258-x86.msp
      D:\VS2008SP1ENU\Extra SP1 Files\vs90sp1\watermark.bmp
      D:\VS2008SP1ENU\Extra SP1 Files\vs90sp1\WebDesignerCore_KB945140.msp
      D:\VS2008SP1ENU\Extra SP1 Files\vs90sp1\WebDesignerCore_KB950278.msp
      D:\VS2008SP1ENU\Extra SP1 Files\vs90sp1\WinSDK-KB946729.msp
      D:\VS2008SP1ENU\Extra SP1 Files\vs90sp1\WinSDK-KB946733-enu.msp
      D:\VS2008SP1ENU\Extra SP1 Files\vs90sp1\WinSDK-KB950424.msp
      D:\VS2008SP1ENU\Extra SP1 Files\vs90sp1\1033\eula.rtf
      D:\VS2008SP1ENU\Extra SP1 Files\vs90sp1\1033\LocalizedData.xml
      D:\VS2008SP1ENU\Extra SP1 Files\vs90sp1\1033\SPInstallerResources.dll
      D:\VS2008SP1ENU\Extra SP1 Files\vs90sp1\1042\eula.rtf
      D:\VS2008SP1ENU\Extra SP1 Files\vs90sp1\1042\SPInstallerResources.dll
      D:\VS2008SP1ENU\Extra SP1 Files\vs90sp1\TEMP\ParameterInfo.xml

  4. BlogIcon 상현넘™ 2009.09.10 20:28 신고 Address Modify/Delete Reply

    안녕하세요!!
    답변 감사합니다. SQL 부분은 말씀대로 설치가 되어 있네요^^

    그리고 통합 후 SP1 폴더에서 통합한 파일을 제거한 목록은 아래 이미지와 같습니다.
    https://t1.daumcdn.net/cfile/tistory/1507B8234AA8E14C16

    또한 SPInstaller.exe 를 실행 시키면 영향을 받는 제품 목록이 나오고 다음 버튼을 누르고 동의를 하고 다시 다음으로 가면 아래와 같은 이미지처럼 나옵니다.
    https://t1.daumcdn.net/cfile/tistory/1178A01F4AA8E1D162

    위 이미지를 보면 다운로드 하는데 처음에는 2시간이 걸린다고 하더니 조금 지나니 한시간30분이 걸린다고 하네요..
    예전에는 아에 다운로드도 안하고 10분이 넘도록 지나도 아무 반응이 없었는데요!!
    뭐가 문제일까요??

    • BlogIcon 헬마 2009.09.10 21:14 신고 Address Modify/Delete

      음.. 받으신 SP1 설치관리자가 웹 설치관리자가 아닐까 합니. ^^

      제 네이트온(jgh0721@nate.com) 으로 연락주시면 제가 가진 SP1 부분을 압축하여 드리곘습니다. ^^


헬마입니다.

저는 상당히 윈도를 자주 재설치하는편입니다.

백신등을 쓰지 않는 관계로 OS가 조금만 이상하다 싶으면 재설치하는 일이 일상다반사인데요.

회사내에서도 OS재설치 자주하기로 유명할 정도입니다. ^^

그러다보니 비주얼 스튜디오 2008 을 설치하고 다시 서비스팩 1을 설치해야하는데 이 서비스팩 설치 시간이 스튜디오를 설치하는 시간과 거의 비슷한 지경입니다.

해서 비주얼 스듀디오 2005 때처럼 어떻게든 통합을 해보려 했지만, 비쥬얼 스튜디오 제작팀내에서도 완전 통합설치는 지원하지 않는다는 답변만 걸려있더군요.

그래도, 일단, 최소한 설치시간이 제일 오래 걸리는 닷넷 프레임워크 3.5SP1 이라도 같이 설치되게 해보자 라는 심정으로 노력하여 어느정도 성과를 거두었습니다 ㅠㅠ

일단 VC++ 을 서비스팩 1 이 설치된 상태로 설치하는데으는 성공한 듯 하네요.


VM웨어에 설치하는 모습입니다. 설치떄부터 SP1 이 설치되고 있지요. 위에 나타나는 배너등은 이미지라서 수정하지 않았습니다. ^^ 수정할 능력도 없어요 ^^

사실 이 통합작업을 수행한 또다른 이유는 이렇게 하면 SP1 이후로 발표된 수백메가나 되는 여러개의 핫픽스들도 통합할 수 있기때문입니다.

몇가지 작업나 테스트를 해본 후에 이미지 또는 제작 방법을 공개하겠습니다. ^^

댓글을 달아 주세요


헬마입니다.

오늘 당직이라 회사에 나와서 멀뚱히 있다가 , 갑자기 EmEditor 용 플러그인이 만들고 싶어지더군요.

그래서 문득 생각난 것이 사전 플러그인입니다.

커서위치의 단어를 인식해서 사전 풀이를 보여주면 괜찮을 듯 싶더군요.

나름 텍스트 문서도 번역하는 일이 많은데 그때마다 사전 찾는것이 굉장히 귀찮으니까요. ㅠㅠ

그래서 EmEditor 플러그인 도움말을 보니 그리 어렵지 않은듯 싶더군요.

처음에는 Naver OpenAPI 를 염두에 두고 커서 위치에서 툴팁으로 보여주려 했습니다.

하지만, 이상하게 Naver Open API 키 값도 정상적으로 받았음에도 불구하고 결과값이 제대로 나오지 않는데다 7월 31일부로 사전의 Open API가 종료된다는 소식에 꿈을 접었습니다.

HTML 을 파싱해서 툴팁으로 보여주려했는데 스크립트 떡칠 HTML이라 파싱할 엄두도 안나더군요.

몇시간을 고민하다가 Outline 플러그인처럼 일단 옆에다 보여주자 해서 이렇게 대충 가닥은 잡히게 되었네요.

며칠 좀 다듬으면 꽤 쓸만해질듯 합니다. ^^


댓글을 달아 주세요

  1. BlogIcon 헬마 2009.07.25 20:51 신고 Address Modify/Delete Reply

    이거 아이콘 제작해주실분 찾아요~~ ㅠㅠ 제가 UI 들어가는건 완전 꽝이라..

    누가 이쁘게 제작해주시길 ... (__)

헬마입니다.

얼마전부터 프로젝트에 사용할 사칙연산 계산기를 이리저리 찾아보다가 인터넷에서 적당한 넘을 하나 구했는데 기능이 많이 부족하더군요.

계산기 원소느는 구한지 몇개월이 지난거라 어디서 받았는지도 기억이 안나네요.. 원저자분이 누구셨는지 참으로 죄송합니다.

그래서 이리저리 뜯어보고 기능을 싸그리 고쳤습니다.

원 버전은 사칙연산, 연산자 우선순위, 괄호 지원까지 였는데 변수 라는 개념이나 기타 등등 도입해봤습니다.

그런데 만들어놓고 보니 코드가 좀 난잡해진거 같아서 코드 최적화랄까 기능 건의 라던가 필요할거 같아서 테스트 용으로 올려봅니다. ^^

간단한 사용법

1. 한번에 여러문장을 계산할 수 있으며 각 문장의 끝은 ; 로 구분하며, 이전문장에 변수에 값을 대입하면 다음 문장에서 그 변수의 값을 꺼내사용할 수 있습니다.
2. 변수의 값들은 Clear~ 함수를 사용하기전까지 유지됩니다.
3. 변수에 숫자의 벡터를 넣어 계산할 수 있습니다.

좀 더 빠르게, 최적화 방안이라던가, 기능 건의 있으면 댓글 달아주세요 ^^ 아직 만들다 만거라서 부족한 점이 많습니다.

#include "Calc.h"

int main( int argc, wchar_t* argv[] )
{
    CCalculator ccalc;
    // 값을 계산하여 a 라는 변수에 저장하고, 결과를 반환합니다. 
    vecVariables result = ccalc.GetResult( ccalc.GetPostfixExp( "a = 3*4 + (2+3);" ) );

    // c 라는 변수를 계산기 내에 설정합니다. 
    vecVariables vecTemp;
    vecTemp.push_back( 2.3 );
    vecTemp.push_back( 3.3 );
    ccalc.SetVariable( "c", vecTemp );

    // 변수 a 와 c 를 더한 결과를 반환합니다. 
    result = ccalc.GetResult( ccalc.GetPostfixExp( "a + c;" ) );

    return 0;
}

댓글을 달아 주세요

  1. BlogIcon 브레아 2009.07.17 21:33 신고 Address Modify/Delete Reply

    헬마님~ 헬마님의 Winrar ++ 리팩버전 잘 이용하고있었는데, 요세 usb로 윈도우 다시깔기를 연습하면서
    날려먹었는데, 헬마님 홈페이지에없어졋네요. 혹시 예전꺼 백업한거있으시면 보내주시면 고맙겠습니다.
    메일 주소는 eroneko@naver.com 입니다.


헬마입니다.

최근에 VMware 로 원격 디버깅 하는 법을 올렸는데

XP 의 경우에는 중간에 또 하나 경고창이 뜨더군요. 그에 대한 보충 글을 올립니다.

XP 의 경우에는 F6 을 눌러 디버깅을 시작하면 아래 화면처럼 경고가 뜹니다. 자세히 읽어보면 로컬 계정으로 로그인이 안대고 게스트 계정으로 인증대서 디버깅 권한이 없다는 말입니다. 로컬 보안을 고치라는군요.



고쳐야 디버깅을 할 수 있다는데 고쳐야겠지요.
gpedit.msc 를 띄웁니다.
아래 화면 처럼 로컬 보안 정책을 수정한 후에 재부팅하고 다시 시도하시면 됩니다.


그럼 편안한 디버깅 샐활하시길.. ^^

댓글을 달아 주세요

  1. navii 2009.07.26 19:45 Address Modify/Delete Reply

    좋은 글 감사합니다 ^^

  2. rdbe 2009.11.10 10:30 Address Modify/Delete Reply

    좋은 정보 감사합니다... 많은 도움 될것 같습니다.


  Visual Studio 는 msvsmon.exe 라는 원격 디버거 모니터 프로그램을 통해 원격 디버깅을 지원합니다. 하지만, 이를 VMWare 에 사용하려면 네트워크를 설정하거나, 공유 폴더를 설정하고 파일을 복사하는등 디버깅 한번 할때마다 이리저리 작업이 까다로운 것도 사실입니다. 그래서인지, 최근 VMWare 6.X 버전부터 Visual Studio IDE 에 통합되어 편리한 디버깅 기능을 지원합니다.
  최근까지는 전 원격 디버깅을 쓸 일이 없었습니다. 원격 디버깅이 약간 느리다는 문제점도 있고, 속편하게 VMWare 에 Visual Studio 를 설치한 후에 소스코드를 불러서 거기서 직접 디버깅을 했었지요. 그런데, 최근에 이것이 불가능한 일이 생겼습니다. 저의 작업환경은 VS 2008 SP1 인데 VMWare 는 윈도 2000 이었습니다. 윈도 2000은 VS 2008 이 설치가 되지않습니다. ㅠㅠ 결국, 저도 이제 원격 디버깅의 세계에 접어들어야할 관문이 다가온 것 이지요. 그래서 처음에 msvsmon.exe 를 이용해서 직접 원격디버깅을 하려고 자료를 찾았는데 여간 까다로운게 아니었습니다.

 그나마 제일 알아보기 쉽게 설명된 문서가 http://dbrureo.springnote.com/pages/737574/attachments/742500 이 파일이었습니다. 하지만, 역시 까다롭습니다. 그래서 결국 VMWare 가 VS IDE 에 붙어서 디버깅을 지원한다는 것을 생각해내고 이를 이용해보고자 했습니다.

 준비물 :
  - Visual Studio ( 저는 Visual Studio 2008 SP1 을 사용합니다 )
  - VMWare 6.X ( VMWare 6.5.2 를 사용했습니다 )
  - 디버깅할 Guest OS ( 비스타 x86 SP2 를 이용했습니다 )
  - Remote Debugger ( Visual Studio 설치할 떄 옵션으로 미리 설치하거나, 설치 DVD에서 찾을 수 있습니다. )
   - 기본으로 설치되면 C:\Program Files\Microsoft Visual Studio X.0\Common7\IDE\Remote Debugger 에 있습니다.

 준비사항 -
  - Host OS 의 계정 / 비번을 똑같게 Guest OS 에 설정해야합니다.
   즉, Host OS 에 현재 A 라는 계정에 B 라는 비밀번호를 통해 로그인되어있다면, 디버깅하려는 Guest OS 에도 A 라는 계정이 있고 B 라는 비밀번호를 통해 로그인할 수 있어야합니다. ( 자동로그인 설정해두면 편합니다 ).

  - Host OS 의 방화벽 설정, XP 이상이라면 첫 시도할 때 VS 쪽에서 방화벽 설정을 점검하고 자동으로 수정해줍니다. 2000 이라면 VS 도움말을 참조해서 DCOM 과 TCPIP 포트를 일부 허용해주시면 됩니다.
  - Guest OS 의 방화벽은 자동으로 설정됩니다. 꺼두면 조금이나마 빨라지는것 같습니다.


 VMWare Options 설정

  - VS 를 실행해서 VMware - Options 항목을 엽니다.
  - Live Debugging in VM - General 항목을 설정합니다.
   - Virtual Machine = 디버깅하려는 Guest OS 를 지정합니다.
   - Remote Debug Monitor Path = 위에서 언급한 경로에 있는 msvsmon.exe 를 찾아 설정합니다. Guest OS 가 64비트라면 x64 의 것을, 32비트라면 x86 의 파일을 선택합니다.
   - Guest Login Credentials = Guest OS 에 로그인하기 위해 필요한 계정 정보를 입력합니다. 앞서 언급한대로 Host OS 의 로그인정보와 일치해야합니다. 입력하지 않으면 첫 디버깅시도때 인증창이 뜹니다.
   - Guest Command = 파일을 복사한 후 실행할 명령 인자입니다. 기본 사항은 프로젝트의 설정을 이용하는 것이고 이곳에서 따로 설정할 수도 있습니다.
   - Shared Folders = 기본으로 VMware 가 복사해주는 폴더 대신 직접 지정할 수 있습니다. 공백으로 비워둬도 됩니다.

 자, 이제 설정이 끝났으니 F6 을 눌러, 디버깅을 시작해봅니다. 

  F6 를 누르면 VMWare 에 해당 Guest OS 가 시작되지 않았다면 자동으로 시작되고, 이미 시작되어 있다면 Msvsmon.exe 와 디버깅 파일들을 네트워크로 복사해서 실행하는 작업이 시작됩니다.


위의 화면은 처음 F6 을 누르면 나타납니다.

  이 화면은 로그인 작업 전후로 나타나는데요. 로그인이 자동으로 되지 않았다면 직접 로그인하고 로그인 작업이 끝났다면 확인을 누르시면 됩니다. 이것 때문에 자동 로그인으로 설정해두시면 편합니다. 아니면 Guest OS 를 미리 부팅해서 로그인까지 끝내두면 여기서 확인만 누르시면 됩니다.


  VMWare 가 자동으로 Msvsmon.exe 를 복사하면서 실행합니다. Msvsmon.exe 는 실행된 OS의 방화벽 설정을 확인하고 문제가 있다면 위와 같은 창을 띄워 자동으로 수정할 기회를 줍니다. 어차피 가상 OS 니까 편하게 3번째 것을 선택하시면 됩니다. 이 확인창은 Host OS 에 대해서도 동일하게 나타날 수 있습니다. 역시 3번째 것을 선택하면 됩니다. 네트워크 쪽을 잘 모르는데 Host OS 쪽에서 2번째 것을 선택하니 원격 디버깅이 되지 않더군요. ㅠㅠ



  위의 화면은 뭔가 문제가 있어서 원격 디버깅이 실패하면 나타나는 화면입니다. 가끔 정상인데도 나타나는 경우가 있습니다. 이떄 예를 누르면 되기도 합니다. 주로, Host OS 와 Guest OS 의 계정 일치 문제가 제일 많았습니다.


  위의 화면은 원격으로 Host OS 의 VS 에서 작성한 프로젝트가 실행된 화면입니다. 예제로 간단한 시작 프로젝트를 실행해봤습니다.

 위의 화면은 VMWare 가 실제로 네트워크로 복사한 경로입니다. 자동으로 Shared Folders 를 설정하고 원격 디버거 모니터와 프로젝트의 Debug 또는 Release 폴더를 통쨰로 복사한 후 실행해줍니다. 만약 프로젝트가 네트워크 경로에서 실행되는 것을 지원하지 않는다면 다른 우회책을 사용하셔야합니다. ^^

 마지막으로, Guest OS 에서 파일 열기 를 눌러 중단점을 설정한 화면입니다. 보시는 바와 같이 Host OS 쪽에서 정상적으로 중단점이 설정되고 호출 스택등도 문제 없이 확인이 가능합니다.

- 역시 날림 도움글인데 조금이나마 이글로 도움이 되었으면 좋겠습니다. ( ..)( '')//

댓글을 달아 주세요

  1. BlogIcon 김기원 2009.10.28 10:07 Address Modify/Delete Reply

    퍼갈께요... 감사합니다.


헬마입니다.

이것도 이번에 프로젝트 중에 만든겁니다.

기능은 문자열간에 인코딩을 편하게 좀 바꿔보자가 만들었습니다.

내장 DB로 주로 SQLite 를 사용하거나, 또는 플렉스 라는 넘이 UTF8만 준다더군요.

그래서 UTF8 변환할 일이 좀 많아져서 만들었네요.

간단한 사용법


// ANSI, 또는 UNICODE 에서 UTF8 로 변환하기 
std::string strText;
std::wstring strTextW;

CT2U8(strText).GetUTF8();
CT2U8(strTextW).GetUTF8();

// UTF8 에서 ANSI, UNICODE 로 변환
std::string strText8;

CU8T2(strText8).GetUTF16();
CU8T2(strText8).GetMBCS();

// GetUTF16 , GetMBCS 함수는 CT2U8, CU8T2 클래스 모두에 선언되어 있으니 편할 때 아무거나 선언해서 사용하시면 됩니다. 
// 오히려 전 만들어놓고 보니 ANSI < - > UNICODE 변환에 더 많이 사용하게 되네요. ^^




댓글을 달아 주세요

  1. NCC 2009.07.01 10:46 Address Modify/Delete Reply

    참고 하겠습니다. 좋은자료 감사합니다.

  2. BlogIcon 크키 2010.04.01 14:29 Address Modify/Delete Reply

    굿!잡! 입니다.
    ^^ 잘쓰겠습니다.

  3. ㅁㄴㅇㄹ 2012.08.23 20:47 Address Modify/Delete Reply

    Util에서 isAlphabet가 잘못된 것 같네요.

    for문을 돌릴때 isalpha() 이면 return true를 하는게 아니라
    for문을 돌리는 와중에 !isalpha() 이면, 즉 캐릭터 하나라도 alpha가 아니면 return false를 하고 for문 바깥 마지막에 return true를 해야 std::wstring 또는 std::string 전체에 대한 isalpha 검사가 될 듯 싶습니다

  4. a 2012.12.05 14:28 Address Modify/Delete Reply

    1. DeletePtr, DeletePtrA 함수는 의미가 없습니다. delete나 delete[]연산 안에 이미 nullptr 검사 루틴이 있기 때문이고
    2. 영문 윈도 등에서는 Korean_Korea 로캘을 찾지 못해 생성자에서 예외가 던져집니다.
    3. 복사 생성자도 제대로 정의되어있지 않는 것은 물론이고, 문자열을 새로 대입할 때 다른 모든 멤버도 똑같이 초기화를 다시 해 주어야 합니다.
    4. 심지어 UTF8에서 Ansi, Unicode로 변환하는 클래스는 제대로 짜여져있지도 않습니다.
    5. isAlphabet 잘못된 건 윗 분이 지적해주셨으니 패스

    혹시나 이 코드 가져다 쓰실 분들에게 참고가 되라고 남깁니다.


헬마입니다.

비주얼 스튜디오 2008 의 새로운 핫픽스들이 나왔습니다.

무슨 C++ 관련 핫픽스는 죄다 300메가쯤 하는군요. 이것들은 툭하면 핫픽스가 C++ 전체 헤더 수정인 모양입니다. ㅠㅠ

이거 무인설치로 엮어서 하나하나 설치해도 엄청걸리는 판국인데 ㄷㄷ

300메가짜리 핫픽스만 6-7개쯤 되는거 같네요..

KB958314

VC 2008: Using MFC to write an shell extension hangs explorer.exe


https://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=19101

KB956420

VC++ 2008: CRT 9.0 x64 strncpy access violation

https://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=19141

KB970510

QFE: .NET Framework 3.5 SP1 breaks type verification

https://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=19242

KB970449

Uploading MSI package
For DevDiv Servicing 665113
Unit Tests Never Complete - VSTestHost Hangs at 100% CPU


https://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=19617

이건 비주얼 스튜디오 2005의 핫픽스 입니다.

KB841816

Forward Port request for KB 841816 to VS2005 SP1 ( The Atl71.dll file causes a memory leak in the AtlAxWindowProc class  )

https://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=19089

댓글을 달아 주세요


헬마입니다.

오래만에 C++ 클래스 하나 올려봅니다. 사실은 Syntax 구문강조 기능 넣어서 적용되나 보려고.. ㄷㄷ

이번에 회사에서 프로젝트 하면서 간단하게 만들어본 로그 작석용 클래스 입니다.

정확히는 ACE 프레임워크에 있던 LOG 클래스 기능을 포팅했습니다.

ACE 프레임워크에서 로그 기능이 탐나는데 그거때문에 ACE 프레임워크를 쓰자니 뭔가 웃기는 짓거리 같아서 이것만 포팅했습니다.

사용법은 간단합니다.

구현은 싱글톤, 정적 클래스 로 구현되어 있습니다. 

LM_INSTANCE()
위 매크로는 싱글턴 클래스의 포인터를 반환하여 로그 클래스를 조작할 수 있도록 해줍니다.
LM_DEBUG(( 내용 ));
위 매크로를 이용하여 로그를 작성합니다. 반드시 괄호를 2개를 사용하셔야 합니다. 내용에는 printf 처럼 몇가지 인자가 들어갈 수 있습니다.
예제).
LM_DEBUG(( _T("[%D %T][PID=%P][Thread=%t][%N-%l][ %s ]"), L"로그 클래스 시험" ));
위와 같이 작성하시면 %D = 날짜, %T = 시간, %P = 프로세스의 PID, %t = 해당 스레드의 TID, %N = 매크로를 호출한 소스코드 파일이름, %l = 매크로를 호출한 소스코드 행 번호, %s = 뒤에 적힌 문자열 로 치환됩니다.
LM_EXIT();
로그 클래스 사용이 끝나면 이 매크로를 추가하여 반드시 메모리에서 해제해야합니다. 그렇지 않으면 약간의 메모리 누수가 발생할 수 있습니다.


전체적인 예).
 
#include 
#include 
#include 
#include 

#include "Util.h"
#include "Log_Msg.h"

int wMain()
{    
	std::wofstream ofStream( L"c:\\a.log", std::ios::out | std::ios::app );    
	ofStream->imbue( std::locale("kor") );  // 이 문장이 없으면 한글이 제대로 파일로 저장되지 않습니다.     

	// 로그를 파일 스트림과 디버그 출력으로 동시에 출력합니다
	LM_INSTANCE()->Open( CLog::LOG_STREAM | CLog::LOG_DEBUGGER, &ofStream, false );
    LM_DEBUG(( _T("[%D %T][PID=%P][Thread=%t][%N-%l][ %s ]"), L"로그 클래스 시험" ));
    LM_EXIT();

	return 0;
}

댓글을 달아 주세요


헬마입니다.

어제 새벽에 MSDN 에 비주얼 스튜디오 2010 베타 1 이 공개되었는데요.

열심히 수소문해서 구해보니 토렌토가 하나 있길래 다운받아서 설치해보았습니다.

앞으로 설치/사용해보면서 달라진 점등이 있으면 꾸준히 글을 올려보겠습니다.

설치환경 - 윈도 7 RC( 빌드 7127, X64 ), RAM - 8G

이번 비주얼 스튜디오 파일은 iso 파일은 용량이 1.3기가정도밖에 되지 않습니다. MSDN이 포함되어있지 않아서 인듯하네요. 
 
들리는 소문으로는 베타2는 연말 쯤에 나와서 내년초에 RC 내년 중반쯤에 RTM이 나올거라 하네요. ㅠㅠ


설치를 시작하면 이전 2008 과 비슷한 화면이 나타납니다. 버전 위에 Beta 1 이라고 나타나 있는것이 눈길을 확 끕니다.



특이하게 VC 9.0 런타임도 함께 설치합니다. 10.0 이 있는데 왜 하나 더 설치하는건지 무슨 차이점이 있는지 아직은 정확히 모르겠네요. 도움말 시스템이 또다시 변경되는 것인지 Help 3.0 을 설치하는군요.. 하지만 MSDN 라이브러리 DVD는 공개되지 않았습니다. ㅠ


설치할 컴포넌트를 선택하는 화면입니다. 닷넷과 C++ 두가지의 큰 분류가 있습니다. 처음에 매우 당황했는데 밑에 보면 Customize 라고 버튼이 있습니다. 이 버튼을 누르면 예전처럼 자세하게 선택할 수 있는 화면이 아래처럼 나타납니다.


2008 버전에 있던 표준, 전체 설치, 사용자 설치 선택이 사라지고 이렇게 변경되었네요. 이게 더 깔금한 것 같습니다. 이번 2010 에서는 F# 이라는 신종언어가 포함되어있습니다. 이 언어는 예전의 Visual J# 처럼 순식간에 사라지지 않기를 바랍니다. 


설치화면입니다. 설치 대고 있는 컴포넌트가 어떤것인지 이전보다 좀 더 확실히 알 수 있게 되었네요.
윈도 7 에서 설치하는데도 닷넷 프레임워크 4 베타 1를 설치하면 재부팅을 하라고 합니다. ㅠㅠ


마지막 설치 완료화면입니다.

이제 설치가 끝났네요. 낼부터는 열심히 사용을 해봐야겠습니다.

댓글을 달아 주세요

  1. BlogIcon Bardisch 2009.05.22 19:58 Address Modify/Delete Reply

    오오 저도 빨리 받아봐야겠군요!!