hertingo
Goto Top

Desktop-Icon

Hallo zusammen,

eine vermutlich einfache Frage, die mich aber zur Weißglut bringt:

ich habe eine Programmverknüpfung (EXCEL-Basiert) auf dem Desktop liegen mit einem selbst erstellten Icon.

Nun soll eine neue Versoin mit einem neuen Icon auf dem Desktop plaziert werden.
Die Aktualisierung erfolgt über eine Batch-Datei.

Aber nach der aktualisierung erscheint immernoch das alte Symbol für die Verknüpfung.

Hier der Text aus der Batch-Datei:

@echo off & setlocal

::Löschen von dem Ordner KnowledgeMapping, falls dieser existiert
if exist "c:\KnowledgeMapping" rmdir /s /Q "c:\KnowledgeMapping"
if exist "%userprofile%\desktop\KnowledgeMapping.lnk" del "%userprofile%\desktop\KnowledgeMapping.lnk"

::Löschen von dem Ordner Portal, falls dieser existiert
if exist "c:\Portal" rmdir /s /Q "c:\Portal"
if exist "%userprofile%\desktop\c:\Portal.lnk" del "%userprofile%\desktop\c:\Portal.lnk"


::erstellen von dem Ordner Portal, falls dieser noch nicht existiert
if not exist "c:\Portal" md "c:\Portal"

::kopieren der Dateien von Netzlaufwerk nach C:\Portal\
robocopy "\\ITFS1001\Netzlaufwerk\Portal\Setup" "C:\Portal" /MIR


::Desktop als Zielpfad für Verknüpfung

set "zielpfad=%userprofile%\Desktop"


::Name der Verknüpfung (ohne ".lnk")

set "progtitel=Portal"

::Speicherort der Programmdatei

set "progdir=C:\Portal\"

::Name der auszuführenden Programmdatei

set "progexe=Portal.xlsm"

::Beschreibung des auszuführenden Programms

set "beschreibung=Portal

::Bei Bedarf Speicherordner der Verknüpfung erstellen (siehe oben "zielpfad"):

if not exist "%zielpfad%" md "%zielpfad%"

::temporäres VBScript erzeugen ...
echo Set objShell=WScript.CreateObject("Wscript.Shell")>%temp%\MakeShortCut.vbs
echo Set objShortcut=objShell.CreateShortcut("%zielpfad%\%progtitel%.lnk")>>%temp%\MakeShortCut.vbs
echo objShortcut.TargetPath="%progdir%\%progexe%">>%temp%\MakeShortCut.vbs
echo objShortcut.Description="%beschreibung%">>%temp%\MakeShortCut.vbs
echo objShortcut.WorkingDirectory="%progdir%">>%temp%\MakeShortCut.vbs
echo objShortcut.IconLocation = "C:\Portal\favicon.ico,0">>%temp%\MakeShortCut.vbs
echo objShortcut.Save>>%temp%\MakeShortCut.vbs

::... ausführen ...

cscript //nologo %temp%\MakeShortCut.vbs

::... und wieder löschen.

del %temp%\MakeShortCut.vbs

if exist "Portal Setup.zip" del "Portal Setup.zip"
if exist "Portal Setup.bat" del "Portal Setup.bat"


Hat jemand eine Idee? Vielen Dank im Voraus!

VG

herting

Content-Key: 259106

Url: https://administrator.de/contentid/259106

Printed on: April 25, 2024 at 20:04 o'clock

Member: Ravers
Solution Ravers Jan 07, 2015, updated at Jan 08, 2015 at 07:08:26 (UTC)
Goto Top
Hi,

habs mir nicht genau angeschaut, sehe aber das du den Link per VBS erstellst.

Warum kopierst du es nicht einfach per batch?

greetz
ravers
Member: rubberman
rubberman Jan 07, 2015 updated at 19:55:52 (UTC)
Goto Top
Hallo hertingo, willkommen im Forum.

if exist "%userprofile%\desktop\c:\Portal.lnk" del "%userprofile%\desktop\c:\Portal.lnk"
So ein Pfad kann nicht existieren. Ich gehe davon aus, dass das c:\ zu viel ist.
Korrigiere das mal und teste erneut.

Falls das nicht hilft, gib dem System die Chance zu realisieren, dass die Verknüpfung neu ist. Z.B. indem du zwischen Löschen und Neuerstellung ein
>nul timeout /t 2 /nobreak
setzt.

Andere Möglichkeit die du testen könntest wäre, zuerst die neue Verknüpfung mit einem anderen Name zu erstellen, danach die alte löschen und dann die neue umbenennen.

Grüße
rubberman
Member: hertingo
hertingo Jan 07, 2015 at 20:04:50 (UTC)
Goto Top
Hallo Ravers und Rubberman,

erstmal vielen Dank für Eure Antworten. Ich werde die morgen gleich mal testen und dann berichten.

Bis dahin vielen Dank!

VG

hertingo
Member: hertingo
hertingo Jan 08, 2015 at 07:08:13 (UTC)
Goto Top
Hallo Ravers, hallo rubberman,

also folgendes zu den Lösungsmöglichkeiten:

die Befehlszeile
if exist "%userprofile%\desktop\Portal.lnk" del "%userprofile%\desktop\Portal.lnk"
habe ich korrigiert aber leider ohne Effekt.

Auch ein Timeout mit dem Befehl
nul timeout /t 2 /nobreak
hatte leider keinen Effekt.

Dann habe ich eine bestehende Verknüpfung, die mit dem Icon versehen worden war, kopiert. Und siehe da, es hat funktioniert!

Aus diesem Grund habe ich nun die weitere Variante
"zuerst die neue Verknüpfung mit einem anderen Name zu erstellen, danach die alte löschen und dann die neue umbenennen"
nicht ausprobiert.

Euch beiden vielen Dank für Eure Hilfe!

VG

hertingo
Member: mayho33
Solution mayho33 Feb 04, 2015, updated at Feb 09, 2015 at 07:12:25 (UTC)
Goto Top
Hi!

ISt zwar schon gelöst, aber wenn du die Verknüpfung für mehrere Profile bereitstellen willst solltest du die direkt in des Public.Desktop-Folder stellen. Der wird von allen Profilen verwendet. Dazu brauchst du zwar Adminrechte, aber du hast kein Problem mit nicht aktualisierten Verknüpfungen in einzelnen Profilen.

Wir mache das z.B. so per VBScript:

zuerst den Public-Desktop-Pfad über die Registry ermitteln (der sichere Weg unter Windows (Xp, Vista, usw.)

Dim objShell : Set objShell = CreateObject("Wscript.Shell")  
AllUsersDesktop   = objshell.RegRead("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Common Desktop")  

und anschließend die Verknüpfung anlegen (die OS-Architektur muss berücksichtig werden):
Set oLink = objshell.CreateShortCut(AllUsersDesktop & "\meineVerknüpfung.lnk")  
olink.TargetPath = """C:\Program Files (x86)\Microsoft Office\Office15\excel.EXE"""  
olink.WindowStyle = 4
oLink.IconLocation = "C:\Program Files (x86)\Microsoft Office\Office15\excel.EXE,0"  
oLink.WorkingDirectory = """C:\Program Files (x86)\Microsoft Office\Office15"""  
oLink.Save
Set oLink = Nothing

Grüße

Mayho