Показать полную графическую версию : [решено] Иконка папки с помощью desktop.ini
Здравствуйте все! Помогите пожалуйста с решением задачи. К примеру есть самораспаковывающийся архив sfx winrar и в нем прописан путь установки в папку %ProgramFiles%, и вот хотелось бы сделать что-бы папка отображалась со значком находящегося внутри или ее подпапке exe файла. С помощью ТС нашел в одном из скачанного архива (предварительно распаковав его и увидев сей эффект) два файла desktop.ini и Folder.ico но их на прямую в папке не видать (отображение скрытых файлов ничего не дало), только с помощью ТС. Попробовал скопировать оба файла и положить в другую папку, безрезультатно. И еще читал, что можно сослаться не на иконку, а на exe файл. У меня много программ устанавливается именно посредством sfx (портативные) и как добавить нужный файл в уже существующий архив и в будущем делать очередной архив уже с необходимым файлом. Может как-то в рег файл все это записать и при распаковке архива указать запуск рег файла. Статья по этой ссылке не помогла http://forum.oszone.net/post-727898.html. Заранее спасибо.
mogdin, с оригиналом (Desktop.ini — Википедия (http://ru.wikipedia.org/wiki/Desktop.ini)) ознакомились?
На папке правой кнопкой мыши - свойства - настройка - сменить значёк - выбираешь значёк, ок - в папке появляется десктоп, можешь изучить его.
Потом всю эту папку запаковываешь в самораспак. архив, главное чтобы выбранный значёк не был перемещён, а лучше чтобы был в этой папке в в »
Изучил, скопировал и положил в другую папку сменив имя файла - результат 0. Да, кстати, после открыл ТС и задал атрибут "Системная" для папки и она тут-же отобразила значок. Получается надо както рег файл написать чтоб при его запуске папке присваивался атрибут "Системная"
Получается надо както рег файл написать чтоб при его запуске папке присваивался атрибут "Системная" »
С помощью файла реестра присваивать папкам/файлам атрибуты не представляется возможным.
Получается надо както рег файл написать чтоб при его запуске папке присваивался атрибут "Системная" »
не только. Как выяснилось (http://forum.oszone.net/post-1635627.html#post1635627), достаточно указать папке атрибут ReadOnly (только для чтения). Кстати, в этом случае предварительно скопированный в папку файл настроек автоматически активизируется - применяется значок, хинт и пр.
А чтобы
папке присваивался атрибут »
достаточно выполнить команду attrib с соотв. параметром.
Написал так:
@Echo Off
attrib +R "%ProgramFiles%\FastStone Capture"
Положил его в данную папку и запустил, сработало. Потом скопировал оба файла (attrib.cmd и desktop.ini) в другую папку изменил пути и запустил attrib.cmd - результата не было. Почему, вот вопрос. Кстати в первом случае cmd сам закрылся и иконка присвоилась, а во втором черное окно пришлось самому закрывать. Не пойму что делать. Содержимое новых файлов:
@Echo Off
attrib +R "%ProgramFiles%\Opera"
и
[.ShellClassInfo]
IconFile=Opera.exe
IconIndex=0
Infotip=Самый лучший браузер
ConfirmFileOp=0
mogdin, используйте тэг «code» (http://forum.oszone.net/misc.php?do=bbcode#code) для оформления кода.
У меня по Вашим файлам сработало.
Потом скопировал оба файла (attrib.cmd и desktop.ini) в другую папку »
Копировали в папку «%ProgramFiles%\Opera»?
Копировали в папку «%ProgramFiles%\Opera»? »
Да
Petya V4sechkin
02-05-2011, 18:04
attrib.cmd
Переименуйте (не надо называть CMD-файл так же, как EXE-файл attrib.exe).
Лучше всегда писать полное имя (а то и путь) в самом пакетном файле:
attrib.exe +R "%Prog…
не надо называть CMD-файл так же, как EXE-файл attrib.exe »
Немного не допонял
Лучше всегда писать полное имя (а то и путь) в самом пакетном файле: »
тут вроде полное имя и путь attrib +R "%ProgramFiles%\Opera", и почему вы пишете уже второй раз attrib.exe а не attrib.cmd
Petya V4sechkin
02-05-2011, 21:17
Немного не допонял
Что именно? Не можете переименовать CMD-файл?
почему вы пишете уже второй раз attrib.exe а не attrib.cmd
У вас в attrib.cmd запускается attrib (то есть, attrib.cmd пытается запустить сам себя).
Немного не допонял »
ЛИКБЕЗ: начиная с DOS, при запуске команды на выполнение (в т.ч. bat-файла), если команда не является внутренней для командного процессора и не указано полное имя внешней команды (включая расширение), порядок перебора вариантов выглядит следующим образом:
.СОМ - программные файлы;
.ЕХЕ - программные файлы (в другом формате);
.ВАТ - командные файлы.
Поиск выполняется в том порядке, в котором эти расширения перечислены выше. Если пользователь не указал, в каком каталоге следует искать программу, то поиск проводится в текущем каталоге и затем в каталогах, заданных командой DOS Path.
Потому тебе и предлагают сменить имя cmd-файла на любое, отличное от имени вызываемой команды - есть большая вероятность зациклить выполнение cmd.
Благодарен за объяснения, сейчас ставлю систему и буду пробывать. Как пройдет, отпишусь.
mogdin, Petya V4sechkin верно доглядел (а я — нет). Вы назвали пакетный файл «attrib.cmd». Внутри него Вы используете команду:
attrib +R "%Prog…
Командный процессор находит в текущем каталоге пакетный файл «attrib.cmd» и запускает его. И так по кругу.
Самый правильный путь — всегда указывать полный путь к файлу, наподобие:
"%systemroot%\system32\attrib.exe" +R "%Prog…
поскольку, скажем «reg.exe», «whoami.exe», «expand.exe» могут присутствовать в нескольких экземплярах в пути (скажем, из комплектов Resource Kit'ов, портированных утилит из Unix и т.п.). К сожалению, на практике сие применяют всё же редко.
Детали инициализации запуска процесса командным процессором можно почерпнуть в:
Launching Applications from the Shell (http://technet.microsoft.com/en-us/library/cc723564.aspx#XSLTsection127121120120)
Command Search Sequence
When a command is submitted for execution (either by typing or as part of a script), the shell performs the following actions:
…
4. If the command name does not specify a path, the shell attempts to match the command name against the list of internal shell commands. If a match is found, the internal command executes. Otherwise, the shell continues to step 5.
5. If the command name specifies a path, the shell searches the specified path for an executable file matching the command name. If a match is found, the external command (the executable file) executes. If no match is found, the shell reports an error and command processing completes.
6. If the command name does not specify a path, the shell searches the current directory for an executable file matching the command name. If a match is found, the external command (the executable file) executes. If no match is found, the shell continues to step 7.
7. The shell now searches each directory specified by the PATH environment variable, in the order listed, for an executable file matching the command name. If a match is found, the external command (the executable file) executes. If no match is found, the shell reports an error and command processing completes.
…
This example omits the path and file extension:
C:\>edit
To execute this command, the shell searches the current directory and then each directory in the search path. Assuming that the PATHEXT variable contains .COM;.EXE;.BAT;.CMD, each directory is searched for EDIT.COM, EDIT.EXE, EDIT.BAT and EDIT.CMD before the shell moves on to the next search directory.
Once the command shell resolves the command name either to an internal command or an external executable file, it executes the command as follows:
* If the command is internal, the shell executes it directly.
* If the command is a 16-bit or 32-bit Windows GUI executable program, the shell runs the program but does not wait for the command to complete.
* If the command is a 32-bit console application, or a 16-bit MS-DOS application, the shell runs the command in the current console window and waits for the command to complete.
* If the command is a script file (.BAT or .CMD), the shell switches to script mode and begins executing the script.
* If the command is a document or data file name associated with an application, the shell executes the appropriate application. The shell applies the previous rules based upon the type of the application associated with the data or document file. See the following section for more information on file associations.
…
Command Prompt (Cmd.exe) Runs Files That Do Not Have Executable File Name Extensions (http://support.microsoft.com/kb/811528)
Microsoft Windows XP - Start (http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/start.mspx?mfr=true)
CreateProcess Function (Windows) (http://msdn.microsoft.com/en-us/library/ms682425.aspx)
Припоздал ;).
Изменил имя cmd и все теперь получается. Подсовывал оба файла (cmd и ini) в sfx и задавал на запуск cmd файл. Всем огромное спасибо за помощь!
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.