Autor |
Beitrag |
Fritz the Cat
Hält's aus hier
Beiträge: 3
|
Verfasst: So 05.06.05 19:55
Hallo,
meine Anwendung ist nun so gut wie fertig. Habe mir noch ein eigenes Setup zusammen geschoben (sprich das entpacken von CD auf die Festplatte). Was mir zu meinen Glück noch fehlt, ist eine Verknüpfung auf dem Desktop.
Eines vorweg. Eine Verknüpfung konnte ich schon erfolgreich in jeden beliebigen ("normalen") Ordner erstellen.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29:
| uses ShlOBJ, ActiveX, ComObj;
function CreateLink(Source,Target,Beschreibung:string):Boolean; var psl : IShellLink; ppf : IPersistFile; const IID_IPersistFile: TGUID = (D1:$0000010B; D2:$0000; D3:$0000; D4:($C0,$00,$00,$00,$00,$00,$00,$46)); begin result := False; if SUCCEEDED(CoCreateInstance(CLSID_ShellLink, nil, CLSCTX_INPROC_SERVER, IID_IShellLinkA, psl)) then begin psl.SetPath(PChar(Source)); psl.SetDescription(PChar(Beschreibung)); if SUCCEEDED(psl.QueryInterface(IID_IPersistFile,ppf)) then begin ppf.Save(StringToOLEStr(Target),TRUE); Result := true; end; end; end;
procedure TStart.Button2Click(Sender: TObject); begin CreateLink('C:\Test2\Project.exe','C:\Test2\Project.lnk','Project'); end;
end. |
Jetzt meine Frage: Was muß ich in meinen Aufruf ändern, damit die Verknüpfung nicht im Install-Verzeichnis(C:\Test2) landet, sondern auf dem Desktop?
Danke im voraus.
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: So 05.06.05 22:53
In dem du dir mit dir den Desktop Ordner ermittelst: www.luckie-online.de...etSpecialFolder.html
|
|
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: So 05.06.05 23:03
Fritz the Cat hat folgendes geschrieben: | Habe mir noch ein eigenes Setup zusammen geschoben (sprich das entpacken von CD auf die Festplatte). Was mir zu meinen Glück noch fehlt, ist eine Verknüpfung auf dem Desktop. |
Nimm ein richtiges Setup, etwa Inno Setup. Da ist alles drin, was man braucht. 
|
|
Blackheart
      
Beiträge: 164
ME
D3Prof.-D6Standard
|
Verfasst: So 05.06.05 23:08
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| procedure DesktopLink (Filename,LinkName,Arguments: String); var tmpObject : IUnknown; tmpSLink : IShellLink; tmpPFile : IPersistFile; PIDL : PItemIDList; LinkFileName: WideString; DesktopDirectory : array[0..MAX_PATH] of Char; begin tmpObject := CreateComObject(CLSID_ShellLink); tmpSLink := tmpObject as IShellLink; tmpPFile := tmpObject as IPersistFile; if Arguments<>'' then tmpSLink.SetArguments(pchar(Arguments)); tmpSLink.SetPath(pChar(Filename)); tmpSLink.SetWorkingDirectory(pChar(ExtractFilePath(Filename))); SHGetSpecialFolderLocation(0,CSIDL_DESKTOPDIRECTORY,PIDL); SHGetPathFromIDList(PIDL, DesktopDirectory); LinkName:='\'+LinkName+'.lnk'; LinkFileName := DesktopDirectory+LinkName; tmpPFile.Save(pWChar(LinkFilename),FALSE); end; |
|
|
Fritz the Cat 
Hält's aus hier
Beiträge: 3
|
Verfasst: Mo 06.06.05 00:17
Ja, werd's probieren. Danke an alle! Werde erst mal Luckie's Guide(code) versuchen zu "verbauen". Die Antwort auf meiner Frage steht ja schon in seinem Code! Notfalls werde ich wohl doch mehr oder weniger auf InstallShield, InnoSetup und Konsorten zurück greifen müssen! Genau das wollte ich nicht.
Es liegt zwar bei meiner Delphi-Version das InstallShield bei, nur leider kann ich dort keine Aktionen definieren, die nach Beendigung der Installation auszuführen sind. InstallShield als eigenständige Version kann ich mir leider nicht leisten! 
Zuletzt bearbeitet von Fritz the Cat am Mo 06.06.05 01:59, insgesamt 2-mal bearbeitet
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mo 06.06.05 01:12
Mathias hat dir doch ein empfohlen, was genau das kann, was du suchst.
|
|
Fritz the Cat 
Hält's aus hier
Beiträge: 3
|
Verfasst: Mo 06.06.05 01:29
Ja Micha, Danke. Habe mich jetzt erstmalig in Inno-Setup versucht. Und was soll ich Dir sagen. Es war eine Pleite. Aber ich habe noch sämtliche Versuche!
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mo 06.06.05 02:32
Was soll ich dazu sagen? mathias hat auf seiner Homepage extra ein Tutorial dafür: www.simmack.de/developer/doku/inno.shtml
|
|
Tino
      

Beiträge: 9839
Erhaltene Danke: 45
Windows 8.1
Delphi XE4
|
Verfasst: Mo 06.06.05 08:38
Hallo Fritz the Cat und  hier im Delphi-Forum.de!
Die Verwendung von SHGETSPECIALFOLDERLOCATION wird auch hier im Forum in der FAQ erklärt: ...wie kann ich spezielle Ordner finden?.
Bitte vor dem erstellen eines Topics suchen.  Danke!
Gruß
Tino
|
|