2011-11-27 3 views
4

저는 델파이에서 간단한 설치 프로그램을 만들었습니다. 기본적으로 파일을 Exe에 포함시킨 다음 사용자가 지정한 경로로 추출합니다.Installer 응용 프로그램이 Windows에서 올바르게 작동하도록하려면 어떻게합니까?

그러나 나는 문제를 발견하고 모든 Windows 실행 파일과 함께 작동합니다. 설치 프로그램인지 여부는 중요하지 않습니다.

Exe의 이름이 지정되거나 "Setup", "Build", "Install"등의 파일 이름에 다음 단어가 포함되어있는 경우 응용 프로그램을 실행하고 닫을 때마다 Windows에서 제품을 팝업합니다 Compatibility Assistant 대화 상자에서 응용 프로그램이 제대로 설치되지 않았을 수 있습니다.

설치 프로그램의 파일이 실제로 추출되었지만 설치 프로그램이 내 작업을 완료 했음에도 Windows가 불만을 제기하기 때문에 문제가됩니다.

내가 이에 관해 가지고있는 유일한 생각은 실행될 때 Windows가 응용 프로그램의 파일 이름을 확인해야하며이 경우 설치 프로그램으로 식별된다는 것입니다. Windows는 시스템의 플래그 또는 무언가를 설정해야합니다. 그러면 설치 프로그램이 설치가 성공했다는 것을 알리기 위해이 플래그를 업데이트해야합니다.

IDE는 IDE에서 디버깅 할 때 불평하지 않으므로 코드 관련이 없으며 OS 여야합니다. 이는 델파이가 아닌 Windows에서 응용 프로그램을 시작할 때만 발생합니다.

응용 프로그램을 만들거나 Setup.exe로 이름을 바꾼 다음 실행하고 닫은 다음 몇 초 후에 제품 호환성 관리자 대화 상자가 표시됩니다.

이 대화 상자를 중지하는 방법을 어디서부터 시작해야할지, 설치 프로그램이 올바르게 완료되었는지 Windows에 알리는 설정이있는 곳은 어디인지 알지 못합니다.

귀하의 의견과 해결책에 감사드립니다.

답변

8

올바르게 호출 한 경우 설치 앱에 응용 프로그램 매니페스트가 포함되어 있지 않은 경우 이러한 현상이 발생합니다. UAC가 소개되었을 때 MS는 설치 프로그램에 대한 경험적 탐지 기능을 도입하고 UAC 고도 대화 상자를 보여줍니다. 휴리스틱은 setup.exe, install.exe와 같은 이름을 검사합니다. 간단한 해결책은 응용 프로그램 목록을 포함하는 것입니다. 설치 관리자 인 경우 requireAdministrator 설정을 사용하고 싶을 것입니다.

이 기능은 Installer Detection으로 알려져 있으며 here에 대해 설명합니다.

나는 가치가있다. 예를 들어, InnoSetup과 같은 전용 설치 도구를 사용하여 설치 프로그램을 만들 것이다.

+0

매우 자세한 기사입니다! 나는 InnoSetup이나 유사한 것을 사용할 수 있다는 것을 알고 있지만, 나는 간단한 설치 프로그램을 만들고 싶었다. –

+0

나는 또한이 유용한 게시물을 발견 : http://blogs.msdn.com/b/cjacks/archive/2009/06/18/pca-changes-for-windows-7-how-to-tell-us-you- 설치자가 아니기 때문에 2 가지 이유 때문에 규칙이 바뀌었기 때문에 –

+0

과 내가 간략히 알아 차린이 템플릿은 호환성 보조자 인 http://csi-windows.com을 중단시킵니다./toolkit/manifest-template –

3

David는 지적했듯이 MS는 퍼지 논리를 사용하여 프로그램이 설치 프로그램인지 추측하려고합니다. 이것은 레거시 설치 프로그램 응용 프로그램을 지원하기위한 것일 뿐이므로 이에 의존하지 않을 것입니다.

새로운 응용 프로그램에는 모두 상승 된 권한이 필요한지 여부를 지정하는 manifest file이 있어야합니다.

응용 프로그램에 requestedExecutionLevel 지시문이 포함 된 매니페스트 파일이있는 경우 Windows는 Installer Detection을 시도하지 않습니다.

설치 프로그램으로 발견되었지만 레지스트리의 항목 (HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall)의 프로그램 추가 제거 섹션에 레지스트리 항목을 추가하지 않는 프로그램은 "이 프로그램은 설치되지 않았습니다. "

+0

정보 주셔서 감사합니다, 매우 유용 :) –

관련 문제