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

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Автоматическая установка приложений (http://forum.oszone.net/forumdisplay.php?f=61)
-   -   [решено] Web Money (http://forum.oszone.net/showthread.php?t=67816)

desperate 27-06-2006 19:09 455437

Web Money
 
Всем привет...решил на днях сделать тихую установку Web Money Keeper Classic 3.0.0.0 но ничего у меня не получилось. Пытался написать AutoIT скрипт, но тоже облом, т.к. почему - то в окнах с лицензионнными соглашениями напрочь блокируеться клавиатура, и в сязи с этим не получаеться перейти и поставить галочку о согласии... а с перемещением мыши я пока не научился работать, чтобы подвести ее и нажать в нужном месте...
буду очень рад выслушать ваши предложения и соображения по этому поводу



13-Jul-06

Решение:

AutoIt скрипт (тестировался на версии WebMoney Keeper Classic 3.0.0.2 Standard)

SAOPP 28-06-2006 14:55 455731

Такого рода приложения заморочены сильно очень...

XXXler 28-06-2006 15:23 455738

Цитата:

Пытался написать AutoIT скрипт, но тоже облом, т.к. почему - то в окнах с лицензионнными соглашениями напрочь блокируеться клавиатура, и в сязи с этим не получаеться перейти и поставить галочку о согласии
используй не SendKey(), а ControlClick()

desperate 28-06-2006 15:45 455747

XXXler
так я и использую ControlClick()...
дело в том, что даже при обычной установке клавиша TAB не работает для переходом и приходиться тыкать мышкой... поэтому кто умеет ей обращаться с помощью AutoIT, поделитесь пожалуйста опытом(а конкретно интересует перемещение в нужную точку)

XXXler 28-06-2006 16:26 455764

desperate, скачай SciTE, в состав входит AU3Record, который как Multiset записывает действия пользователя в скрипт AutoIt
кстати MultiSet сам предлагаешь, и не пользуешься? ;)

desperate 28-06-2006 17:24 455776

XXXler
скачал я SCiTE и ненашел там AU3Record

XXXler 28-06-2006 18:51 455801

В SciTE: Alt+F6

desperate 28-06-2006 20:11 455816

XXXler
ноль реакции...

Sanja Alone 29-06-2006 01:54 455893

desperate
Цитата:

конкретно интересует перемещение в нужную точку
Просто переместить указатель в точку (х,у) с заданной скоростью (0 - мгновенно; по ум. 10)
Код:

MouseMove ( x, y [, speed] )
Переместить указатель и кликнуть в точке (х,у)
Код:

MouseClick ( "button" [, x, y [, clicks [, speed ]]] )
Для примера: нажать 1 раз левый батон в точке (100,200) мгновенно переместив указатель в заданную позицию:
Код:

MouseClick ( "left", 100, 200, 1, 0 )
Собс-но, как кликнуть мышкой я писал в FAQ еще в феврале :read:
(обрати внимание на привязку координат Opt("MouseCoordMode",режим_привязки) ).

desperate 29-06-2006 02:23 455897

Sanja Alone
спасибо тебе большое, но как пользовать в общем виде я знаю, т.к. скачал русский хелп... ты бы не мог объяснить конкретно откуда идет начало координат(у меня в этом вся трабла - не могу навести мышь в нужное место(мне надо навести в левый нижний угол примерно на 10 пикселей от нижней границы окна))

Sanja Alone 30-06-2006 01:46 456312

desperate
Цитата:

ты бы не мог объяснить конкретно откуда идет начало координат
Еще раз посмотри FAQ. Я ведь не русский мануал переписывал, а пытался рассмотреть неоднозначные моменты. Ответ на твой вопрос - это пункт 6 раздела "Вввод данных / работа с элементами управления".

desperate 30-06-2006 16:46 456520

мне все - таки удалось побороть проблему отказа клавы, за что спасибо Sanja Alone. Только все равно столкнулся с одной проблемой.
В самом последнем окне, надо убрать галку на запуск программы и нажать кнопку готово. этого у меня не вышло. Привожу пример скрипта
Код:

#cs
----------------------
объявление переменных
----------------------
$Title - заголовок окна установщика
$Title2 - заголовок системного окна
$file - имя инсталляционного файла
----------------------
#ce
Global $Title='Установка WebMoney Keeper Classic 3.0.0.0', $Title2='Предупреждение системы безопасности', $file='wm2.exe'
Run ( @ScriptDir & '\' & $file )
WinWaitActive ( $Title, 'Добро пожаловать!' )
Send ( '{ENTER}' )
ControlCommand($Title,"1. Вы принимаете ВСЕ условия этого соглашения?","Да, я согласен со всеми условиями данного соглашения","Check",'')
Send ( '{ENTER}' )
ControlCommand("2. Установка WebMoney Keeper Classic 3.0.0.0","2. Вы принимаете ВСЕ условия этого соглашения?","Да, я согласен со всеми условиями данного соглашения","Check",'')
Send ( '{ENTER}' )
ControlCommand($Title,"3. Вы принимаете ВСЕ условия этого соглашения?","Да, я согласен со всеми условиями данного соглашения","Check",'')
Send ( '{ENTER}' )
ControlCommand($Title,"4. Вы принимаете ВСЕ условия этого соглашения?","Да, я согласен со всеми условиями данного соглашения","Check",'')
Send ( '{ENTER}' )
ControlCommand($Title,"5. Вы принимаете ВСЕ условия этого соглашения?","Да, я согласен со всеми условиями данного соглашения","Check",'')
Send ( '{ENTER}' )
ControlCommand($Title,"6. Вы принимаете ВСЕ условия этого соглашения?","Да, я согласен со всеми условиями данного соглашения","Check",'')
Send ( '{ENTER}' )
;Установка по в директорию по умолчанию
Send ( '{ENTER}' )
;Установка в программную группу по-умолчанию
Send ( '{ENTER}' )
WinWaitActive ( $Title, 'Внимание!' )
Send ( '{ENTER}' )
WinWaitActive ( $Title2, 'WebMoney Transfer Root Authority' )
Send ( '{TAB}' )
Send ( '{ENTER}' )
WinWaitActive ( $Title2, 'WebMoney Transfer Root Authority' )
Send ( '{TAB}' )
Send ( '{ENTER}' )
WinWaitActive ( $Title2, 'Готовится установка сертификата от центра сертификации (ЦС) в этом домене:' )
Send ( '{ENTER}' )
;Отменяем запуск программы, по окнчании установки
ControlCommand($Title,"Установка завершена","Запустить WebMoney Keeper Classic 3.0.0.0","UnCheck",'')
;Давим на кнопку ГОТОВО
WinWaitActive ( $Title, 'Установка завершена' )
Send ( '{ENTER}' )


Sanja Alone 01-07-2006 03:38 456660

desperate
Цитата:

надо убрать галку на запуск программы и нажать кнопку готово
Скорее всего, в данной ситуации поможет ф-ция Send('{SPACE}'). Просто нужно при необходимости предварительно подвести указатель (по ум. он уже может быть на данном эл-те) к этому проблемному чекбоксу. Тут поможет все та же ф-ция Send: Send('{UP}'), Send('{DOWN}'), Send('{TAB}'), Send('^{TAB}') и т.п. - посмотри что именно нужно "послать" окну для перехода к требуемому эл-ту управления.

Т.е., решение проблемы выглядит примерно так:
Код:

;1. подвести указатель к галке постустановочного запуска приложения
Send('{что-то}')
;2. снять галку на запуск приложения
Send('{SPACE}')
;3. нажать "Готово"
Send('{ENTER}')

P.S. Ес-но, все эти сенды будут отправлены активному окну, след-но, для гарантии активности нужного окна еще не помешало бы предварительно убедиться в этом:
Код:

WinActivate('Окно','Текст')
WinWaitActive('Окно','Текст')


desperate 01-07-2006 08:32 456666

Sanja Alone
изменил я концовку по твоему совету, но все равно ничего не выхоит:
Код:

WinActive ( $Title, 'Установка завершена' )
WinWaitActive ( $Title, 'Установка завершена' )
Send ('{TAB}')
Send ('{SPACE}')
Send ( '{ENTER}' )


Sanja Alone 01-07-2006 11:13 456686

desperate
Цитата:

;Отменяем запуск программы, по окнчании установки
ControlCommand($Title,"Установка завершена","Запустить WebMoney Keeper Classic 3.0.0.0","UnCheck",'')
;Давим на кнопку ГОТОВО
WinWaitActive ( $Title, 'Установка завершена' )
Send ( '{ENTER}' )
Не посмотрел я на твой скрипт, а напрасно...
Там две ошибки:
  1. Ф-ция WinWaitActive должна быть перед ControlCommand
  2. Ошибочный третий аргумент ф-ции ControlCommand - это ControlID (идентификатор эл-та управления). Что может выступать в кач-ве такого идентификатора - см. пункт 7 раздела "Вввод данных / работа с элементами управления" уже упоминавшегося мной FAQ. При этом, обратиться к эл-ту по текстовому значению можно только если в этом тексте присутствует знак "амперсанд" (&), иначе - фигушки (твой случай). Извиняюсь за дезу, по тексту, ес-но, обратиться можно, но лучше это делать только при наличии амперсанда, т.к. это гарантирует уникальность данной строки (ибо след. за амперсандом символ - это горячая клавиша данного эл-та управления, "послать" к-рую окну можно с пом. ф-ции Send('!символ_после_амперсанда') ). В противном же случае, возможны траблы, т.к. подобный текст может быть еще и в каком-то другом эл-те данного окна.
P.S. Да и сейчас ты ошибся - в первой строке должно быть не WinActive( $Title, 'Установка завершена' ), а WinActivate( $Title, 'Установка завершена' ).

desperate 01-07-2006 12:40 456697

Sanja Alone
исправил все твои замечания и пожелания и получил два способоа
ПЕРВЫЙ:
Код:

WinActivate( $Title, '' )
WinWaitActive ( $Title, '' )
ControlCommand($Title,'','Button3','UnCheck','')
;Давим на кнопку ГОТОВО
Send ( '{ENTER}' )

ВТОРОЙ:
Код:

WinActivate( $Title, 'Установка завершена' )
WinWaitActive ( $Title, 'Установка завершена' )
Send ('{TAB}')
Send ('{TAB}')
Send ('{SPACE}')
Send ( '{ENTER}' )

и как обычно у меня получилась дуля... и вся проблема в этом чертовом последнем окне =(

Sanja Alone 02-07-2006 02:14 456860

desperate
Цитата:

ControlCommand($Title,'','Button3','UnCheck','')
Кнопку (Button) нельзя UnCheck-нуть, ее можно только ControlClick-нуть, хотя, думаю что в данном сл. и это не прокатит...

Цитата:

Send ('{TAB}')
Ты определись с к-вом табов, а то у тебя он то один, то два...

Цитата:

и вся проблема в этом чертовом последнем окне
Ну, ежели гора не идет к некоему г-ну мусульманского вероисповедания :) , то можно поступить жестче... Вот тебе еще два варианта:
  1. Закрыть процесс webmoney:
    Код:

    ProcessWait('webmoney.exe')
    ProcessClose('webmoney.exe')
    ProcessWaitClose('webmoney.exe')

  2. Убить процесс webmoney:
    Код:

    ProcessWait('webmoney.exe')
    RunWait(@Comspec & ' /C taskkill.exe /F /IM webmoney.exe','',@SW_HIDE)
    ;если происходит запуск еще каких-то дочерних процессов, то нужно добавить ключик:
    ;RunWait(@Comspec & ' /C taskkill.exe /F /IM webmoney.exe /T','',@SW_HIDE)


desperate 02-07-2006 23:22 457038

спасибо тебе огромное за то, что ты мне птыаешься помочь, но к сожелению и эти способы не прокатили.... процесс не убиваеться...

Sanja Alone 03-07-2006 02:00 457078

desperate
Цитата:

процесс не убивается
Честно говоря, я не могу придумать причину по к-рой несистемный процесс может не убиваться с пом. taskkill. Ты посмотри в "Диспетчере задач" после установки, какой процесс там реально запускается; webmoney.exe я написал от фонаря :) (я не знаю точного имени процесса, т.к. не пользуюсь WebMoney).

desperate 03-07-2006 10:38 457156

Sanja Alone
я понял, что ты его написал от фонаря, и заменил на процесс WM2.EXE, именно он запускаеться.... но результата не увидел

Sanja Alone
с количеством нажатий кнопки TAB тоже определился уже давно, нажимать ее дважды...первое нажатие выделяет кнопку ГОТОВО, второе переходит на CheсkBox

Sanja Alone 03-07-2006 13:23 457237

desperate
Ну, еще можешь увеличить паузы между посылкой клавиш, а также "время удержания" клавиши (может просто не успевает пройти какой-то из Send-ов):
Код:

Opt("SendKeyDelay", 15)          ;по ум. 5 мс
Opt("SendKeyDownDelay", 10)      ;по ум. 5 мс

;еще можно задать паузы между Send-ами с пом. Sleep-ов:

Send ('{TAB}')
Sleep(30)
Send ('{TAB}')
Sleep(50)
Send ('{ENTER}')

Если и эти "пляски с бубном" ни к чему не приведут, то остаются только 2 варианта: MouseClick и закрытие уже открывшегося окна WebMoney через WinClose или Send('!{F4}') или кликаньем в менюшке самой проги...

desperate 03-07-2006 16:49 457362

Sanja Alone
я попробую и сообщу результат, дело в том что даже просто Send ('{ENTER}') не срабатывает....

desperate 04-07-2006 18:42 457766

и снова полное фиаско

Sanja Alone 04-07-2006 21:49 457818

desperate
Цитата:

и снова полное фиаско
Я надеюсь, что ты не забыл вставить WinWait( $Title, 'Установка завершена' ) перед WinActivate( $Title, 'Установка завершена' )...

desperate 05-07-2006 00:00 457847

нет я этого не забыл.... я уже даже не знаю, что еще можно придумать, не хочет AutoIT работать с последним окном ну никак.... =(

Sanja Alone 05-07-2006 05:39 457887

desperate
Я переделал скрипт для WebMoney Keeper Classic (тестировал на версии 3.0.0.2 Standard).
Попробуй, вроде все пашет...

desperate 05-07-2006 16:53 458157

Sanja Alone спасибо....вроля работает....

sympler 29-10-2008 22:11 937470

сорри конечно, но как бы не пробовал, все не получается, вот скачал скрипт, запускаю его, запускаю webmoney и ничего не происходит, что не так?
установка проходит и с ключом /s или /S

postalok 31-01-2009 14:48 1025369

ребят помогите нужна тихая установка для 3.7.0.0, выложенный скрипт не работает вернее зависает при принятии соглашения((

sympler 22-05-2009 22:23 1125292

Вложений: 1
выкладываю автоит скрипт для версии 3.7.0.1


Время: 22:19.

Время: 22:19.
© OSzone.net 2001-