2010-02-25 5 views
5

우리는 MSI 설치 프로그램 패키지를 통해 사용자에게 배포하는 .NET 응용 프로그램을 보유하고 있습니다. 우리는 매일 아침마다 실행되는 C++ 응용 프로그램을 통해 사용자의 응용 프로그램 사본이 최신 버전인지 여부를 확인합니다. 그렇다면 새 MSI를 풀고 설치합니다. 응용 프로그램이 실행중인 경우 업데이트를 수행 할 수 있도록 응용 프로그램을 종료해야합니다.Windows에서 .NET 응용 프로그램을 추적하지 못하는 것 같습니다.

우리의 문제는 모든 창문이 우리의 응용 프로그램을 "잃어 버리는"것처럼 보일 때가 있다는 것입니다. 프로세스가 실행 중임을보고하지 않습니다. 응용 프로그램을 중단하지 않고 사용중인 실행 파일을 덮어 쓰거나 심지어 삭제할 수도 있습니다.

어쩌면 이것은 일반적 일 수 있습니다. 그러나 우리는 무슨 일이 일어나는지 알 수 없습니다! 누구든지이 상황에 대한 통찰력을 가지고 있습니까?

우리 응용 프로그램의 임시 복사본이 만들어지고있는 것처럼 보입니다. 프로그램이 실행되고 있습니다. 그러나 그렇다면 왜 항상 그런 일이 발생하지 않습니까?

EDIT : 우리 프로그램에서는 플랫폼 SDK의 "EnumProcesses"기능 (PSAPI.dll)을 사용하여 실행중인 프로세스를 모두 열거합니다.

+0

응용 프로그램이 실행되고 있는지 감지하기 위해 당신은 무엇을 사용합니까? –

+3

실행되고 있지 않다는 것을 나타냅니다 * 및 *는 실행 파일을 덮어 쓸 수 있습니까? 거기에 대한 간단한 설명이 있습니다 : 그것은 실행되지 않습니다. –

+0

앱이 무슨 일을하는지 모르지만 ClickOnce가 더 깨끗한 솔루션이라고 생각됩니다. – Walter

답변

2

스크립트 또는 응용 프로그램이 64 비트 프로그램으로 실행되고 다른 응용 프로그램이 32 비트 프로그램으로 실행될 수 있습니까? 그렇다면 64 비트 컴퓨터에서 업데이트 검사가 기존 응용 프로그램의 잘못된 위치를 찾고 누락 된 것으로보고 할 수 있습니까?

+0

이것으로 보아도 유망한 것처럼 보입니다. 응용 프로그램은 32 비트이지만 아직 업데이트 스크립트에 대해서는 확신 할 수 없습니다. 그러나 이것 또한 어떻게 든 실행 파일을 오버라이드 할 수있는 계정일까요? – Matt

+0

이것은 사실이 아니지만 제안 해 주셔서 감사합니다. – Matt

0

프로세스가 실행 중인지 확인하기 위해 어떤 메커니즘을 사용하고 있습니까?

프로세스 탐색기와 같은 것을 사용하여 실행 가능 이미지가로드 된 경로를 확인하십시오. 모듈이 모듈 섹션에 나열되어야합니다.

+0

프로세스 열거 메커니즘에 대한 원래 질문의 편집을 참조하십시오. 나는 프로세스 탐색기를 사용하는 것을 생각하지 않았지만 그것은 좋은 생각이다. 불행하게도 우리는 주문형을 재현 할 수는 없지만 그것이 다시 발생하면이를 명심 할 것입니다. – Matt

관련 문제