PDA

Показать полную графическую версию : [Архив - Часть 1.1] AutoIt скрипты


Страниц : 1 2 3 4 5 6 7 [8] 9 10 11 12 13 14 15 16 17

Sanja Alone
19-09-2005, 02:54
bogomolv
НЕ МОГУ ввести латинскую "D"!Chr(68) пробовал?

Хотел бы подмазаться.А какие проблемы, я же недавно предлагал всем желающим присоединяться. Если есть что-то, чего не жалко раздать всем и нашару - прошу. Авторства я себе присваивать не собираюсь, честность - мой порок :)

Но, блин, как же это тяжело думать о других...Альтруизм - врожденная неизлечимая болезнь. Если с этим родился, с этим и помрешь. Я даже в игрушках всегда играю за хороших...

Но как же мы по-разному думаем!Ес-но, одинаково мыслящие люди - это уже роботы :) На нашей Окраине политики любят называть таких биомассой. Ужасное, но предельно точное определение из уст мерзких лицемерных существ...
Вместо autoit-foxitpdf.au3 у меня в ...У меня программы ставятся с отдельного DVD (на основе WPI), к тому же я не люблю установку прог через $oem$ - тогда уж лучше юзать sfx-архивы. Возьмем, например мой любимый Far - я никогда не буду его ставить скриптом, а только через sfx. Да и скрипты я стараюсь делать с расчетом на простых юзеров.

SlavaS
19-09-2005, 09:21
EgOrus
Спасибо твик помог, все получилось :)

bogomolv
19-09-2005, 22:33
Sanja Alone
Chr(68) пробовал?
Обижаешь, начальник!

bogomolv
19-09-2005, 22:38
Sanja Alone
к тому же я не люблю установку прог через $oem$
"Какие Ваши доказательства?" (с) Красная жара

Sanja Alone
20-09-2005, 02:25
bogomolv
"Какие Ваши доказательства?" (с) Красная жараЖаль, что ты не можешь передать акцент, с к-рым была произнесена эта фраза :) А "доказательства" мои простые: опять же приведу в кач-ве примера Far. Что мы имеем: более тысячи файлов общим объемом в 16 с лишним мегабайт. Через $oem$ с CD/DVD это дело будет очень долго копироваться, постоянно дергая диск по причине большого к-ва мелких файлов, а из sfx-а ставится за несколько секунд. Хотя, метод $oem$ вполне приемлем для установки программ с малым к-вом файлов, таких, как упомянутый выше FoxitPDFReader. И ес-но, $oem$-метод лишен смысла при установке приложений НЕ с диска с Виндой - мой случай.
В огороде бузина, а в Киеве Sanja Alone?Я продолжу: За те я тебе полюбив, що на руцi перстень маеш... Эта поговорка употребляется с целью показать человеку, что он говорит о несвязанных между собой вещах, порет чушь. Я же говорил о предпочитаемом мной способе установки, так же, как ты о способе $oem$. Ты бы лучше что-то по сути твоей нелюбви к sfx сказал, а не пытался меня обидеть.

P.S. На будущее: если хочется сказать мне какую-то гадость, то для этого есть e-mail. Иначе можно форум превратить в подобие одной известной fido-конференции, в к-рой от банальных перепалок перешли к межнациональным словесным войнам. Какое-то время это даже было забавно читать, потом стало скучно, а в рез-те эху снесли с бона...

VelDmi
20-09-2005, 07:38
bogomolv
Вместо autoit-foxitpdf.au3 у меня в ...\$oem$\$Progs\FoxitReader лежат FoxitReader.exe и foxitpdfreader.reg
Хорошая программа да еще и установки не требует. А как ассоциировать файлы с расширением pdf с этой программой?

EgOrus
20-09-2005, 09:58
VelDmi
добавь в свой foxitpdfreader.reg (не забудь поменять пути если у тебя другий):; Foxit PDF Reader
[HKEY_CLASSES_ROOT\.pdf]
@="FoxitReader.Document"
"Content Type"="application/pdf"

[HKEY_CLASSES_ROOT\FoxitReader.Document]
@="PDF Document"
"BrowseInPlace"="1"

[HKEY_CLASSES_ROOT\FoxitReader.Document\DefaultIcon]
@="C:\\PROGRA~1\\PDFREA~1\\FOXITR~1.EXE,1"

[HKEY_CLASSES_ROOT\FoxitReader.Document\DocObject]
@="0"

[HKEY_CLASSES_ROOT\FoxitReader.Document\protocol\StdFileEditing\server]
@="C:\\PROGRA~1\\PDFREA~1\\FOXITR~1.EXE"

[HKEY_CLASSES_ROOT\FoxitReader.Document\protocol\StdFileEditing\verb\0]
@="&Edit"

[HKEY_CLASSES_ROOT\FoxitReader.Document\shell\open\command]
@="\"C:\\PROGRA~1\\PDFREA~1\\FOXITR~1.EXE\" \"%1\""

[HKEY_CLASSES_ROOT\FoxitReader.Document\shell\print\command]
@="C:\\PROGRA~1\\PDFREA~1\\FOXITR~1.EXE /dde"

[HKEY_CLASSES_ROOT\FoxitReader.Document\shell\print\ddeexec]
@="[print(\"%1\")]"

[HKEY_CLASSES_ROOT\FoxitReader.Document\shell\printto\command]
@="C:\\PROGRA~1\\PDFREA~1\\FOXITR~1.EXE /dde"

[HKEY_CLASSES_ROOT\FoxitReader.Document\shell\printto\ddeexec]
@="[printto(\"%1\",\"%2\",\"%3\",\"%4\")]"
или сокращенный вариант
; Foxit PDF Reader
[HKEY_CLASSES_ROOT\.pdf]
@="FoxitReader.Document"
"Content Type"="application/pdf"

[HKEY_CLASSES_ROOT\FoxitReader.Document]
@="PDF Document"
"BrowseInPlace"="1"

[HKEY_CLASSES_ROOT\FoxitReader.Document\DefaultIcon]
@="C:\\PROGRA~1\\PDFREA~1\\FOXITR~1.EXE,1"

[HKEY_CLASSES_ROOT\FoxitReader.Document\DocObject]
@="0"

[HKEY_CLASSES_ROOT\FoxitReader.Document\shell\open\command]
@="\"C:\\PROGRA~1\\PDFREA~1\\FOXITR~1.EXE\" \"%1\""
bogomolv
Sanja Alone
стоит ли из-за таких пустяков ссориться, у каждого свои любимые методы и вкусы, а о вкусах как известно не спорят

bogomolv
20-09-2005, 10:44
Sanja Alone
метод $oem$ вполне приемлем для установки программ с малым к-вом файлов
Золотые слова. Именно поэтому через \$oem$\$Progs у меня устанавливаются только 5 из 30 "автоустанавливаемых" программ. Установка остальных программ идет, как правило, через SFX-архив, содержащий дистрибутив программы, файлы ее настроек и скрипты автоустановки...
О чем спорим?

EgOrus
Считаю полезным также прописывать регистрацию pdf-файла на FineReader:;Открыть с помощью FineReader
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\FoxitReader.Document\shell\Open With FineReader]
@="Открыть с помощью FineReader"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\FoxitReader.Document\shell\Open With FineReader\Command]
@="\"C:\\Program Files\\ABBYY FineReader 7.0 Professional Edition\\FineReader.exe\" \"%1\""
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\FoxitReader.Document\shell\Open With FineReader\ddeexec]
@="Open(\"%1\")"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\FoxitReader.Document\shell\Open With FineReader\ddeexec\Application]
@="FineReader"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\FoxitReader.Document\shell\Open With FineReader\ddeexec\Topic]
@="System"

EgOrus
20-09-2005, 11:00
bogomolv
не... это не мне это для VelDmi, наверное будет полезно :) я пользуюсь сокращенным вариантом и то лишь при создании WinPE
кстати сообщения лучше редактировать, если чего-то забыл дописать, чем плодить неск. подряд :)

bogomolv
20-09-2005, 23:20
Автоматизация подготовки диска к установке системы.
Два скрипта NewDisk.au3 и Unattend.au3:
http://forum.oszone.net/attachment.php?attachmentid=997&stc=1
http://forum.oszone.net/attachment.php?attachmentid=998&stc=1
http://forum.oszone.net/attachment.php?attachmentid=999&stc=1
Блин, как сделать, чтобы были рисунки?
С их помощью процесс развертывания системы на новом компьютере (друзья, дети, дети друзей и друзья детей) сводится к загрузке с CD Windows PE и исполнению этих самых скриптов.

Первым скриптом готовится диск: разбиение диска, его форматирование, развертывание WinPE, создание типовых папок, сбрасывание дистрибутива WinXP.
Привязка дистрибутива к машине и пользователю осуществляется вторым скриптом. Им правится unattend.txt: пользователь, настройки экрана, oem-драйвера и т.п. Самое муторное в этой процедуре - правка OemPnPDriversPath. Чтобы максимально облегчить редактирование этого параметра, включил в скрипт дополнительные средства обработки папки $oem$\$1\drivers.
Единственное, что приходится делать ручками (вернее, головой), отбирать для дистрибутива заготовки драйверов (включающие при необходимости скрипты автоустановки и подстройки последних). Как уже писал, для этого имею базу таких заготовок, которую по мере обновления драйверов и знакомства с новым железом периодически пополняю.
После такой подготовки, занимающей в несложном случае полчаса, остается запустить автоустановку WinXP. Проследив результат и подкорректировав исходники, вручаю "клиенту" работающую машину с "ноутбучным" комплектом ПО для автопереустановки системы, о котором рассказывал раньше.

Конечно, установка типовой системы с CD проще и быстрее. Для подобных целей имею собственный "супер-диск" с набором основных драйверов и типовых программ. Но чтобы донастроить установленную таким образом систему требуется квалификация. Вариант с дистрибутивом, полностью привязанным к машине, позволяет самому неподготовленному пользователю самостоятельно поддерживать работоспособность системы самым эффективным способом - периодически вчистую ее переустанавливая.

В продолжение разговора об интересных функциях.
При отладке работы NewDisk.au3 столкнулся с необходимостью считывать результаты командной строки непосредственно в память: WinPE работает с CD, жесткий диск еще не размечен, создавать виртуальный диск, чтобы выполнить DiskPart.exe /S list.txt > 1.txt, не хотелось. Нашел красивую замену в лице CLIPCOPY.EXE (21Kb), считывающей выходные данные командной строки в clipboard. С помощью этой программульки считываю информацию о присутствующих в системе дисках следующим образом:
RunWait('%Comspec% /C DiskPart.exe /S $iDir$\dpartLIST$i$.txt | CLIPCOPY','',0)
$dsk=StringSplit(ClipGet(),@CRLF)

Еще одна находка.
Раньше для развертывания WinPE на жестком диске (использую WinPE, в том числе, и при переустановке системы для автоудаления "замусоренных" системных папок) запускал установку Консоли восстановления, которая нужна была только для получения файловой копии загрузочного сектора BOOTSECT.DAT. Добрые люди подсказали, что в BartPE есть плагин, делающий это проще, быстрее и гибче. Позаимствовал оттуда MKBT.EXE (26Kb) и NT2PELDR.EXE (16Kb). Теперь создание загрузчика WinPE выглядит так:
RunWait('@ScriptDir@\mkbt.exe ('@ScriptDir@mkbt.exe) -x -c $ds$ $ds$\Peldr.dat')
RunWait('@ScriptDir@\nt2peldr.exe ('@ScriptDir@nt2peldr.exe) $ds$\Peldr.dat')
IniWrite('$ds$\Boot.ini','operating systems','C:\Peldr.dat','"Microsoft Windows PE" /MiniNT')

Последние находки позволили оптимизировать NewDisk.au3 так, что теперь можно подготовить чужой диск, просто подключив его к своей машине.

Sanja Alone
21-09-2005, 02:39
bogomolv
Извини, конечно. Но зря ты так!Просто у меня обострено чувство справедливости.
Давай-ка займемся самоцензурой и все подправим.ОК, ты только поговорки подбирай не такие резкие и более уместные :)

VelDmi
21-09-2005, 06:40
bogomolvEgOrus
Действительно огромное спасибо!
Не думал, что все так просто. Теперь буду ковырять другие программы в этом направлении, например XnView, который ставится unattend , но не забирает на себя графические форматы файлов. И Light Alloy тоже.

DenchikK
21-09-2005, 14:58
Получился скриптик для bootscreen (спасибо огромное за разъяснение Sanja Alone (14 страница)):


If @OSVersion="WIN_XP" then

if @OSServicePack="Service Pack 1" then
IniWrite (@HomeDrive & "\boot.ini", "operating systems", "multi(0)disk(0)rdisk(0)partition(1)\WINDOWS", '"Microsoft Windows XP Professional" /noexecute=optin /fastdetect /Kernel=myboots1.exe')
FileCopy("myboots1.exe", @WindowsDir & "\system32\")
endif

endif

If @OSVersion="WIN_XP" then

if @OSServicePack="Service Pack 2" then
IniWrite (@HomeDrive & "\boot.ini", "operating systems", "multi(0)disk(0)rdisk(0)partition(1)\WINDOWS", '"Microsoft Windows XP Professional" /noexecute=optin /fastdetect /Kernel=myboots2.exe')
FileCopy("myboots2.exe", @WindowsDir & "\system32\")
endif

endif

exit



Всё вроде бы работает, но хотелось бы сделать ещё и проверку просто XP, без сервис пака. Ни у кого пока не нашёл винды такой, поэтому проверить, что возвращает макрос @OSServicePack на такой винде, не получилось. Может у кого есть такая винда?

Sanja Alone
22-09-2005, 01:54
VelDmi
Теперь буду ковырять другие программы в этом направленииМожно не ковырять, а при помощи RegShot-а сразу получить готовый reg-файл с вносимыми в реестр изменениями при ручной установке ассоциаций файлов в указанных тобой программах. Только используй RegShot в редакции ParaGlider-а (http://www.paraglidernc.com/plugins/RegShot.cab)

DenchikK
Всё вроде бы работает, но хотелось бы сделать ещё и проверку просто XP, без сервис пакаА что тебе мешает применить условие Else?If @OSVersion="WIN_XP" then
Select
Case @OSServicePack="Service Pack 1"
код 1
Case @OSServicePack="Service Pack 2"
код 2
Case Else
код 3
EndSelect
EndIf

Sanja Alone
23-09-2005, 04:28
Добавил скрипты:
GordianKnot RipPack 0.35.0 (http://sanjaalone.h15.ru/files/autoit-gknot.zip)
No1 Media Fixer Pro 4.4 (http://sanjaalone.h15.ru/files/autoit-no1mf.zip)
No1 Video Converter 3.x.x (http://sanjaalone.h15.ru/files/autoit-no1vc.zip)

P.S. Для ускорения загрузки страницы со скриптами переписал ее на php (сортировка по прежнему на JavaScript). В связи с этим теперь страница crta такая (http://sanjaalone.h15.ru/crta.php), а au3 - вот (http://sanjaalone.h15.ru/au3.php).

bogomolv
24-09-2005, 05:32
Свежий скрипт

Opt('ExpandEnvStrings', 1); default = 0
Opt('ExpandVarStrings', 1); default = 0
Opt('RunErrorsFatal', 0); default = 1
Opt('TrayIconDebug', 1); default = 0
$pDir='@ProgramFilesDir@\ABBYY FineReader 8.0 Professional Edition'

DirCopy ('@ScriptDir@\Russian',$pDir,1)
RunWait ('Regedit /S "@ScriptDir@\FineReader8.reg"')
RunWait ('msiexec /i @ScriptDir@\FineReader8.msi /qb')
FileCopy ('@ScriptDir@\Russian\FineReader.exe',$pDir,1)
FileCopy ('@ScriptDir@\Russian\VerData.prt',$pDir,1)
Exit

В папке \Russian лежат разархивированные файлы "русской морды" от FineReader (Russian UI.exe\Data1.cab: Tutorial1.chm, FineReader1.chm, fineui1.dll, screenshotreader1.dll, FRWordZoom1.dll, Shell1.dll, Enginel.dll, Russian.amd, Russian.amm, MorphoRes1.dll, Scan\ScanMan1.dll, Support\Ainfo.dll ) и пара файлов от установленного FineReader.
FineReader8.reg - копия нужных настроек из ветки HKCU\Software\ABBYY.

Проверял на 677 и 706 версиях.

Sanja Alone
25-09-2005, 02:09
Добавил скрипты:
Videofixer 3.23 (http://sanjaalone.h15.ru/files/autoit-videofixer.zip)
WinDVD 6.0 (http://sanjaalone.h15.ru/files/autoit-windvd.zip)
WinRAR 3.5x (http://sanjaalone.h15.ru/files/autoit-winrar.zip)

biork
26-09-2005, 05:01
У меня такая проблемка: не обрабатывается секция if - в любом случае (есть первое окно или нет) -
скрипт продолжает работу (или останавливается при наличии первого окна) со строчек после "Else"
В каком месте кривые руки? Где ошибка?

if WinExists ("Заголовок окна", "текст1") then
WinWaitActive("Заголовок окна", "текст1")
ControlClick ("Заголовок окна", "текст1", "button1")
...
...
Else
WinWaitActive("Заголовок окна", "текст2")
ControlClick ("Заголовок окна", "текст2", "button1")
...
...
endif

EgOrus
26-09-2005, 07:20
biork
У тебя скрипт ждет пока окно не станет активным WinWaitActive("Заголовок окна", "текст2").
Может лучше использовать конструкции типа:
IF WinExists ("Заголовок окна", "текст1") then
WinActivate("Заголовок окна", "текст1")
ControlClick ("Заголовок окна", "текст1", "button1")
...
...
ElseIf WinExists ("Заголовок окна", "текст2") then
WinActivate("Заголовок окна", "текст2")
ControlClick ("Заголовок окна", "текст2", "button1")
...
...
EndIf

biork
26-09-2005, 15:06
А зачем он ждёт активности второго окна, если появилось и активно первое?
Может я не прав, но по-моему логика скрипта такова, что при наличии первого окна ("Заголовок окна", "текст1")
должны выполняться строки после "then", при отсутствии оного или при появлении другого ("Заголовок окна", "текст2")
должны выполняться строки после "Else".
Если убрать условное выполнение, то каждая ветка скрипта выполняется нормально в своих условиях.

Твой вариант с WinActivate попробовал - не помогает. Причём, в моём варианте при наличии первого окна скрипт
ждёт на строке ожидания второго окошка, а в твоём - заканчивает работу




© OSzone.net 2001-2012