Rubrik: System/Windows · Desktop/Bildschirm/Display | VB-Versionen: VB6 | 31.10.02 |
Setup mit opt. Erstellen eines Desktop-Icons Die angepasste Setup1.exe erzeugt optional auf Userwunsch ein Desktop-Icon bei der Installation. | ||
Autor: Uwe Glaser | Bewertung: | Views: 20.895 |
ohne Homepage | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | kein Beispielprojekt |
Wen stört es nicht, das man von Microsoft zwar ein Tool zum Erstellen eines Setup bereitgestellt bekommt, aber mit dem sich nicht autom. oder auf Userwunsch zusätzlich auch ein Desktop-Icon erzeugen lässt.
Den eigentlichen Code zum Erzeugen eines Desktop Icons kennen Sie sicherlich bereits:
Beliebige Verknüpfungen erstellen
Die Frage ist nur: Wo und wie einbinden?
Hierzu müssen Sie wie folgt vorgehen:
Im Modul basCommon eine globale Variable anlegen:
Public gintCheck1 As Integer
Im Formular frmGroup eine Checkbox (Check1) anlegen, mit Desktop-Icon erstrellen beschriften und im Ereignis cmdContinue_Click() folgenden Code hinzufügen:
' Desktop Icon anlegen ja/nein gintCheck1 = Check1.Value
Ein neues Formular hinzufügen (frmDesktopIcon) und folgenden Code einfügen:
Option Explicit ' benötogte API-Deklarationen Private Declare Function SHGetSpecialFolderLocation Lib "shell32.dll" ( _ ByVal hwndOwner As Long, _ ByVal nFolder As Long, _ pidl As ITEMIDLIST) As Long Private Declare Function SHGetPathFromIDList Lib "shell32.dll" _ Alias "SHGetPathFromIDListA" ( _ ByVal pidl As Long, _ ByVal pszPath As String) As Long Private Type SHITEMID cb As Long abID As Byte End Type Private Type ITEMIDLIST mkid As SHITEMID End Type
' Verknüpfung erstellen Private Sub CreateLink(ByVal Datei As String, _ ByVal LinkName As String, _ Optional ByVal Parameter As String = "", _ Optional ByVal Comment As String = "", _ Optional ByVal WorkingDir As String = "") Dim cShellLink As ShellLinkA Dim cPersistFile As IPersistFile Set cShellLink = New ShellLinkA Set cPersistFile = cShellLink With cShellLink ' Pfad+Dateiname der Anwendung .SetPath Datei ' Parameter If Parameter <> "" Then _ .SetArguments Parameter ' Kommentar If Comment <> "" Then _ .SetDescription Comment ' Arbeitsverzeichnis (Ausführen in) If WorkingDir <> "" Then _ .SetWorkingDirectory WorkingDir End With ' Verknüpfung erstellen cPersistFile.Save StrConv(LinkName, _ vbUnicode), 0 Set cPersistFile = Nothing Set cShellLink = Nothing End Sub
' Standard Systemordner ermitteln Private Function GetSpecialFolder(CSIDL As _ SpecialFolderIDs) As String Dim lResult As Long Dim IDL As ITEMIDLIST Dim sPath As String lResult = SHGetSpecialFolderLocation(100, CSIDL, IDL) If lResult = 0 Then sPath = Space$(512) lResult = SHGetPathFromIDList(ByVal IDL.mkid.cb, _ ByVal sPath) GetSpecialFolder = Left$(sPath, InStr(sPath, _ Chr$(0)) - 1) End If End Function
Private Sub Form_Load() strLinkName = GetSpecialFolder(sfidDESKTOP) & _ "\" & gstrAppName & ".lnk" strLinkExe = gstrDestDir & gstrAppExe ' Desktop-Icon erstellen CreateLink strLinkExe, strLinkName ' Hierdurch wird der Log-Eintrag erzeugt ' und eingetragen, so dass bei einer De-Installtion der ' Anwendung das Desktop Icon auch wieder entfernt wird. NewAction gstrKEY_PRIVATEFILE, gstrQUOTE & _ GetSpecialFolder(sfidDESKTOP) & "\" & _ gstrAppName & ".lnk" & gstrQUOTE CommitAction End Sub
Im Modul basSetup1 bei Sub CreateShellLink am Ende vor Retry: folgendes einfügen:
If gintCheck1 = 1 Then Load frmDesktopIcon DoEvents Unload frmDesktopIcon End If
Das wars auch schon.
Jetzt noch die geänderte Setup1.exe in das PDWizard-Verzeichnis speichern (meist C:\Programme\Microsoft Visual Studio\VB98\Wizards\PDWizard speichern), und beim nächsten Erstellen eines Setup mit dem Microsoft Verpackungs- und Weitergabe-Assistent verfügt Ihr Setup autom. über die Option, ein Desktop Icon zu erstellen.