Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Microsoft Windows 2000/XP (http://forum.oszone.net/forumdisplay.php?f=6)
-   -   [решено] Иконка папки с помощью desktop.ini (http://forum.oszone.net/showthread.php?t=205968)

mogdin 01-05-2011 23:08 1668669

Иконка папки с помощью desktop.ini
 
Здравствуйте все! Помогите пожалуйста с решением задачи. К примеру есть самораспаковывающийся архив sfx winrar и в нем прописан путь установки в папку %ProgramFiles%, и вот хотелось бы сделать что-бы папка отображалась со значком находящегося внутри или ее подпапке exe файла. С помощью ТС нашел в одном из скачанного архива (предварительно распаковав его и увидев сей эффект) два файла desktop.ini и Folder.ico но их на прямую в папке не видать (отображение скрытых файлов ничего не дало), только с помощью ТС. Попробовал скопировать оба файла и положить в другую папку, безрезультатно. И еще читал, что можно сослаться не на иконку, а на exe файл. У меня много программ устанавливается именно посредством sfx (портативные) и как добавить нужный файл в уже существующий архив и в будущем делать очередной архив уже с необходимым файлом. Может как-то в рег файл все это записать и при распаковке архива указать запуск рег файла. Статья по этой ссылке не помогла http://forum.oszone.net/post-727898.html. Заранее спасибо.

Iska 02-05-2011 02:59 1668751

mogdin, с оригиналом (Desktop.ini — Википедия) ознакомились?

mogdin 02-05-2011 11:30 1668839

Цитата:

Цитата severagent007
На папке правой кнопкой мыши - свойства - настройка - сменить значёк - выбираешь значёк, ок - в папке появляется десктоп, можешь изучить его.
Потом всю эту папку запаковываешь в самораспак. архив, главное чтобы выбранный значёк не был перемещён, а лучше чтобы был в этой папке в в »

Изучил, скопировал и положил в другую папку сменив имя файла - результат 0. Да, кстати, после открыл ТС и задал атрибут "Системная" для папки и она тут-же отобразила значок. Получается надо както рег файл написать чтоб при его запуске папке присваивался атрибут "Системная"

Iska 02-05-2011 12:41 1668877

Цитата:

Цитата mogdin
Получается надо както рег файл написать чтоб при его запуске папке присваивался атрибут "Системная" »

С помощью файла реестра присваивать папкам/файлам атрибуты не представляется возможным.

ShaddyR 02-05-2011 12:42 1668878

Цитата:

Цитата mogdin
Получается надо както рег файл написать чтоб при его запуске папке присваивался атрибут "Системная" »

не только. Как выяснилось, достаточно указать папке атрибут ReadOnly (только для чтения). Кстати, в этом случае предварительно скопированный в папку файл настроек автоматически активизируется - применяется значок, хинт и пр.

А чтобы
Цитата:

Цитата mogdin
папке присваивался атрибут »

достаточно выполнить команду attrib с соотв. параметром.

mogdin 02-05-2011 13:01 1668888

Написал так:
@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

Iska 02-05-2011 14:10 1668922

mogdin, используйте тэг «code» для оформления кода.

У меня по Вашим файлам сработало.
Цитата:

Цитата mogdin
Потом скопировал оба файла (attrib.cmd и desktop.ini) в другую папку »

Копировали в папку «%ProgramFiles%\Opera»?

mogdin 02-05-2011 14:17 1668929

Цитата:

Цитата Iska
Копировали в папку «%ProgramFiles%\Opera»? »

Да

Petya V4sechkin 02-05-2011 18:04 1669065

Цитата:

Цитата mogdin
attrib.cmd

Переименуйте (не надо называть CMD-файл так же, как EXE-файл attrib.exe).

Iska 02-05-2011 18:30 1669092

Лучше всегда писать полное имя (а то и путь) в самом пакетном файле:
Код:

attrib.exe +R "%Prog…

mogdin 02-05-2011 19:53 1669135

Цитата:

Цитата Petya V4sechkin
не надо называть CMD-файл так же, как EXE-файл attrib.exe »

Немного не допонял

Цитата:

Цитата Iska
Лучше всегда писать полное имя (а то и путь) в самом пакетном файле: »

тут вроде полное имя и путь attrib +R "%ProgramFiles%\Opera", и почему вы пишете уже второй раз attrib.exe а не attrib.cmd

Petya V4sechkin 02-05-2011 21:17 1669171

Цитата:

Цитата mogdin
Немного не допонял

Что именно? Не можете переименовать CMD-файл?

Цитата:

Цитата mogdin
почему вы пишете уже второй раз attrib.exe а не attrib.cmd

У вас в attrib.cmd запускается attrib (то есть, attrib.cmd пытается запустить сам себя).

ShaddyR 02-05-2011 21:32 1669180

Цитата:

Цитата mogdin
Немного не допонял »

ЛИКБЕЗ: начиная с DOS, при запуске команды на выполнение (в т.ч. bat-файла), если команда не является внутренней для командного процессора и не указано полное имя внешней команды (включая расширение), порядок перебора вариантов выглядит следующим образом:
Цитата:

.СОМ - программные файлы;
.ЕХЕ - программные файлы (в другом формате);
.ВАТ - командные файлы.
Поиск выполняется в том порядке, в котором эти расширения перечислены выше. Если пользователь не указал, в каком каталоге следует искать программу, то поиск проводится в текущем каталоге и затем в каталогах, заданных командой DOS Path.
Потому тебе и предлагают сменить имя cmd-файла на любое, отличное от имени вызываемой команды - есть большая вероятность зациклить выполнение cmd.

mogdin 02-05-2011 21:39 1669189

Благодарен за объяснения, сейчас ставлю систему и буду пробывать. Как пройдет, отпишусь.

Iska 02-05-2011 22:17 1669209

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
читать дальше »
Цитата:

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
Microsoft Windows XP - Start
CreateProcess Function (Windows)

Припоздал ;).

mogdin 03-05-2011 23:25 1669833

Изменил имя cmd и все теперь получается. Подсовывал оба файла (cmd и ini) в sfx и задавал на запуск cmd файл. Всем огромное спасибо за помощь!


Время: 18:10.

Время: 18:10.
© OSzone.net 2001-