You are not logged in.

  • "Sentionline" started this thread

Posts: 90

Date of registration: Jun 22nd 2010

Thanks: 7 / 5

  • Send private message

1

Saturday, February 4th 2012, 6:33pm

Alle Startmenüverzeichnisse löschen und durch eigene ersetzen

Hallo zusammen!

Ich arbeite gerade an einer neuen Windows 7 Version in 32Bit und 64Bit, mit selbst erstellten Windows 7 Images (rt7lite). Ich benutze WPI um die Programme nach zu installieren, so wie auf diesem alten Video. Um das Startmenü zu sortieren, schneide ich alle Programmicons von den Verzeichnissen;

C:\Users\XXX\AppData\Roaming\Microsoft\Windows\Startmenü\Programme\*
C:\ProgramData\Microsoft\Windows\Startmenü\Programme\*

aus und füge sie in eigens sortierte Ordner ein;

Anwendungen
Autostart
Multimedia
Musik
Office
Grafik
Video

und so weiter...

Ich lösche per AutoIt folgende Verzeichnisse;

C:\Users\XXX\AppData\Roaming\Microsoft\Windows\Startmenü
C:\ProgramData\Microsoft\Windows\Startmenü

Source code

1
2
DirRemove (@StartMenuDir, 1)
DirRemove (@StartMenuCommonDir, 1)


und füge mein sortiertes Startmenü ins;

C:\ProgramData\Microsoft\Windows\Start Menu

ein.

Source code

1
2
3
4
5
6
7
ShellExecute ("Start Menu.exe")
WinWait ("7-Zip", "Extract")
ControlSetText ("7-Zip", "Extract", "Edit1", @HomeDrive & "\ProgramData\Microsoft\Windows\")
ControlClick ("7-Zip", "Extract", "Button2")
If ProcessExists ("Start Menu.exe") Then
	ProcessWaitClose ("Start Menu.exe")
EndIf


Das Startmenü in diesem Verzeichnis ist für Alle Benutzer, das weiss ich.

Anschliessend starte ich CHKLNK um die Installationen zu prüfen und die ungültigen Verknüpfungen zu löschen. Das alles passiert automatisch per AutoIt. Mein neu sortiertes Startmenü sehe ich nur richtig, wenn ich Classic Shell installiere. Das aber auch problematisch. Die standard Ansichten poste ich als Bild unten.

Wie kann ich das STartmenü sortieren, ohne / mit Classic Shell? Ich habe einige Tage im Netz gesucht, gelesen und vieles probiert. Es gibt Registry Werte für das Startmenü. Und es gibt Hard-/Soft codierte LNKs. Wenn ich für jedes Programm einen eigenen Soft LNK erstellen muss, so würd ich das schon per AutoIt lösen, nur weiss ich nicht obs am Ende auch funktioniert. Nicht das ich dann wieder doppelte Einträge hab. Wäre für etwas Hilfe wirklich sehr dankbar! Ich habe früher mit Robocopy gearbeitet, nur ist es sehr schwer cmd Kommandos in AutoIt einzubinden. Zudem möchte ich ja per Default Ansicht alles IO haben.

Diese Frage habe ich auch in English auf sevenforums / ClassicShell gestellt.

Vielen Dank schonmal und liebe grüße!
Sentionline has attached the following images:
  • Menu1.png
  • menu2.png

This post has been edited 2 times, last edit by "Sentionline" (Feb 4th 2012, 6:44pm)


Nemo

Nordlicht am Taunus

Posts: 1,031

Date of registration: Sep 23rd 2008

Thanks: 96 / 137

  • Send private message

2

Saturday, February 4th 2012, 9:34pm

Zu AutoIt kann ich nicht viel beitragen, aber mir fällt auf, dass Du ausschließlich die deutschen Bezeichnungen verwendest, die Dir der Explorer mittels Symlinks o.ä. vorgaukelt.
Du solltest mMn besser die originalen, englischen Pfadbezeichnungen und zusätzlich die System-Umgebungsvariablen verwenden, falls die Verzeichnisse ausnahmsweise mal nicht auf C: liegen:
  • "%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\*" (alle Benutzer)
  • "%APPDATA%\Microsoft\Windows\Start Menu\Programs\*." (aktueller Benutzer)
Gänseblümchen (") wegen der Leerstellen in den Pfadnamen vielleicht/wahrscheinlich erforderlich!

Vielleicht sind danch schon ein paar der aufgeworfenen Probleme gelöst?

BTW:
Seit den Zeiten von WfW 3.11 pflege ich auch meine eigenen Ordnerstrukturen, um zu verhindern, dass die aufgeklappten Menüs den ganzen Bildschirm zukleistern, weil jedes installierte Programm meint, besonders kreativ sein zu müssen
Dabei ging ich allerdings nicht so weit, die von Windows generierten zu löschen, sondern habe lediglich für "meine" Menüs solche Namen verwandt, die mit zwei Ausrufzeichen beginnen (z. B. "!! Entwicklung", "!! Kommunikation" usw.).
Falls es für Dich interessant ist: Diese Strukuren schieße ich per OEM-Methode gleich bei der Installation hinein.

Zum Erstellen von Links kann man auch CreateShortCut verwenden, das tbr@german-nlite.de vor einem halben Jahrzehnt freundlicherweise unserer Gemeinde zur Verfügung gestellt hat.
Dies habe ich vor knapp zwei Jahren erweitert, um statt der Inhalte von Systemvariablen auch deren Namen in Verknüpfungen eintragen zu können: CreateShortCut_20100730 .
Etwas Reklame muss sein: Bis heute immerhin 40 Mal heruntergeladen.
-------------------------
Rehform der Revorm der Rechtschreibung? Nein, danke!

This post has been edited 6 times, last edit by "Nemo" (Feb 5th 2012, 11:21am)


g-force

Gunnar

Posts: 11,356

Date of registration: Sep 23rd 2008

Thanks: 165 / 162

  • Send private message

3

Sunday, February 5th 2012, 2:27pm

Ich habe sowas für XP mit einem SFX gelöst, vielleicht hilft der Ansatz trotzdem: OEM-METHODE incl. CI - by g-force
"Von all den Dingen, die mir verloren gegangen sind, habe ich am meisten an meinem Verstand gehangen."

  • "Sentionline" started this thread

Posts: 90

Date of registration: Jun 22nd 2010

Thanks: 7 / 5

  • Send private message

4

Sunday, February 5th 2012, 3:34pm

Danke für die Lösungsansätze. Muss es wohl oder übel wieder mit Robocopy lösen. Wenn ich das Verzeichnis;

C:\Users\XXX\AppData\Roaming\Microsoft\Windows\Startmenü

lösche, kann ichs manuell nicht mehr wieder einfügen. Lasse ich den Inhalt dessen löschen und kopiere meine rein, hab ich 2 Verzeichnisse Parallel;

C:\Users\XXX\AppData\Roaming\Microsoft\Windows\Startmenü
C:\Users\XXX\AppData\Roaming\Microsoft\Windows\Startmenü

Voll nervig. Mit Robocopy gehts ja immernin. :-)

Mit Registry Werten hab ich auch rumgeschraubt. Geht nix. Danke an den DeepFreeze Entwickler. Erspaart mir viel Arbeit.

mfg

This post has been edited 1 times, last edit by "Sentionline" (Feb 5th 2012, 3:36pm)


Posts: 95

Date of registration: Dec 6th 2008

  • Send private message

5

Sunday, February 5th 2012, 6:54pm

>Ich hab dir mal meine cleanup datei in autoit rangehängt, da siehst du wie man es machen kann
Wixfigur has attached the following file:
  • cleanup.rar (5.67 kB - 13 times downloaded - latest: May 19th 2012, 5:40pm)

PapaB

V.I.P.

Posts: 44

Date of registration: Sep 23rd 2008

Thanks: 0 / 33

  • Send private message

6

Monday, February 6th 2012, 5:45pm

Da habe ich auch mal eine Frage zu.
Ich installiere verschiedene Programme, sowohl auf 32 als auch auf 64bit Windows7, und möchte mit dieser Batch
das entsprechende Startmenü installieren.

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
FOR %%i IN (D E F G H I J K L M N O P Q R S T U V W X Y Z) DO IF EXIST %%i:\Install_x64-x32\Test.exe SET CDROM=%%i:

IF %PROCESSOR_ARCHITECTURE%==AMD64 (

start /wait %CDROM%\Install_x64-x32\Reg\Startmenu64.exe

) ELSE (

start /wait %CDROM%\Install_x64-x32\Reg\Startmenu32.exe

)

exit


Aber es wird immer nur "Startmenu32" installiert selbst auf einem 64bit Win7.

Gibt es eine andere Lösung für das Problem?
Gruß PapaB

Nemo

Nordlicht am Taunus

Posts: 1,031

Date of registration: Sep 23rd 2008

Thanks: 96 / 137

  • Send private message

7

Monday, February 6th 2012, 6:24pm

Unter welchem Kommandoprozessor (CMD.EXE) läuft denn die Batchdatei ab? 32 oder 64 Bit?

Nachdem ich mal ähnliche Probleme mit dieser Art der Erkennung hatte, welche Variante des OS vorliegt, habe ich nicht mehr die Variable %PROCESSOR_ARCHITECTURE% abgefragt, sondern ob die Datei "%Program Files(x86)%\NUL" existiert.
In Abhängikeit von dem Ergebnis der Abfrage kann man dann anderen Variablen passende Werte zuweisen wie
  • "%WINDIR%\System32" oder "%WINDIR%\SysWOW64"
  • "32" oder "64"
  • "x86" oder "x64"
  • usw.
so dass man die Abfrage nur einmal am Anfang der Prozedur machen muss ...

>HIER < noch ein Hinweis auf die von Butterly_Joe präferierte Methode.

Im übrigen kann ich nur meine Empfehlung bekräftigen, die originalen, englischen Pfadbezeichnungen zu verwenden. Dann laufen die Prozeduren und Programme mit fast 100%iger Wahrscheinlichkeit auch unter anderen als deutschen Versionen richtig.
-------------------------
Rehform der Revorm der Rechtschreibung? Nein, danke!

This post has been edited 3 times, last edit by "Nemo" (Feb 6th 2012, 8:37pm) with the following reason: Typo


  • "Sentionline" started this thread

Posts: 90

Date of registration: Jun 22nd 2010

Thanks: 7 / 5

  • Send private message

8

Monday, February 6th 2012, 7:02pm

Mit Batch kann ich nicht viel anfangen, aber muss das nicht so gehen?

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
FOR %%i IN (D E F G H I J K L M N O P Q R S T U V W X Y Z) DO IF EXIST %%i:\Install_x64-x32\Test.exe SET CDROM=%%i:

IF %PROCESSOR_ARCHITECTURE%==AMD64 (

start /wait %CDROM%\Install_x64-x32\Reg\Startmenu64.exe

) ELSE (

IF %PROCESSOR_ARCHITECTURE%==x86 (

start /wait %CDROM%\Install_x64-x32\Reg\Startmenu32.exe

)

exit


Quoted

Im übrigen kann ich nur meine Empfehlung bekräftigen, die originalen, englischen Pfadbezeichnungen zu verwenden.

Die erstellten Verknüpfungen verweisen ja auf deutsche Verzeichnisnamen. Die Silent installer greifen sich je nach Architektur entweder "Programme" oder "Programme (x86)". Installer mit AutoIt vergebe ich immer die Variable "@Programfiles & "\*".

Am Ende des CHKLNK lass ich einen AutoIt Linkchecker durchlaufen, der Verknüpfungen prüft, die auf RunDll verweisen (VobSub / XviD). Die Methode von Wixfigur ist genau das, was ich vermeiden wollte. Ein wirklich sehr interessanter und umfangreicher Ansatz, das ich mir sehr genau ansehen werde.

mfg

PapaB

V.I.P.

Posts: 44

Date of registration: Sep 23rd 2008

Thanks: 0 / 33

  • Send private message

9

Monday, February 6th 2012, 8:47pm

Danke für die schnelle Antwort
Nemo, deine Idee nach dem "%Program Files(x86)%\NUL" zu suchen war genau das was ich brauchte.
JETZT funktioniert es.
Danke. Gruß PapaB

Nemo

Nordlicht am Taunus

Posts: 1,031

Date of registration: Sep 23rd 2008

Thanks: 96 / 137

  • Send private message

10

Monday, February 6th 2012, 9:33pm

Mit Batch kann ich nicht viel anfangen, aber muss das nicht so gehen?

Eben nicht! Die Die zweite Abfrage im ELSE-Zweig bringt nichts, wenn Du (un-)wissentlich den falschen Befehlsinterprter benutzt!
In meinem vorigen Post habe ich noch einen Hinweis auf eine Abfrage angebracht, die Butterly_Joe kürzlich in einem anderen Thread vorgeschlagen hat.
-------------------------
Rehform der Revorm der Rechtschreibung? Nein, danke!