Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Цитата Nun-Nun:
добавьте если не сложно. »
Добавил (удаление папок так же закомментировано):
Код: Выделить весь код
	If objFolder.Files.Count = 0 And objFolder.SubFolders.Count = 0 Then
		'objFolder.Delete True
	End If
но не проверял:
читать дальше »
Код: Выделить весь код
Option Explicit

Dim objFSO
Dim arrTargetPaths


arrTargetPaths = Array("C:\WINDOWS\winhlp32.exe", "C:\WINDOWS\winhelp.exe", "C:\WINDOWS\Installer\{90110419-6000-11D3-8CFE-0150048383C9}\wordicon.exe")

Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")

With WScript.CreateObject("Shell.Application")
	ScanSubFolders objFSO.GetFolder(.NameSpace("shell:Start Menu").Self.Path), arrTargetPaths
	ScanSubFolders objFSO.GetFolder(.NameSpace("shell:Common Start Menu").Self.Path), arrTargetPaths
End With

Set objFSO = Nothing

WScript.Quit 0
'=======================================================

'=======================================================
Sub ScanSubFolders(objFolder, arrTargetPaths)
	Dim objSubFolder
	Dim objFile
	
	Dim elem
	
	WScript.Echo "[" & objFolder.Path & "]"
	
	For Each objFile In objFolder.Files
		If UCase(objFSO.GetExtensionName(objFile.Path)) = UCase("lnk") Then
			With WScript.CreateObject("WScript.Shell").CreateShortcut(objFile.Path)
				For Each elem In arrTargetPaths
					If UCase(elem) = UCase(.TargetPath) Then
						WScript.Echo vbTab, "Name:   ", objFSO.GetBaseName(objFile.Name)
						WScript.Echo vbTab, "Path:   ", objFile.Path
						WScript.Echo vbTab, "Target: ", .TargetPath
						WScript.Echo vbTab
						
						'objFile.Delete True
						
						Exit For
					End If
				Next
			End With
		End If
	Next
	
	For Each objSubFolder In objFolder.SubFolders
		ScanSubFolders objSubFolder, arrTargetPaths
	Next
	
	If objFolder.Files.Count = 0 And objFolder.SubFolders.Count = 0 Then
		'objFolder.Delete True
	End If
End Sub
'=======================================================

Цитата Nun-Nun:
Предполагается, что каждый такой аддон будет проверять только наличие ранее установленной версии одной конкретной программы, и если находит, то удаляет её папку и ярлыки. Устанавливаемые программы (в подавляющем большинстве случаев) имеют всего один исполняемый файл, а при инсталляции создают в меню "Пуск" свою собственную папку с 1-5 ярлыками в ней, так что если пользователь ничего не менял, »
А как быть с теми программами, которые используют одну папку в Главном меню, например, MS Office и FrontPage?!

P.S. Есть подозрение, что Вы не сможете его использовать при установке в виде Addon'ов в таком виде из-за «CreateObject("Shell.Application")».
Это сообщение посчитали полезным следующие участники:

Отправлено: 07:08, 05-03-2011 | #10