Einzelnen Beitrag anzeigen

Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#19

AW: Das Programm wurde eventuell nicht richtig installiert.

  Alt 8. Jun 2012, 09:39
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:
  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\';
Kurze Abschlussfrage: In welches Verzeichnis schreibt Ihr denn die UnInstall.exe hin?
  Mit Zitat antworten Zitat