2010-01-28 6 views
0

에없는 다음과 같은 오류가 팝업 및 응용 프로그램 제거 실패제거 오류가 드라이브

오류

' mFileBagIDE.dll '은 유효한 짧은 파일 이름이 아닙니다.

원본 설치 DVD가 드라이브에없는 경우에만이 오류가 발생한다는 점이 이상합니다. DVD가 드라이브에 있으면 제거가 완벽하게 작동합니다.

실제 키커가 있습니다. 우리는 이미이 응용 프로그램이 널리 배포 된 후에야이 버그를 잡아 내지 못했고 고객의 상황이 더 이상 원래 DVD가 없을 가능성이 높습니다. 이것은 이전 버전을 먼저 제거 할 수 없으므로 다음 버전의 설치 프로그램 (Windows 설치 프로그램의 주요 업그레이드를 수행함)이 실패 함을 의미합니다.

그래서, 내 질문은 두 가지이다 :

  • 우리가 향후 릴리스에서 그것을 피할 수 있도록이 문제를 만들기 위해 무엇을 했는가?
  • 다음 Windows 설치 관리자에게이 오류를 무시하고 이전 버전을 제거하도록 알려 줄 수 있습니까?

현재 설치 관리자 (문제의 원인이되는 설치 관리자)는 InstallAware를 사용하여 생성되었습니다. 우리는 WiX로 이동할 가능성이 큽니다. 그러나 모든 플랫폼의 솔루션 (InstallAware, WiX, 원시 MSI 테이블)은 높이 평가됩니다!

UPDATE : 내가 잘 관련 될 수있는 내 MSI의 InstallExecuteSequenceInstallUISequence 테이블 모두에서 다음 행을 가지고,하지만 난 SRCDIREX 속성, 또는 그것이 어디에서 설정되는 것을 모른다.

| Action  | Condition | 
|---------------|--------------| 
| ResolveSource | NOT SRCDIREX | 

답변

2

아마도 원래 MSI를 참조하는 동작 중 하나 (표준 또는 사용자 지정)는 설치시에만 실행되도록 조건이 설정되지 않았습니다. 예를 들어 ResolveSource는 "설치되지 않음"으로 조건 지정되어야합니다. 관련 작업의 조건을 변경하는 패치 (MSP 파일)를 사용하여이 문제를 해결할 수 있습니다.

+0

나는 이것이 그것일지도 모른다라고 생각한다! InstallExecuteSequence와 InstallUISequence에서 모두 ResolveSource 액션이 있습니다. 두 가지 조건은 "SRCDIREX가 아닙니다." 나는이 속성이 무엇인지에 대해 전체 공백으로 올라가고있다. 해당 속성의 값이 설정되는 곳을 어떻게 확인합니까? –

+0

orca를 사용하여 MSI를 열어 SRCDIREX를 검색 할 수 있습니다. 아마도 뭔가를 찾을 수있을 것입니다. –

+0

그래, ResolveSource 작업의 두 항목을 제외하고는 아무 것도 시도하지 않았습니다. 그 밖에있을 수있는 다른 곳이 있습니까? –

-1

% WinDir %/system32 폴더에 파일을 복사하려고 했습니까?

EDIT : 모든 설치 MSI 패키지를 디스크에 복사하고 디스크 드라이브에서 설치하도록 설정합니다. 제거 프로그램에 필요없는 모든 파일을 제거하십시오. Adobe, HP 및 많은 다른 회사가이를 수행하고 있습니다.

+0

나는 그렇지 않습니다. 제거를 시도하기 전에 일부 파일을 system32 폴더에 복사 하시겠습니까? 아니면 새로운 설치의 일부로? 나는 윈도우 설치 프로그램에 매우 익숙하지 않지만 전형적인 모범 사례입니까? 수동으로 system32 폴더를 쓰다듬어 보면 나에게 무섭다. :) –

+0

아니, 작동하지 않습니다. MSI는 특정 위치의 파일을 찾고 경로 트리를 검색하여 찾지 않습니다. – ewall

+0

나는 대답을 편집했다, 나는 그것이 도움이되기를 바란다. – CuSS

0

어떤 작업이 오류의 원인인지 판단하여 시작할 것입니다. 여기에 내가 그렇게 할 것입니다 방법은 다음과 같습니다

  • DVD를
  • 킥 오프 제거 : "\ TEMP C"

    • 이의 말을하자,
    • 는 MSI 일부 로컬 폴더에 파일을 복사 DVD에서 당신의 앱을 설치합니다 다음과 같이 제거하십시오 : "msiexec /x yourapp.msi /L*v c:\temp\uninst.log"

    오류가 발생하면 제거가 효과적으로 일시 중지됩니다.그런 다음 로그의 끝을 확인하여 시퀀스의 현재 위치를 정확히 볼 수 있습니다. 그게 당신이 디버깅하는 데 도움이됩니다.

    대답이 실제로 ResolveSource이면 정기적 인 패치가 옵션이 아닐 수도 있습니다. 인 ResolveSource를 예약하지 마십시오, 일반적으로 http://blogs.msdn.com/heaths/archive/2007/10/25/resolvesource-requires-source.aspx

    "예를 들어, 패치를 설치할 때이 실행되면, 사용자들이 다른 필요 여부를 원본 미디어를 삽입해야합니다 - 히스 스튜어트는 자신의 블로그에서이 문제를 언급하고있다. 또는 아닙니다. "

    이것이 자신이있는 위치라면 ResolveSource 동작의 조건을 업데이트하는 변환을 만들어이를 msi 파일의 캐시 된 복사본에 수동으로 적용 할 수 있습니다. 조금은 고통 스럽지만 작동 할 것이라고 확신합니다.