Форум программистов, компьютерный форум, киберфорум
Наши страницы
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.92/12: Рейтинг темы: голосов - 12, средняя оценка - 4.92
bort-747
43 / 65 / 9
Регистрация: 07.06.2013
Сообщений: 484
Записей в блоге: 1
1

Единый дистрибутив (Single installer)

11.02.2014, 11:26. Просмотров 2170. Ответов 21
Метки нет (Все метки)

Сейчас в месте с форумчанином Shocks пытаемся разработать "Единый дистрибутив (Single installer)"
Пакетник уже умеет кое что делать:
1.1) проверка на несуществующий пункт
1.2) выход на уровень выше
Но ещё требуется помошь в доработке его слабых мест, а именно:
2.1) Установка на локальный компьютер или группу компьютеров
2.2) Задать список компьютеров
2.3) Автоматическое определение расположение станции по IP (здесь имеется ввиду, что некоторые компьютеры ближе к определённому место положению дистрибутивов)
3.1) Проверка операционной системы на разрядность, установка программ по разрядности
3.2) перед установкой программ проверка существующих утилит на актуальность
4.1) авто-обновление инсталлятора

Всем желающим помочь в данном вопросе и не равнодушным прошу оказать помошь
Ниже наработанный код:
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
@echo off
SetLocal EnableExtensions EnableDelayedExpansion
set cherta1=------------------------------
set cherta2===============================
set "f1=%temp%\st.txt"
set "f2=%temp%\st2.txt"
set "01=:Soft_Standart"
set "02=:CRRedist"
set "03=:JRE"
set "04=:SKYPE"
 
copy nul %f1%>nul
copy nul %f2%>nul
 
:rcv
echo !cherta2!
echo 1  - serv1
echo 2  - serv2
echo -  - ‚л室
echo !cherta2!
 
:rc
set rc=
set /p rc=‚ўҐ¤ЁвҐ *®¬Ґа ‘ҐаўҐа*:
if /i not "%rc%"=="1" if /i not "%rc%"=="2" if /i not "%rc%"=="-" goto :rc
if !rc!==- exit /b
if !rc!==1 set put1=\\serv1\soft$\
if !rc!==2 set put1=\\serv2\soft$\
echo.
echo ‘ҐаўҐа ь !rc!
 
:spss
echo !cherta2!
echo 0 - ‚®§ўа*в Є ЇаҐ¤л¤г饬㠢롮аг
echo 1 - Soft_Standart (7z; Adobe Reader; Net Framework; VCRedist;
echo            Internet Explorer; SilverLight; Flash Player Active X;
echo            MS Office 2007 Standart Rus; K-Lite Codec Pack 7.00 Corporate)
echo 2 - CRRedist
echo 3 - Java Runtime Environment
echo 4 - SKYPE
echo - - ‚л室
echo !cherta2!
 
:str
set str=
set /p str=‚ўҐ¤ЁвҐ зҐаҐ§ Їа®ЎҐ« ўлаЁ**вл гбв**®ўЄЁ:
if not defined str goto :str
echo.
for %%k in (!str!) do (
set x=%%k
if !x!==- exit /b
if !x! gtr 04 goto :bad
if !x! lss 0 goto :bad
if !x!==0 copy nul %f2%>nul& cls& goto :rcv
if !x!==1 set x=01
if !x!==2 set x=02
if !x!==3 set x=03
if !x!==4 set x=04
if !x!==5 set x=05
if !x!==6 set x=06
if !x!==7 set x=07
if !x!==8 set x=08
if !x!==9 set x=09
echo !x!>>%f2%
)
type %f2% |sort>>%f1%
 
:MAIN
for /f "usebackq tokens=*" %%z in (%f1%) do (
call !%%z! 
) 
echo !cherta1!
del /s %f2%>nul
del /s %f1%>nul
goto :eof
 
:bad
echo ЌҐ бгйҐбвўгойЁ© Їг*Єв ¬Ґ*о !x!
copy nul %f2%>nul
goto :str
 
:CRRedist
echo Installing: CRRedist2008_x86
start /WAIT msiexec.exe /i !put1!\CRRedist2008_x86.msi
goto :eof
 
:JRE
echo Installing: Java Runtime Environment 1.7.0.51
start /WAIT msiexec.exe /i !put1!\Java\jre1.7.0_51\jre1.7.0_51.msi /passive REBOOT=ReallySuppress
goto :eof
 
:SKYPE
echo Installing: SKYPE
start /WAIT msiexec.exe /i !put1!\SkypeSetup.msi /passive REBOOT=ReallySuppress
type !put1!\skype_b>>%SystemRoot%\System32\drivers\etc\hosts
goto :eof
 
:Soft_Standart
echo Installing: Microsoft Forefront Endpoint Protection 2010 RUS
start /wait !put1!\FEPInstall_ru\epplauncher.exe /s
 
echo Installing: 7z 9.20
start /WAIT msiexec.exe /i !put1!\7z920-x86.msi /passive REBOOT=ReallySuppress
 
echo Installing: Adobe Reader 11.6
start /WAIT msiexec.exe /i !put1!\AdbeRdr\AcroRead.msi /passive REBOOT=ReallySuppress
start /wait msiexec.exe /p !put1!\AdbeRdr\AdbeRdrUpd11001_MUI.msp /qn
start /wait msiexec.exe /p !put1!\AdbeRdr\AdbeRdrSecUpd11002.msp  /qn
start /wait msiexec.exe /p !put1!\AdbeRdr\AdbeRdrUpd11003_MUI.msp  /qn
start /wait msiexec.exe /p !put1!\AdbeRdr\AdbeRdrUpd11004_MUI.msp  /qn
start /wait msiexec.exe /p !put1!\AdbeRdr\AdbeRdrSecUpd11005.msp  /qn
start /wait msiexec.exe /p !put1!\AdbeRdr\AdbeRdrUpd11006_MUI.msp  /qn
 
echo Installing: Net Framework 4.5.1
start /WAIT !put1!\NDP451-KB2858728-x86-x64-AllOS-ENU.exe /quiet /norestart
start /WAIT !put1!\NDP451-KB2858728-x86-x64-AllOS-RUS.exe /quiet /norestart
 
echo Installing: Microsoft Visual C++ 2013 Redistributable (x86) - 12.0.21005
start /wait !put1!\vcredist_x86.exe /s
 
echo Installing: Internet Explorer 11.0 Final
start /WAIT !put1!\IE11-Windows6.1-x86-ru-ru.exe /quiet /norestart
 
echo Installing: SilverLight
start /WAIT msiexec.exe /i !put1!\Silverlight\silverlight.msi /passive REBOOT=ReallySuppress
 
echo Installing: Flash player 12 active x
start /WAIT msiexec.exe /i !put1!\install_flash_player_12_active_x.msi /passive REBOOT=ReallySuppress
 
echo Installing: MS Office 2007 Standart Rus
start /WAIT !put1!\Office_2007_Standart_Rus\SETUP.EXE /adminfile custom.MSP
 
echo Installing: K-lite codec pack 7.00 corporate
"!put1!\k-lite_codec_pack\k-lite_codec_pack_700_corporate.exe" /verysilent /norestart /LoadInf="!put1!\k-lite_codec_pack\klcp_corp_unattended.ini"
Добавлено через 11 минут
95 строка содержит слово skype_b, skype_b - это текстовый файл без расширения в котором:
Bash
1
2
3
4
5
127.0.0.1 rad.msn.com
127.0.0.1 apps.skype.com
127.0.0.1 api.skype.com
127.0.0.1 static.skypeassets.com
127.0.0.1 adriver.ru
3
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.02.2014, 11:26
Ответы с готовыми решениями:

Перенести табличные данные из множества txt-файлов в единый csv-файл
Уважаемые профи и знатоки cmd\bat, нужна помощь: Есть текстовые файлы....

Как опознать дистрибутив?
Доброго всем времени суток! Есть ПК, на котором стоит Win 7 prof. И есть кучка...

Формат single IBM float point преобразование в Csharp Single(float) формат
Возникла проблема с чтением данных в формате IBM float point. Пытался найти...

Единый логотип сайта
Доброго времени суток! Недавно столкнулся такой проблемкой, когда со своего...

Единый шаблон в CodeIgniter
Здравствуйте! Столкнулся с фреймворком CodeIgniter. Так как в нем я новичок,...

21
sov44
11.02.2014, 18:39
  #2

Не по теме:

Цитата Сообщение от bort-747 Посмотреть сообщение
Сейчас в месте с форумчанином Shocks пытаемся разработать "Единый дистрибутив (Single installer)"
IMHO бесполезное занятие, тем более на батнике. Воспользуйтесь какой-либо оболочкой, и пишите туда ключи установки программ. Не так давно в одной из веток давал ссылку на оболочку. Беда батника в том, что через некоторое время придётся обновлять программы и соответственно переписывать код. К тому-же в батнике не удобно делать интерактив выбора нужных программ для установки.

1
Dragokas
Эксперт WindowsАвтор FAQ
17049 / 7106 / 859
Регистрация: 25.12.2011
Сообщений: 10,918
Записей в блоге: 16
11.02.2014, 23:58 3

Не по теме:

bort-747, зачем блокировка сети скайпа?



Добавлено через 9 минут
bort-747, мне тоже здается, что батник здесь не к месту.
Через неделю выпустят уже новую версию Adobe, Java, а Вы будете пытаться установить юзеру (который мог самостоятельно обновиться) старую версию.
Должна быть опциональность выбора компонентов с дружественным интерфейсом.
Из скриптовых языков оптимальным было бы использование HTA.

На счет процесса установки неплохо было бы использовать функционал ветви реестра RunOnceEx,
которая поддерживает флаги обхода ошибок, установку таймаута для каждой программы, возможность инициировать последовательность установки без необходимости выхода из системы, используя команду:
Bash
1
rundll32.exe iernonce.dll,RunOnceExProcess
Более подробно: http://msdn.microsoft.com/en-us/library/ms912172(WinEmbedded.10).aspx
0
bort-747
43 / 65 / 9
Регистрация: 07.06.2013
Сообщений: 484
Записей в блоге: 1
12.02.2014, 16:20  [ТС] 4
Цитата Сообщение от sov44 Посмотреть сообщение

Не по теме:


Беда батника в том, что через некоторое время придётся обновлять программы и соответственно переписывать код.

Над этим сейчас работаем
Цитата Сообщение от sov44 Посмотреть сообщение

Не по теме:

К тому-же в батнике не удобно делать интерактив выбора нужных программ для установки.

Что имеется ввиду под интерактивом? то что здесь мало прог для выбора это не значит что он не юзабильный... если надо установить несколько прог то надо их перечислить и они все установятся за раз по порядку, даже произойдёт сортировка...

Добавлено через 56 минут
Цитата Сообщение от Dragokas Посмотреть сообщение
Через неделю выпустят уже новую версию Adobe, Java, а Вы будете пытаться установить юзеру (который мог самостоятельно обновиться) старую версию.
Ну так ведь софтина ещё разрабатывается, в первом посте я написал, что ищем помощи... по пункту 3.2

Цитата Сообщение от Dragokas Посмотреть сообщение
Должна быть опциональность выбора компонентов с дружественным интерфейсом
Опциональность выбора компонентов етсь, надо в строке указать список номеров и они устанавливаются по порядку по очереди, там есть пункт в котором объеденено много ПО, это для простоты, у меня оно ставится всё вместе и сразу, а остальное по выбору. по поводу дружественного интерфейса, а чем он не дружественный? мне кажется самый дружелюбный лаконичный ничего лишнего название и номер по пункту, и самое главное, с помошью этого интерфейса оно работает по телнету, и пользователь этой программы всегда сможет поставить на другой комп софт даже если не доступен графический интерфейс.

Цитата Сообщение от Dragokas Посмотреть сообщение
установку таймаута для каждой программы, возможность инициировать последовательность установки без необходимости выхода из системы
А зачем таймаут? или я что то не понимаю? Установка и так последовательна а не скопом. Выход из системы не нужен, и для чего надо вызодить?

Добавлено через 4 минуты
Цитата Сообщение от sov44 Посмотреть сообщение

Не по теме:


К тому-же в батнике не удобно делать интерактив выбора нужных программ для установки.

Что не удобно, в одну строку ввести несколько цифр: "1 5 3 4 2"? и всё будет отлично батник сам отсортирует и установит последовательно эти программы без каких либо проблем.

Добавлено через 5 часов 6 минут
Пакет программ без MS Office http://www.ex.ua/283455646539
0
Dragokas
Эксперт WindowsАвтор FAQ
17049 / 7106 / 859
Регистрация: 25.12.2011
Сообщений: 10,918
Записей в блоге: 16
12.02.2014, 23:43 5
Цитата Сообщение от bort-747 Посмотреть сообщение
А зачем таймаут? или я что то не понимаю? Установка и так последовательна а не скопом. Выход из системы не нужен, и для чего надо вызодить?
На случай бага в одном из установщике (а ведь все они в Silent). Чтобы не оборвать всю цепочку.
0
bort-747
43 / 65 / 9
Регистрация: 07.06.2013
Сообщений: 484
Записей в блоге: 1
13.02.2014, 00:13  [ТС] 6
Цитата Сообщение от Dragokas Посмотреть сообщение
На случай бага в одном из установщике (а ведь все они в Silent). Чтобы не оборвать всю цепочку.
Ну в этом проблем не будет, по крайней мере не замечалось, были эксперименты на недоступность одного из дистрибутивов или когда дистрибутив не до конца скопирован, установка этого пакета пропускалась и шла установка следующего...
Кстати установка следующего не начнётся пока не закончится предыдущий.
0
Dragokas
Эксперт WindowsАвтор FAQ
17049 / 7106 / 859
Регистрация: 25.12.2011
Сообщений: 10,918
Записей в блоге: 16
13.02.2014, 00:33 7
Цитата Сообщение от bort-747 Посмотреть сообщение
или когда дистрибутив не до конца скопирован
Интересно как?
А вот, к примеру, если установщик поврежден, как это проверяется?

Цитата Сообщение от Dragokas Посмотреть сообщение
bort-747, зачем блокировка сети скайпа?
зачем прописка в хост?
Цитата Сообщение от bort-747 Посмотреть сообщение
Что не удобно, в одну строку ввести несколько цифр: "1 5 3 4 2"?
Не спорю. Ваше видение. Делайте. Если это удобнее для установки через telnet, может, оно так и лучше.
Еще есть системы х64. На это планируется рассчет?
0
bort-747
43 / 65 / 9
Регистрация: 07.06.2013
Сообщений: 484
Записей в блоге: 1
13.02.2014, 02:09  [ТС] 8
Цитата Сообщение от Dragokas Посмотреть сообщение
зачем прописка в хост?
Что бы убрать баннер рекламный, он сейчас в последних версиях есть в каждом левом нижнем углу под контактами

Цитата Сообщение от Dragokas Посмотреть сообщение
Еще есть системы х64. На это планируется рассчет?
[/QUOTE]
В разработке
3.1) Проверка операционной системы на разрядность, установка программ по разрядности

Цитата Сообщение от Dragokas Посмотреть сообщение
А вот, к примеру, если установщик поврежден, как это проверяется?
никак не проверится он ведь не запустится, ну по крайней мере у меня так было...и это пункт пропустился с ошибкой, я думаю в дальнейшем ещё надо будет добавлять пункты к развитию, например драйвера...
Хотя зачем например
Следующий пункт на доработку
5.0) Установка драйверов по выбору
5.1) Авто определение необходимых драйверов и автоматическая установка
5.2) Авто обновление драйверов

А вообще я могу добавлять сюда какой готовые параметры на установку софта, пусть кому надо пишет какой он софт хочет видеть и я буду его добавлять..

6.0) Автоматическое обновление софта в депозитариях с сайтов производителей или доверенных депозитариев
1
Dragokas
Эксперт WindowsАвтор FAQ
17049 / 7106 / 859
Регистрация: 25.12.2011
Сообщений: 10,918
Записей в блоге: 16
14.02.2014, 02:03 9
Цитата Сообщение от bort-747 Посмотреть сообщение
никак не проверится он ведь не запустится
В таких случаях обычно - запускается выбивает ошибку, на чем все и останавливается.
Нередко этим страдали даже навороченные WPI-сборки.
Но в их составе были такие монстры (офис и прочее), что трудно было бы подсчитать сколько им нужно тайм-аута.
Лично я бы делал двойное условие проверки:
запускать установку следующей программы по выполнению любого из таких условий:
- закончился таймаут;
- завершился процесс установщика.
Второй пункт я бы проверял запуская установщик в отдельном процессе через
Bash
1
start "" cmd /c "title ID1& start /Wait "" "установщик /silent""
с отслеживанием через tasklist /v ID-шника окна ожидающего процесса и параллельно установленного Вами максимального таймаута для конкретного приложения.

Но это Вам решать - стоит ли делать такое усложнение на данном этапе разработки.

Добавлено через 2 минуты
Цитата Сообщение от bort-747 Посмотреть сообщение
3.1) Проверка операционной системы на разрядность
http://www.cyberforum.ru/post4694455.html
Bash
1
Set xOS=x64& If "%PROCESSOR_ARCHITECTURE%"=="x86" If Not Defined PROCESSOR_ARCHITEW6432 Set xOS=x32
1
bort-747
43 / 65 / 9
Регистрация: 07.06.2013
Сообщений: 484
Записей в блоге: 1
16.02.2014, 11:16  [ТС] 10
Не знаю поднимался ли вопрос, вроде видел, а найти не могу...
Как скачать файл через http протокол?
0
sov44
1760 / 744 / 128
Регистрация: 09.04.2011
Сообщений: 1,314
16.02.2014, 11:26 11
Цитата Сообщение от bort-747 Посмотреть сообщение
Как скачать файл через http протокол?
через wget например
0
bort-747
43 / 65 / 9
Регистрация: 07.06.2013
Сообщений: 484
Записей в блоге: 1
16.02.2014, 17:03  [ТС] 12
Цитата Сообщение от sov44 Посмотреть сообщение
через wget например
А есть возможность стандартными утилитами?
0
Dragokas
Эксперт WindowsАвтор FAQ
17049 / 7106 / 859
Регистрация: 25.12.2011
Сообщений: 10,918
Записей в блоге: 16
16.02.2014, 18:04 13
bitsadmin разве что. Только она не на всех системах работает и сильно медленно качает.
В идеале - можно через VBScript, если интересует.
1
bort-747
43 / 65 / 9
Регистрация: 07.06.2013
Сообщений: 484
Записей в блоге: 1
16.02.2014, 23:41  [ТС] 14
bitsadmin - как дойдут руки по экспериментирую...
а то он на буржуа хелп дает
0
bort-747
43 / 65 / 9
Регистрация: 07.06.2013
Сообщений: 484
Записей в блоге: 1
18.02.2014, 13:44  [ТС] 15
помогите с автоматической сихронизацией и решить пункт:
6.0) Автоматическое обновление софта в репозитариях с доверенного репозитория

Задумка была в следующем...
1)На доверенном репозитории
1.1)Получить список файлов с доверенного репозитория
1.2)Запомнить пути к файлом и подсчитать хеш суммы к ним (я думаю что этот список можно сохранить и обновлять его допустим раз в три часа)
2)На репозитории дочернем
2.1)Получить список файлов с репозитория дочернего
2.2)Запомнить пути к файлом и подсчитать хеш суммы к ним (я думаю что этот список можно сохранить и обновлять его допустим раз в три часа)
3)На доверенном репозитории
3.1)Сравнить данные в файлах
3.1.1)Сравнить пути доверенного репозитория с репозиторием дочерним
3.1.2)Если в доверенном пути нет а в дочернем есть то файл с дочернего удалить
3.1.3)Если файл есть сравнить хеш
3.1.3.1)Если одинаковые то оставить
3.1.3.2)Если разные то в дочернем заменить с доверенного
3.1.4)Если в доверенном репозидории есть ещё файлы, а в репозитории дочернем нет, то скопировать файлы с доверенного в дочерний

Программа для подсчёта хеш http://www.pc-tools.net/win32/md5sums/
если есть другие варианты предлагайте
0
sov44
1760 / 744 / 128
Регистрация: 09.04.2011
Сообщений: 1,314
18.02.2014, 20:20 16
Цитата Сообщение от bort-747 Посмотреть сообщение
если есть другие варианты предлагайте
я полагаю, вы хотите скачивать файлы с какого-то файло-обменника (сайта), надеясь, что администратор своевременно будет там своевременно обновлять программы? Не проще скачивать файлы с официального сайта? Поковыряйте мой конструктор SumatraPDF http://yadi.sk/d/KO5xoorL6dCyp (скачивает с офф. сайта последнюю версию программы, добавляет твики повышения функционала, пакует в 7zip sfx), возможно сделаете обновление программ по аналогии.
1
bort-747
43 / 65 / 9
Регистрация: 07.06.2013
Сообщений: 484
Записей в блоге: 1
18.02.2014, 23:04  [ТС] 17
Цитата Сообщение от sov44 Посмотреть сообщение
я полагаю, вы хотите скачивать файлы с какого-то файло-обменника (сайта), надеясь, что администратор своевременно будет там своевременно обновлять программы?
Нет. Долго объяснять, что там и как...

Цитата Сообщение от sov44 Посмотреть сообщение
Не проще скачивать файлы с официального сайта?
Проще и нужнее но для этого мне нужен был загрузчик досовский
Цитата Сообщение от Dragokas Посмотреть сообщение
bitsadmin разве что. Только она не на всех системах работает и сильно медленно качает.
Вот его и буду смотреть но позже

Цитата Сообщение от sov44 Посмотреть сообщение
Поковыряйте мой конструктор SumatraPDF http://yadi.sk/d/KO5xoorL6dCyp (скачивает с офф. сайта последнюю версию программы, добавляет твики повышения функционала, пакует в 7zip sfx), возможно сделаете обновление программ по аналогии.
Посмотрю но запаковка не нужна, но малоли пригодиться...
0
Dragokas
Эксперт WindowsАвтор FAQ
17049 / 7106 / 859
Регистрация: 25.12.2011
Сообщений: 10,918
Записей в блоге: 16
19.02.2014, 02:32 18
bort-747, зачем такие сложности.
WGET с ключами -N -P прекрасно скачивает файлы - только в том случае, если на сервере появилась новая версия.
Кроме того код возврата прекрасно служит индикатором успешности операции.
Поищите на форуме вместе с моим ником. Я давал примеры. Кроме того есть здесь в закрепленной теме про ключи. Там же есть программы подсчета md5 с примерами, если нужно.

Если все же по каким то соображениям сторонние утилиты не допускаются,
возможны такие варианты через VBS:

VBscript через объект WinHttp.WinHttpRequest.5.1


Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
HTTPDownload "http://www.robvanderwoude.com/files/wmigen.zip", "C:\"
 
 Sub HTTPDownload( myURL, myPath )
 ' This Sub downloads the FILE specified in myURL to the path specified in myPath.
 '
 ' myURL must always end with a file name
 ' myPath may be a directory or a file name; in either case the directory must exist
 '
 ' Written by Rob van der Woude
 ' [url]http://www.robvanderwoude.com[/url]
 '
 ' Based on a script found on the Thai Visa forum
 ' [url]http://www.thaivisa.com/forum/index.php?showtopic=21832[/url]
 
     ' Standard housekeeping
     Dim i, objFile, objFSO, objHTTP, strFile, strMsg
     Const ForReading = 1, ForWriting = 2, ForAppending = 8
 
     ' Create a File System Object
     Set objFSO = CreateObject( "Scripting.FileSystemObject" )
 
     ' Check if the specified target file or folder exists,
     ' and build the fully qualified path of the target file
     If objFSO.FolderExists( myPath ) Then
         strFile = objFSO.BuildPath( myPath, Mid( myURL, InStrRev( myURL, "/" ) + 1 ) )
     ElseIf objFSO.FolderExists( Left( myPath, InStrRev( myPath, "\" ) - 1 ) ) Then
         strFile = myPath
     Else
         WScript.Echo "ERROR: Target folder not found."
         Exit Sub
     End If
 
     ' Create or open the target file
     Set objFile = objFSO.OpenTextFile( strFile, ForWriting, True )
 
     ' Create an HTTP object
     Set objHTTP = CreateObject( "WinHttp.WinHttpRequest.5.1" )
 
     ' Download the specified URL
     objHTTP.Open "GET", myURL, False
     objHTTP.Send
 
     ' Write the downloaded byte stream to the target file
     For i = 1 To LenB( objHTTP.ResponseBody )
         objFile.Write Chr( AscB( MidB( objHTTP.ResponseBody, i, 1 ) ) )
     Next
 
     ' Close the target file
     objFile.Close( )
 End Sub



JScript на основе Msxml2.XMLHTTP


Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
CopyFileFromURL("http://qptova.ru/tmp/src.jpg","dest.jpg");
 
function CopyFileFromURL(url,filename){
    with(WScript.CreateObject("Msxml2.XMLHTTP")){
        open("GET", url, false);
        send();
        saveFileToLocalDisk(responseBody,filename);
    }
}
function saveFileToLocalDisk(byteArray,filename){
    with(WScript.CreateObject("ADODB.Stream")){
        Mode = 3;
        Type = 1;
        Open();
        Write(byteArray);
        SaveToFile(filename,2);
    }
}


Задаете вместо аргументов функции WScript.Arguments(0)
где 0 - номер передаваемого через командную строку аргумента и скачиваете через вызов сервера сценариев:
Bash
1
2
3
cscript //nologo //E:JScript 1.js
:: или
cscript //nologo //E:VBScript 2.vbs
0
bort-747
43 / 65 / 9
Регистрация: 07.06.2013
Сообщений: 484
Записей в блоге: 1
19.02.2014, 10:50  [ТС] 19
Единый дистрибутив (Single installer)
В этом сообщении я говорил о локальной сети, а не о интернет сети

Цитата Сообщение от Dragokas Посмотреть сообщение
bort-747, зачем такие сложности.
возможны такие варианты через VBS:

VBscript через объект WinHttp.WinHttpRequest.5.1


Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
HTTPDownload "http://www.robvanderwoude.com/files/wmigen.zip", "C:\"
 
 Sub HTTPDownload( myURL, myPath )
 ' This Sub downloads the FILE specified in myURL to the path specified in myPath.
 '
 ' myURL must always end with a file name
 ' myPath may be a directory or a file name; in either case the directory must exist
 '
 ' Written by Rob van der Woude
 ' [url]http://www.robvanderwoude.com[/url]
 '
 ' Based on a script found on the Thai Visa forum
 ' [url]http://www.thaivisa.com/forum/index.php?showtopic=21832[/url]
 
     ' Standard housekeeping
     Dim i, objFile, objFSO, objHTTP, strFile, strMsg
     Const ForReading = 1, ForWriting = 2, ForAppending = 8
 
     ' Create a File System Object
     Set objFSO = CreateObject( "Scripting.FileSystemObject" )
 
     ' Check if the specified target file or folder exists,
     ' and build the fully qualified path of the target file
     If objFSO.FolderExists( myPath ) Then
         strFile = objFSO.BuildPath( myPath, Mid( myURL, InStrRev( myURL, "/" ) + 1 ) )
     ElseIf objFSO.FolderExists( Left( myPath, InStrRev( myPath, "\" ) - 1 ) ) Then
         strFile = myPath
     Else
         WScript.Echo "ERROR: Target folder not found."
         Exit Sub
     End If
 
     ' Create or open the target file
     Set objFile = objFSO.OpenTextFile( strFile, ForWriting, True )
 
     ' Create an HTTP object
     Set objHTTP = CreateObject( "WinHttp.WinHttpRequest.5.1" )
 
     ' Download the specified URL
     objHTTP.Open "GET", myURL, False
     objHTTP.Send
 
     ' Write the downloaded byte stream to the target file
     For i = 1 To LenB( objHTTP.ResponseBody )
         objFile.Write Chr( AscB( MidB( objHTTP.ResponseBody, i, 1 ) ) )
     Next
 
     ' Close the target file
     objFile.Close( )
 End Sub



JScript на основе Msxml2.XMLHTTP


Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
CopyFileFromURL("http://qptova.ru/tmp/src.jpg","dest.jpg");
 
function CopyFileFromURL(url,filename){
    with(WScript.CreateObject("Msxml2.XMLHTTP")){
        open("GET", url, false);
        send();
        saveFileToLocalDisk(responseBody,filename);
    }
}
function saveFileToLocalDisk(byteArray,filename){
    with(WScript.CreateObject("ADODB.Stream")){
        Mode = 3;
        Type = 1;
        Open();
        Write(byteArray);
        SaveToFile(filename,2);
    }
}


Задаете вместо аргументов функции WScript.Arguments(0)
где 0 - номер передаваемого через командную строку аргумента и скачиваете через вызов сервера сценариев:
Bash
1
2
3
cscript //nologo //E:JScript 1.js
:: или
cscript //nologo //E:VBScript 2.vbs
Можно по подробнее?
На сколько я вижу он с интернета скачивает конкретный файл, вот допустим у меня есть несколько программ за которыми я хочу следить (когда выйдут новые версии)
skype.msi
flashplayer
Adobe Reader for Windows
Java
Как их скормить скриптам?
И как с помошью скриптов выполнять синхронизацию файлов между компьютерами по локальной сети?
Как отдать список кторый необходимо проверять на обновления? или он сканирует всю папку?
Как он узнает что файл обновился?
0
Dragokas
Эксперт WindowsАвтор FAQ
17049 / 7106 / 859
Регистрация: 25.12.2011
Сообщений: 10,918
Записей в блоге: 16
19.02.2014, 21:43 20
bort-747, а сами немного подумать не пробовали?
Оно будет также хорошо работать с локальным адресом, как и с протоколом HTTP.
Цитата Сообщение от bort-747 Посмотреть сообщение
Как он узнает что файл обновился?
WGET - по времени модификации, если не ошибаюсь.
0
19.02.2014, 21:43
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.02.2014, 21:43

Единый ResourceDictionary на Solution
Как бы правильно создать один (и единый) ResourceDictionary да так, чтоб потом...

Единый Вход Лотус
добрый день! кто нить подскажет. где в реестре винда менять что бы активировать...

Единый (глобальный) DataSet в проекте
Здравствуйте, уважаемые! Гуглила-гуглила я эту тему, что-то найти ничего...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru