Hi,
ich habe folgendes Problem: Ich habe eine eigene Installationsroutine geschrieben. Soweit - sogut, funktioniert jedenfalls fast alles, bis auf das manche ein Problem haben mein Programm zu installieren. Bei manchen Leuten geht´s bei manchen nicht. Ich möchte für mein Programm eine Verknüpfung auf dem Desktop erstellen (*.lnk Datei) und verwende dafür folgende Funktion:
Code:
procedure NewShellLink(Const pcsFileToLinkTo : String);
const IID_IPersistFile: TGUID = '{0000010b-0000-0000-C000-000000000046}';
var
slShellLink : IShellLink;
pfPersistFile : IPersistFile;
wsShortCut : PWideChar;
hRes : HResult;
sShortCut : String;
begin
CoInitialize(nil);
hRes := CoCreateInstance(CLSID_ShellLink,
nil,
CLSCTX_INPROC_SERVER,
IID_IShellLinkA,
slShellLink);
if hRes = S_OK then
begin
slShellLink.SetPath(PChar(pcsFileToLinkTo)); // HIER DÜRFTE DER FEHLER LIEGEN!!!
hRes := slShellLink.QueryInterface(IID_IPersistFile, pfPersistFile);
end;
if hRes = S_OK then
begin
GetMem(wsShortCut,MAX_PATH shl 1);
sShortCut := ChangeFileExt(pcsFileToLinkTo,'.LNK');
MultiByteToWideChar(CP_ACP,
0,
PChar(sShortCut),
-1,
wsShortCut,
MAX_PATH shl 1);
pfPersistFile.Save(wsShortCut, TRUE);
FreeMem(wsShortCut,MAX_PATH shl 1);
end;
end;
Das Problem ist jetzt, dass bei manchen Leuten die Fehlermeldung
"Konnte Pfad nicht setzen" kommt. Ich denke mir, dass es an der oben markieren Zeile liegt, aber wie kann ich den Fehler beheben? Wäre nett, wenn mir jemand helfen könnte!
Gruß Yheeky