2009-07-01 2 views
29

Ich habe ein Installationsprogramm, das unter NT 5.x, Vista und Windows 7 einwandfrei funktioniert. Es enthält das richtige Manifest für UAC auf NT 6.x."Dieses Programm wurde möglicherweise nicht korrekt installiert" Meldung in Windows 7 RC

Aber beginnend mit Windows 7 RC, Windows jedes Mal, wenn das Setup-Programm geschlossen wird, erzeugt Windows eine fehlerhafte "Dieses Programm möglicherweise nicht korrekt installiert" Nachricht, obwohl das Programm korrekt installiert wurde, ohne irgendwelche Probleme. Ich habe diese unechten Nachrichten nie in Vista oder in Windows 7 Beta bekommen.

Ich habe einen Fehlerbericht an Microsoft gesendet, aber nicht zurück gehört. Ich dachte, dass dies nur ein Fehler in der Windows 7 RC sein könnte, aber das Problem ist immer noch auf einer neuen Installation eines der letzten RTM-Treuhand-Builds, die durchgesickert war. Microsoft hat keinerlei Dokumentation darüber - nicht einmal ein Hinweis darauf, was es möglicherweise auslösen könnte.

Noch frustrierender ist, dass ich bekomme diese "Dieses Programm möglicherweise nicht korrekt installiert" Meldung, auch wenn ich die Installation auf dem ersten Sind-Sie-sicher-Sie-wollen-fortzufahren-Bildschirm vor beliebig abbrechen Der Installationscode (Erstellen eines temporären Verzeichnisses, Extrahieren von Dateien, Kopieren, Registrierung usw.) wird jemals ausgeführt.

Hat jemand dieses herausgefunden?

+0

Geht das unten auf ServerFault? –

+11

Legit Programmierer Frage IMO. Wenn ich ein Installationsprogramm erstellen möchte, möchte ich, dass es die richtigen Installationskriterien von Windows 7 erfüllt. – AlbertoPL

+2

Entschuldigung, ich hätte klarstellen sollen: Als ich sagte "Ich habe ein Installationsprogramm", meinte ich "Ich habe ein Installationsprogramm mit C erstellt", weshalb dies in Stack Overflow und nicht Server Fault ist. –

Antwort

1

Haben Sie die Application Compatibility Toolkit bei Ihrem Installateur geworfen?

Ich hatte noch nie einen Grund, sich damit zu befassen, aber das scheint genau das zu sein, wofür es bestimmt ist.

+0

Ja, das hatte ich versucht. Durchforstete jeden Eintrag im erstellten Protokoll und konnte keine hilfreichen Informationen finden. –

29

Nun, um meine eigene Frage zu beantworten, habe ich einen Weg gefunden, um dieses Problem zu lösen. Ich bemerkte, dass das WinRAR-Changelog anzeigte, dass WinRARs Self-Extractor ebenfalls unter dem gleichen Problem litt und dass es gelöst wurde. Also habe ich die neueste Version von WinRAR heruntergeladen und zusammen mit einer früheren Version in einen Disassembler geworfen, um nach neuen API-Aufrufen usw. zu suchen. Lange Rede, kurzer Sinn, es stellte sich heraus, dass nur das Folgende zum Manifest hinzugefügt wurde:

<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> 
    <application> 
    <!--The ID below indicates application support for Windows Vista --> 
     <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/> 
    <!--The ID below indicates application support for Windows 7 --> 
     <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/> 
    </application> 
</compatibility> 

einige googeln der eine Dokumentation gedreht Strings bis: offenbar, das ist etwas neues, das auf Windows 7 und dass die Dokumentation hinzugefügt wurde sie am 20. Mai es wurde geschaffen, nicht helfen, dass Microsoft ‚doesn Verknüpfen Sie dies von einer beliebigen Win7-Dokumentationsseite aus, ganz zu schweigen davon, dass es auffällig ist. seufzen

Edit: Dies dokumentiert ist, schlecht, auf MSDN here.

+1

Dies löst das eigentliche Problem nicht. Sie sagen Windows nur, es nicht mehr zu melden. http://msdn.microsoft.com/en-us/library/dd371711(VS.85).aspx; Windows 7: Anwendungen mit Kompatibilitätsabschnitt erhalten die PCA-Minderung nicht. Zugegebenermaßen könnte es in einigen Fällen der richtige Weg sein. –

+0

Nun, es ist nicht ganz klar, dass Windows dies korrekt meldet. Das Installationsprogramm funktioniert so, wie das PCA deaktiviert ist, und wie ich in meinem anderen Kommentar bemerkt habe, hatte ich vor langer Zeit die App-Verifizierer-Logs durchforstet und sogar verschiedene API-Aufrufe nachgeschlagen, um sicherzustellen, dass das nicht so neu war Ich hatte es vermisst. Ich hatte den Installer so weit heruntergerissen, dass er gar nichts mehr tat, und Windows beschwerte sich immer noch. Ich bin mir ziemlich sicher, dass dies die richtige Vorgehensweise ist. –

3

Ich lief die gleiche Fehlermeldung beim Ausführen einer neuen Qt-basierten App, die ich gebaut habe. Gleiche Symptome - würde diese "hilfreiche" Nachricht nach dem Schließen der .exe erhalten, egal was das Programm getan hat.

Jetzt habe ich verschiedene qt app-Projekte, alle genau so gebaut. Und keiner der anderen macht das.

Ich fand schließlich heraus, dass dieser Fehler nur von der Tatsache verursacht wurde, dass ich dieses spezielle Projekt 'Installer' genannt hatte. Ich hatte am Ende eine binäre 'installer.exe' und es hätte keinen Zweifel daran, dass der Projektname an anderer Stelle eingebaut war (ohne sich mit der qmake generierten Projektdatei zu befassen, nicht genau was).

Der Punkt von Interesse ist, dass Sie auf dieses Problem stoßen können, indem Sie einfach ein Projekt namens "Installer" und nichts anderes.