![]() |
AW: Das Programm wurde eventuell nicht richtig installiert.
Registry.Create(KEY_ALL_ACCESS OR KEY_WOW64_64KEY) funktioniert bei mir nicht. :wall:
|
AW: Das Programm wurde eventuell nicht richtig installiert.
Welcher Fehler tritt denn auf?
|
AW: Das Programm wurde eventuell nicht richtig installiert.
Delphi-Quellcode:
wird nicht erkannt.
OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\...', false)
|
AW: Das Programm wurde eventuell nicht richtig installiert.
Dann kann ich Dir leider nicht weiterhelfen, ich habe hier kein Win64 :(
|
AW: Das Programm wurde eventuell nicht richtig installiert.
Ich krieg' die Krise. Wenn ich einfach
TRegistry.Create(KEY_ALL_ACCESS) schreibe und den WowPfad benutze ist die Meldung weg. Ist KEY_ALL_ACCESS nicht das Default bei Registry.Create? :gruebel: |
AW: Das Programm wurde eventuell nicht richtig installiert.
Zitat:
Dies funktioniert bei mir einwandfrei:
Delphi-Quellcode:
Die Variablen sRegKey, _bIsWow64 (bzw. deren Werte) kommen dabei von außen.
key:= TRegistry.Create;
try key.RootKey:= HKEY_LOCAL_MACHINE; key.Access:= KEY_READ; if (_bIsWow64 AND Self.bIsX64) then key.Access:= key.Access OR KEY_WOW64_64KEY; if key.OpenKey(sRegKey, False) then if key.ValueExists(sRegVal) then sRegData:= key.ReadString(sRegVal); finally key.CloseKey; key.Free; end; // try..finally Ergänzung: Übrigens ist es Unsinn, mit einer 32 Bit Anwendung in den 64 Bit Zweig zu schreiben, gerade wenn es um solche Uninstall-Keys geht. MfG Dalai |
AW: Das Programm wurde eventuell nicht richtig installiert.
Zitat:
Kann es sein, dass du eine Pfad hardcodiert hast und Windows jetzt denkt, dass die Anwendung nicht richtig installiert wurde, weil die Datei nicht gefunden werden konnte? |
AW: Das Programm wurde eventuell nicht richtig installiert.
Zitat:
MfG Dalai |
AW: Das Programm wurde eventuell nicht richtig installiert.
Ich hab die Komponente überarbeitet und dabei auch solche Uralt Dinger wie MkDir z.B. ersetzt. Mit Code #9 geht es geht jetzt. Luckie, ich benutze folgende Verzeichnisse:
Delphi-Quellcode:
function GetShellFolderPath(const aFolder: integer): string;
var pIIL: PItemIDList; szPath: array[0..Max_Path] of char; aMalloc: IMalloc; begin Result:= ''; OleCheck(SHGetSpecialFolderLocation(0, aFolder, pIIL)); SHGetPathFromIDList(pIIL, szPath); OleCheck(SHGetMalloc(aMalloc)); aMalloc.Free(pIIL); Result:= szPath; end; function GetTempDir: string; var tempFolder: array[0..Max_Path] of char; begin GetTempPath(Max_Path - 1, @tempFolder); Result:= StrPas(tempFolder); end; function Vista: boolean; begin Result := SysUtils.Win32MajorVersion >= 6; end; function GetProgramFilesVerz: string; const CSIDL_PROGRAM_FILES = $0026; var Reg: TRegistry; v, S, u: string; begin if Vista then Result := IncludeTrailingPathDelimiter(GetShellFolderPath(CSIDL_PROGRAM_FILES)) else begin v := 'C:\xxxx\'; S := 'SOFTWARE\Microsoft\Windows\CurrentVersion'; u := 'ProgramFilesDir'; Reg := TRegistry.Create; try with Reg do begin RootKey := HKey_LOCAL_MACHINE; if KeyExists(s) then begin OpenKey(s, false); if ValueExists(u) then v := IncludeTrailingPathDelimiter(ReadString(u)); closeKey; end; end; finally Reg.Free; Result := v; end; end; end;
Delphi-Quellcode:
Kurze Abschlussfrage: In welches Verzeichnis schreibt Ihr denn die UnInstall.exe hin?
VerzE:= GetProgramFilesVerz + 'xxxx\';
VerzA:= IncludeTrailingPathDelimiter(GetShellFolderPath(CSIDL_APPDATA) + 'xxxx\'; VerzT:= IncludeTrailingPathDelimiter(GetTempDir) + 'xxxx\'; VerzP:= IncludeTrailingPathDelimiter(GetShellFolderPath(CSIDL_PERSONAL)) + 'xxxx\'; if Vista then VerzB:= IncludeTrailingPathDelimiter(GetShellFolderPath(CSIDL_COMMON_APPDATA)) + 'xxxx\' else VerzB:= IncludeTrailingPathDelimiter(GetShellFolderPath(CSIDL_PERSONAL)) + 'xxxxBackUp\'; |
AW: Das Programm wurde eventuell nicht richtig installiert.
Selbst habe ich das noch nie gemacht, dafür gibts ja Setupprogramme. :mrgreen:
Die machen das unterschiedlich, aber eigentlich gehört das mit unter CSIDL_PROGRAM_FILES und muss sich dann bei der Deinstallation natürlich auch selbst wieder löschen. Das Verzeichnis wiederum sollte nur gelöscht werden, wenn es a) leer ist (falls der Benutzer dort Daten abgelegt hat) und b) beim Installieren erstellt wurde (falls der Benutzer z.B. sowas wie ein ansonsten leeres Systemverzeichnis angegeben hat). Das heißt du müsstest dir am besten in den Uninstalldaten auch speichern welche Verzeichnisse es schon vorher gab und welche du angelegt hast. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:35 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz