2008년 12월 9일 화요일

Vista service pack 1 설치 시 800b0100 오류

기본적으로 알아야 할 개념


Vista 에서의 서비싱 모델의 업데이트 프로세스는 이전 운영체제에 사용되는 update.exe 모델에 비해 많은 성능 개선이 있다.

Update.exe 모델의 단점은 각 패키지와 함께 update.exe 엔진을 배포해야 한다는 단점이 있었고 Vista 에서는 업데이트 엔진이 서비싱 스택 의 형태로 운영체제의 일부가 되었다.    

Vista 에서 사용되는 CBS 는 다음과 같다    

CBS(Component based servicing) 는 Trustedinstaller 서비스로 구성되어 있으며 패키지와 업데이트의 적응성 및 선택성 규칙을 평가하고 CSI 에 적절한 배포를 전달한다.

CSI(Component servicing infrastructure) 는 시스템에 배포 및 구성 요소를 실제로 설치하는 시스템

DMI(device management and install) 는 고급 드라이버 설치 프로세스

   

 

사용자 삽입 이미지

   

Manifest 는 구성요소 설치의 기본 단위를 정의하는 XML 형식의 문서  


진행 방법    

  1. 아래 CheckSUR 이라는 tool 을 설치 합니다.
    CheckSUR이라는 tool이 SP1 설치 전 아래와 같은 오류들을 자동 치료해 줍니다.

    http://support.microsoft.com/kb/947821/en-us    

    사용자 삽입 이미지
     

       

    이 tool을 설치한 후 sp1 을 다시 설치 해 봅니다.
    증상이 동일하다면 2번 과정을 진행합니다.

       

  2. CheckSUR tool 을 설치하면 아래의 경로에 로그가 생성됩니다.
    Windows\logs\cbs
    폴더 아래에
    CheckSUR.log
    CheckSUR.persist.log    

    로그 확인 시 아래와 같은 로그 들이 확인됩니다.    

    Checking System Update Readiness.
    Version 6.0.6000.2
    2008-06-24 오후 19:00:54    
    Checking Deployment Packages    

    Checking Package Manifests and catalogs.

    (f)        Corrupt Catalog        CBS        0x800B0100        \servicing\packages\Package_for_KB948590_client~31bf3856ad364e35~x86~~6.0.1.0.cat                

    (f)        Missing File        CBS        0x00000002        \servicing\packages\Package_for_KB948590_client~31bf3856ad364e35~x86~~6.0.1.0.cat
    이 Catalog 파일이 corrupt 되고 missing 된 것을 확인 할 수 있습니다.

    그렇다면 이제 손상된 파일을 복구를 해봐야 합니다.    

    먼저 정상적인 pc 에서 손상된 패키지 파일을 복사하여 가져옵니다.    

    그 다음 손상된 파일을 교체하여 넣어야 하는데 vista 의 servicing 폴더는 Trustedinstaller 소유이기 때문에 수정이 되지 않습니다.

    아래 프로그램을 설치하여 엑세스 권한을 부여하여야 합니다.

    http://www.microsoft.com/downloads/details.aspx?FamilyID=E8BA3E56-D8FE-4A91-93CF-ED6985E3927B&displaylang=en

    시작 - 모든 프로그램 - 보조 프로그램에 마우스를 올리고 마우스 오른쪽 클릭하여 '관리자 권한으로 실행' 를 선택하여 실행

    Command Prompt에서 SubInACL이 설치된 directory로 이동 합니다.(cd C:\Program Files\Windows Resource Kits\tools)    

    먼저 손상된 파일 backup 폴더에 백업한 후 제거 합니다.    

    명령프롬프트 창에서 아래 작업을 진행합니다.

    mkdir c:\backup
    //백업폴더 생성

    subinacl /file C:\Windows\servicing\packages\
    Package_for_KB948590_client~31bf3856ad364e35~x86~~6.0.1.0.cat /grant=faculty=F

    //ACL 에 full 권한 부여

    copy C:\Windows\servicing\packages\Package_for_KB948590_client~31bf3856ad364e35~x86~~6.0.1.0.cat C:\backup
    //손상된 파일 백업 진행

    del C:\Windows\servicing\packages\Package_for_KB948590_client~31bf3856ad364e35~x86~~6.0.1.0.cat
    // 해당 파일 제거

    위 예처럼 이미 missing 되었다면 제거 하실 필요는 없습니다.
    작업 후 정상 pc 에서 가져오기 한 파일을 붙어 넣기 합니다.
    붙여 넣기 시 권한이 없기 때문에 먼저 권한을 부여합니다.

    Subinacl /subdirectories c:\windows\servicing\packages /grant=everyone=F
    위 작업으로 packages 폴더에 everyone 추가 후 full 권한을 부여 합니다.

    이 후 파일을 붙여 넣기 하면 됩니다.
    이 후 sp1 을 다시 설치해 봅니다.


    [추가정보]

    손상된 패키지 파일 언인스톨 방법
    start /w pkgmgr /up:Package_for_KB948590_client~31bf3856ad364e35~x86~~6.0.1.0.cat

       

2008년 12월 3일 수요일

fpSpread에서 찾기 기능

1.
fpSpread1.SearchCol(ByVal lCol As Long, ByVal lRowStart As Long, ByVal lRowEnd As Long, ByVal Text As String, ByVal SearchFlags As SearchFlagsConstants) As Long

Return = fpSpread1.SearchCol(검색할 컬럼, 시작Row, 끝Row, 검색어, 검색Flag)


2.
fpSpread1.SearchRow(ByVal lRow As Long, ByVal lColStart As Long, ByVal lColEnd As Long, ByVal Text As String, ByVal SearchFlags As SearchFlagsConstants) As Long

Return = fpSpread1.SearchRow(검색할 Row, 시작Col, 끝Col, 검색어, 검색Flag)

Return 값이 -1 이면, 검색어가 검색되지 않음.

-----------

Spread 6 의 샘플소스가 없어 해당 샘플소스에서 ActiveRow 나 ActiveCol 부터 검색하도록 코딩이 되어 있는지 모르지만, 이 메서드는 지정해준 범위내에서 검색을 하도록 되어 있습니다....

실제 많이 사용되는 메서드 입니다...