![]() |
Expand. makecab, modifype с графическим интерфейсом
Вложений: 1
Софтинка позволяет распаковывать, запаковывать и сбрасывать контрольную сумму файлов. Все тоже самое что и expand, makecab и modifype, но прикрутил графический интерфейс. Файлы копируются в @HomeDrive\Results. Можно сразу копировать в дистрибутив. Писал для себя, но может кому пригодится.
|
tehnik_srs,
Прошу прощения за возможную чайниковость, крутил-вертел, но только с трудом понял как оно работает. "Вручную" с помощью Makecab и Expand всё распаковывается и запаковывается, но как это делается с помощью Вашей утилиты? ... тут ещё нужно поразбираться, т.к. исполнение каких-либо процедур (распаковка, запаковка и т.д.) в ExMakeMod происходит не по нажатию на кнопку с соответствующей надписью, а при выборе обрабатываемого файла, что для простого пользователя не очень-то очевидно. По логике обычного юзера должно бы быть так: например, я хочу заменить картинку дефолтных виндовских обоев на свою. Как известно, дефолтная картинка в дистрибе находится в папке I386 в файле bliss.jp_ Тогда делаем следующим образом: обзываем свою картинку как bliss.jpg, запускаем ExMakeMod, указываем место расположения дистриба и дистрибутивный bliss.jp_, в котором находится файл, подлежащий замене, т.е. дефолтная дистрибутивная картинка. Затем указываем свой неупакованный файл и жмём на кнопку "запаковать". При необходимости получить контрольную сумму (что лучше было бы сделать одновременно с запаковкой файла), жмём на соответствующую кнопку и получаем контрольную сумму. Далее, жмём на "Скопировать упакованный файл в дистрибутив" и полученный файл переносится в дистриб, заменяя исходный bliss.jp_, а не просто копируется в корневую папку дистриба (хотя его место в в папке I386), как это сейчас реализовано в ExMakeMod. Таким образом, если описанное реализовать в ExMakeMod - это было бы действительно и удобно и наглядно. Надеюсь, мой взгляд не будет воспринят, как безосновательные нападки; это всего лишь моё видение данного дела. |
Возможно я Вас неправильно понял, но на данный момент, если Вы хотите поменять картинку, то создаете ее с именем bliss.jpg; в ExMakeMod выпираете ее пунктом Контрольная сумма и Запаковать (он открывает сразу папку с файлом), после этого жмем F8, указав путь к дистрибу. Вот, собственно и всею
|
Цитата:
|
ОК, сделаю
|
Nun-Nun, переделал с учетом Ваших требований. Если можно, проверьте работоспособность сброса контрольной суммы, т.к. переделывал под вайном.
|
tehnik_srs,
Посмотрел, есть пара пожеланий в части кометики: 1) на мой взгляд, название пункта меню "Путь к дистрибутиву" (сбивает с толку) стОило бы назвать "Путь к папке в составе дистрибутива", т.к. папок в дистрибутиве много и какая из них пользователю потребуется заранее не ясно; 2) папку \Results было бы удобнее расположить в папке, из которой запущен ExMakeMod или выдать запрос пользователю о том, где её стОит расположить - пусть он сам укажет нужное ему место. В остальном - то, что надо! |
tehnik_srs,
У меня одно пожелание: можно убрать значок программы из области уведомлений? |
Вы про Tray?
Nun-Nun, изначально делал папку Results именно рядом с программой, но я новичок в программировании, а modifype не хочет обрабатывать файлы, содержащие русские имена. Не знаю как это побороть. А надпись переделаю. |
Цитата:
А за исправление надписи - отдельное спасибо! |
Цитата:
|
Nun-Nun, да я так и делал изначально, но надоедает при постоянном использовании, подумаю как бы выдавать это сообщение только если в пути кириллица.
stalinit078, ок, исправлю! |
Это версия с переделаной надписью и отсутствием значка в Tray. Насчет Results пока ничего не придумал, но я работаю над этим.
|
tehnik_srs,
Может попробовать так: при первом запуске программа предлагает указать место расположения папки Results для размещения результатов и при этом же выдаётся предупреждение, что она работает только с короткими именами файлов и папок, а также не поддерживает работу с названиями, содержащими спецсимволы, пробелы и кириллицу. Как только пользователь указал место расположения папки Results и нажал "ОК", программа создаёт какой-нибудь файл конфигурации (например, config.ini), в котором прописывается место размещения папки Results (в дальнейшем можно туда же записывать и место расположения папки в составе дистрибутива Windows). При последующем запуске программа смотрит наличие файла конфигурации и если он есть - считывает из него ранее записанные данные. При отсутствии файла конфигурации программа работает, как при первом запуске. |
Nun-Nun, да это не сложно, а вот как бы сделать проверку на кириллицу, думаю рыть в торону RegEX-пов или указать запрещенные символы
|
tehnik_srs,
Возможно это будет совсем примитивное предложение (я в этом не спец), но может сделать так: взять шаблон, содержащий все буквы латиницы, и последовательно сравнивать каждый из символов названия указанного пользователем файла (папки) с каждым из символов латиницы. При несовпадении хотя бы одного символа или превышении количества символов, допустимого для короткого имени, выдать соответствующее сообщение типа "Имя файла (папки) превышает допустимую длину или содержит пробелы, спецсимволы или кириллицу". P.S. Возможно предложенная выше идея не совсем подойдёт, и нужно разбираться с кодировками, но тут я мало что подскажу. |
Nun-Nun, ок, подумаю над всеми вариантами, доложу в трехдневный срок.
|
tehnik_srs,
Посмотрите здесь, что мне по поводу нашей проблемы написали, может пригодится: Как с помощью батника узнать, используется ли в названии файла\папки кириллица? |
Nun-Nun, спасибо
|
Обновил шапку, в ней последняя версия. Добавил выбор папки Results (при использовании киррилицы, выдаст предупреждение), данные о Results и дистрибутиве хранятся в инишнике (system32\ExMakeMod.ini) и подгружаются при запуске. Путь к Results программа спрашивает при первом запуске, потом можно изменить в меню.
|
tehnik_srs,
Попробовал в действии, есть несколько замечаний: 1) При использовании команды "Очистить всё" необходимо очищать только рабочие папки ExMakeMod-а, т.е. папки Expand, Makecab и CHECK_SUMM, а не всю пользовательскую папку! А то я по обыкновению для эксперимента выбрал системную папку Temp, где находилось несколько рабочих файлов и подпапок и никак не ожидал, что ExMakeMod при использовании команды "Очистить всё" попытается очистить всю системную папку Temp ! :o Я чуть со стула не упал! На мой взгляд, нужно иметь в виду, что пользователь для работы мог выбрать какую-то существующую папку, в которой уже могло что-то лежать, поэтому целесообразно чистить только папки Expand, Makecab и CHECK_SUMM. Вроде мелочь, а сколько инфарктов предотвратит! :) 2) Думаю, файл ExMakeMod.ini лучше распологать возле ExMakeMod.exe, а не в System32. Не каждому понравится присутствие временных файлов (пусть и кофигурационных) в системной папке, тем более, что автоматом этот файл оттуда не удаляется. Тут можно остановиться на компромиссном варианте: ExMakeMod.ini пусть лежит возле ExMakeMod.exe и копируется в System32 (если это необходимо) только на время работы ExMakeMod, а по завершении - снова оттуда удаляется. 3) Есть смысл немного опимизировать программу: а что если команды "Скопировать упакованный файл в дистрибутив" и "Путь к папке в составе дистрибутива Windows" объединить? Если при выборе команды "Скопировать упакованный файл в дистрибутив" будет автоматически производиться поиск и замена одноимённого файла в дистрибутиве, то и необходимость в команде "Путь к папке в составе дистрибутива Windows" отпадёт. 4) Косметика: при сохранении файла в папку дистрибутива выдаётся сообщение "Файлы скопированы...". Почему файлы, ведь скопирован всего один файл? В остальном всё прекрасно. |
1) Упс! Извините, переделаю
2) Ну вот я запускаю с рабочего стола и видеть рядом инишник не хочется. Да и программе его нужно откуда-то считывать, так что рандомное имя не получится. 3) Ок, попробую 4) Хм, тут посложнее, но посмотрю. |
Цитата:
|
Nun-Nun, По-поводу пункта 3. А зачем? Вы один раз указали дистрибутив и потом копируете по горячей клавише, а так придется указывать постоянно
|
Цитата:
Вот, в принципе, я так вижу это дело. |
Nun-Nun, Делаю поиск, нашел странный баг - в версии, которая в шапке, не работает modifype. Исправил, выложу сразу с рабочим поиском
|
Цитата:
|
Nun-Nun, уже присваиваю
|
Nun-Nun, Сделал поиск в дистрибутиве, инишник положил рядом с exe. Обновлено в шапке
|
tehnik_srs,
Потестировал. Программа близка к завершению, но вот что думаю: 1) при первом запуске программа просит указать папку в составе дистрибутива, но логичнее было бы попросить "Укажите папку, в которой расположен дистрибутив Windows"; аналогичную команду в меню стОит убрать вообще, т.к. теперь программа сама может искать нужное место (папку) в дистрибутиве для сохранения обработанного файла. 2) когда начал пробовать, по ошибке указал не папку с дистрибом, а другую, в итоге при попытке сохранения обработанного файла в дистриб программа сообщила, что файл благополучно скопирован, хотя никакого дистриба, разумеется, не нашла. 3) сохранение обработанного файла в дистриб происходит только при использовании команды в меню, но при нажатии кнопки F8 эта функция не работает. |
Nun-Nun, 1) Оставил такую возможность, чтобы сменить дистриб не убивая инишник
2) Хм, проверю 3) Посмотрел - извиняюсь, забыл раскомментарить |
Цитата:
|
Nun-Nun, исправил F8 и копирование, вроде работает, проверяйте. В шапке обновлено
|
Посмотрел. К сожалению проблема осталась.
Как я и говорил, запрос "Укажите путь к папке в составе дистрибутива Windows", который программа делает при первом запуске путает всё дело. Если пользователю требуется обработать несколько файлов, которые должны будут после обработки располагаться в разных папках дистриба, то программа автоматически делает поиск только в той папке, которую пользователь указал при первом запуске ExMAkeMod и, вероятно, во вложенных в неё, при этом все папки верхних уровней дистриба останутся не просканированными, в итоге программа не находит нужного для замены файла и сообщает о его отсутствии, что, разумеется, не соответствует действительности! В результате по-прежнему пользователю для каждого файла нужно вручную указывать нужную папку, а это автоматизма программе не прибавляет. Попытаюсь более наглядно пояснить, что имеено нужно. Допустим папка с дистрибом называется Distrib, а пользователю необходимо обработать несколько фалов, причём расположить их после обработки нужно в разных папках дистриба, например, папке Distrib\I386 , Distrib\Support\Tools и Distrib. Если при первом запуске на запрос программы пользователь укажет папку Distrib\I386, то в эту папку попадут только файлы, одноимённые с расположенными в ней, для файлов других папок (Distrib\Support\Tools и Distrib) потребуется вручную указывать нужную папку. Если же при первом запуске ExMAkeMod запросит указать папку с дистрибутивом (а не папку в составе дистрибутива!), то пользователь должен будет указать папку Distrib. В этом случае, после обработки каждого файла пользователю достаточно жамкнуть на F8, чтобы программа просканировала весь дистрибутив, т.е. папку Distrib (включая папки в неё вложенные), и автоматом закинула файл в нужное место. Таким образом, больше пользователю ничего вручную указывать не нужно! Тогда ExMAkeMod уж точно зря не скажет, что нужный файл для замены не найден! |
Nun-Nun, Хм, сейчас ExMakeMod запрашивает путь к папке (могу переименовать), например DISTRIB, после F8, она ищет файлы в DISTRIB и во всех вложенных папках. Если, например, в папке MAKECAB файлик 1.txt, она найдет его в DISTRIB\i386 и заменит этот файл. В чем проблема я не понял.
|
tehnik_srs,
Цитата:
Чтобы стало понятнее, сделайте так: например, пользователю нужно обработать два файла - Bliss.jpg и cskbc.dll. После обработки файл Bliss.jpg в запакованном виде должен попасть в папку \Nazvanie_Papki_v_kotoroy_nashoditsya_Distributiv\I386, а файл cskbc.dll - в папку \Nazvanie_Papki_v_kotoroy_nashoditsya_Distributiv\Cmpnents\TABLETPC\i386\. При первом запуске вместо папки, в которой расположен дистрибутив (т.е. ВМЕСТО ПАПКИ \Nazvanie_Papki_v_kotoroy_nashoditsya_Distributiv\) программа просит УКАЗАТЬ ПАПКУ В СОСТАВЕ ДИСТРИБУТИВА WINDOWS. Что в итоге происходит: пользователь для файла Bliss.jpg укажет папку \Nazvanie_Papki_v_kotoroy_nashoditsya_Distributiv\I386. После обработки этого файла при нажатии на F8 программа просканирует эту папку и папки в неё вложенные и скопирует Bliss.jp_ в \Nazvanie_Papki_v_kotoroy_nashoditsya_Distributiv\I386. Вроде всё нормально, но следующий обработанный файл, т.е. cskbc.dll должен попасть в \Nazvanie_Papki_v_kotoroy_nashoditsya_Distributiv\Cmpnents\TABLETPC\i386\, т.е. в папку, которую программа не сканировала и сканировать не могла, т.к. за папку дистрибутива воспринимает указанную при первом запуске \Nazvanie_Papki_v_kotoroy_nashoditsya_Distributiv\I386. В итоге при нажатии F8 программа нужного файла не находит и сообщает, что файл cskbc.dl_ не найден. Чтобы она его нашла нужно вручную указывать новое место, т.е. \Nazvanie_Papki_v_kotoroy_nashoditsya_Distributiv\Cmpnents\TABLETPC\i386\. Именно, чтобы такой чехарды не происходило я и предложил, чтобы программа при первом запуске запрашивала папку, в которой расположен дистрибутив Windows (корневую папку дистрибутива), т.е. \Nazvanie_Papki_v_kotoroy_nashoditsya_Distributiv\ , а не отдельную папку в его составе. Тогда в сферу поиска программы попадут все папки дистрибутива и при нажатии F8 не будет ложных сообщений о том, что файл не найден. |
Обновил в шапке. Изменены название для меню и сообщение в первом окне.
|
tehnik_srs,
Да, название в первом окне изменено правильно. Начал экспериментировать с файлом Bliss.jpg: указываю, как положено, при первом запуске ExMakeMod папку для работы с файлами и папку дистрибутива; открываю Bliss.jpg, жму "Контрольная сумма" - всё нормально; открываю полученный файл, жму "Запаковать" - тоже всё нормально, а дальше жму F8 - программа сообщает, что файл Bliss.jp_ не найден. Судя по всему, она смотрит только корневую папку дистрибутива и не заглядывает во вложенные подпапки. Посмотрите скрипт, видимо в команде, организующей поиск, есть ошибка. P.S. Перетащил файл Bliss.jp_ из дистрибовской подпапки I386 в корневую папку дистрибутива и нажал F8 - программа сообщила, что всё нормально и файл скопирован. Выходит, что ExMakeMod действительно смотрит только корневую папку и не заглядывает во вложенные. |
Nun-Nun, Проверил, создал файл 1.txt в DISTRIB\386. В качестве папки указал DISTRIB. Находит
Проверяю на wine, вечером проверю на винде |
tehnik_srs,
Возьмите какую-нибудь картинку, обзовите её Bliss.jpg и попробуйте повторить вышеописанный мною вариант. Только расположите этот файл для чистоты эксперимента в какой-нибудь недистрибутивной папке. |
Nun-Nun, Поправил поиск, действительно работало под wine, но не работало под виндой. Обновил шапку
|
tehnik_srs,
Посмотрел. Теперь всё действительно работает как надо! Огромнейшее спасибо! Утилита сделана вполне удобно для работы. Конечно можно и ещё посовершенствовать, но это уже по желанию автора. |
Nun-Nun, так Вы предложите, что улучшить
|
Улучшить?.. Например, три кнопки "Открыть файл" - это много, достаточно и одной, т.к. если в программе открывался какой-нибудь файл и над ним производилась хотя бы одна какая-то операция (из трёх предлагаемых "Контрольная сумма", "Запаковать" и "Распаковать"), то для выполнения двух остальных программа сама может использовать нужный файл. Чтобы было более наглядно сделаем так: жамкаем кнопку "Открыть файл", указывам нужный файлик, затем жмём "Контрольная сумма", далее - сразу "Запаковать файл". Обойтись при этом без второй кнопки "Открыть файл" вполне возможно, т.к. нужный файл и путь к нему программе уже известен. Ну и т.д.
|
Nun-Nun, Пока отметил тему решенной, а над Вашим предложением подумаю
|
Время: 06:10. |
Время: 06:10.
© OSzone.net 2001-