From f69924e63f8d2a16d075bf1be4308968120dd31c Mon Sep 17 00:00:00 2001 From: Daniel Berteaud Date: Wed, 9 Dec 2015 18:21:43 +0100 Subject: [PATCH] First commit Move FWSUpdates into its own package --- createlinks | 6 + packages/fwsupdates.xml | 46 +++ .../files/settings/fwsupdates/adm_conf.bat/10All | 21 ++ .../fwsupdates/adm_conf.bat/template-begin | 0 .../files/settings/fwsupdates/user_conf.bat/10All | 12 + .../fwsupdates/user_conf.bat/template-begin | 0 .../tools/files/scripts/fwsupdates/install.bat | 28 ++ softwares/FWSUpdates/assets/img/fws.bmp | Bin 0 -> 109254 bytes softwares/FWSUpdates/assets/img/fws.ico | Bin 0 -> 64478 bytes softwares/FWSUpdates/bin/WizApp.exe | Bin 0 -> 78848 bytes softwares/FWSUpdates/bin/chkupd.bat | 178 +++++++++++ softwares/FWSUpdates/bin/chkupd_launcher.bat | 2 + softwares/FWSUpdates/bin/chkupd_wrapper.vbs | 2 + softwares/FWSUpdates/bin/delayed_sync.bat | 5 + softwares/FWSUpdates/bin/on_shutdown.bat | 13 + softwares/FWSUpdates/bin/sync.bat | 188 ++++++++++++ softwares/FWSUpdates/bin/wpkg_feedback.bat | 70 +++++ softwares/FWSUpdates/lang/040C_utf8.bat | 37 +++ softwares/FWSUpdates/lang/en_utf8.bat | 37 +++ softwares/chkupd_bgmon.vbs | 2 + softwares/create_shortcut.vbs | 8 + softwares/fwsupdates.vbs | 2 + softwares/localgp.vbs | 330 +++++++++++++++++++++ softwares/offline_upgrade.bat | 22 ++ wpkg-fwsupdates.spec | 61 ++++ 25 files changed, 1070 insertions(+) create mode 100644 createlinks create mode 100755 packages/fwsupdates.xml create mode 100644 root/etc/e-smith/templates/home/e-smith/files/shares/wpkg/files/settings/fwsupdates/adm_conf.bat/10All create mode 100644 root/etc/e-smith/templates/home/e-smith/files/shares/wpkg/files/settings/fwsupdates/adm_conf.bat/template-begin create mode 100644 root/etc/e-smith/templates/home/e-smith/files/shares/wpkg/files/settings/fwsupdates/user_conf.bat/10All create mode 100644 root/etc/e-smith/templates/home/e-smith/files/shares/wpkg/files/settings/fwsupdates/user_conf.bat/template-begin create mode 100644 root/home/e-smith/files/shares/tools/files/scripts/fwsupdates/install.bat create mode 100644 softwares/FWSUpdates/assets/img/fws.bmp create mode 100644 softwares/FWSUpdates/assets/img/fws.ico create mode 100644 softwares/FWSUpdates/bin/WizApp.exe create mode 100644 softwares/FWSUpdates/bin/chkupd.bat create mode 100644 softwares/FWSUpdates/bin/chkupd_launcher.bat create mode 100644 softwares/FWSUpdates/bin/chkupd_wrapper.vbs create mode 100644 softwares/FWSUpdates/bin/delayed_sync.bat create mode 100644 softwares/FWSUpdates/bin/on_shutdown.bat create mode 100644 softwares/FWSUpdates/bin/sync.bat create mode 100644 softwares/FWSUpdates/bin/wpkg_feedback.bat create mode 100644 softwares/FWSUpdates/lang/040C_utf8.bat create mode 100644 softwares/FWSUpdates/lang/en_utf8.bat create mode 100644 softwares/chkupd_bgmon.vbs create mode 100644 softwares/create_shortcut.vbs create mode 100644 softwares/fwsupdates.vbs create mode 100755 softwares/localgp.vbs create mode 100644 softwares/offline_upgrade.bat create mode 100644 wpkg-fwsupdates.spec diff --git a/createlinks b/createlinks new file mode 100644 index 0000000..c4e8d65 --- /dev/null +++ b/createlinks @@ -0,0 +1,6 @@ +#!/usr/bin/perl -w + +use esmith::Build::CreateLinks qw(:all); + +templates2events("/home/e-smith/files/shares/wpkg/files/settings/fwsupdates/adm_conf.bat", qw(wpkg-update bootstrap-console-save)); +templates2events("/home/e-smith/files/shares/wpkg/files/settings/fwsupdates/user_conf.bat", qw(wpkg-update bootstrap-console-save)); diff --git a/packages/fwsupdates.xml b/packages/fwsupdates.xml new file mode 100755 index 0000000..0dcf425 --- /dev/null +++ b/packages/fwsupdates.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/root/etc/e-smith/templates/home/e-smith/files/shares/wpkg/files/settings/fwsupdates/adm_conf.bat/10All b/root/etc/e-smith/templates/home/e-smith/files/shares/wpkg/files/settings/fwsupdates/adm_conf.bat/10All new file mode 100644 index 0000000..53733ad --- /dev/null +++ b/root/etc/e-smith/templates/home/e-smith/files/shares/wpkg/files/settings/fwsupdates/adm_conf.bat/10All @@ -0,0 +1,21 @@ +{ + +my $pass = $wpkg{'UserPassword'}; +my $repo = $wpkg{'RepositoryUri'} || 'https://pkgs.' . $DomainName; +my $logs = $wpkg{'LogsUri'} || 'https://pkglogs.' . $DomainName; +my $delay = $wpkg{'RandomDelay'} || '600'; +my $report = $wpkg{'MaxReportDays'} || '7'; + +my $out .=<<"_EOF"; +SET USER=deploiement +SET PASS=$pass +SET REPO=$repo +SET LOGS=$logs +SET RANDOM_DELAY=600 +SET MAX_REPORT=7 +_EOF + +$out =~ s/\n/\r\n/g; +$OUT = $out; + +} diff --git a/root/etc/e-smith/templates/home/e-smith/files/shares/wpkg/files/settings/fwsupdates/adm_conf.bat/template-begin b/root/etc/e-smith/templates/home/e-smith/files/shares/wpkg/files/settings/fwsupdates/adm_conf.bat/template-begin new file mode 100644 index 0000000..e69de29 diff --git a/root/etc/e-smith/templates/home/e-smith/files/shares/wpkg/files/settings/fwsupdates/user_conf.bat/10All b/root/etc/e-smith/templates/home/e-smith/files/shares/wpkg/files/settings/fwsupdates/user_conf.bat/10All new file mode 100644 index 0000000..650ebd5 --- /dev/null +++ b/root/etc/e-smith/templates/home/e-smith/files/shares/wpkg/files/settings/fwsupdates/user_conf.bat/10All @@ -0,0 +1,12 @@ +{ + +my $report = $wpkg{'MaxReportDays'} || '7'; + +my $out .=<<"_EOF"; +SET MAX_REPORT=7 +_EOF + +$out =~ s/\n/\r\n/g; +$OUT = $out; + +} diff --git a/root/etc/e-smith/templates/home/e-smith/files/shares/wpkg/files/settings/fwsupdates/user_conf.bat/template-begin b/root/etc/e-smith/templates/home/e-smith/files/shares/wpkg/files/settings/fwsupdates/user_conf.bat/template-begin new file mode 100644 index 0000000..e69de29 diff --git a/root/home/e-smith/files/shares/tools/files/scripts/fwsupdates/install.bat b/root/home/e-smith/files/shares/tools/files/scripts/fwsupdates/install.bat new file mode 100644 index 0000000..a00bbb8 --- /dev/null +++ b/root/home/e-smith/files/shares/tools/files/scripts/fwsupdates/install.bat @@ -0,0 +1,28 @@ +call %~dp0\conf.bat +if not exist "%SYSTEMROOT%\system32\GroupPolicy\Machine\Scripts\Shutdown" mkdir "%SYSTEMROOT%\system32\GroupPolicy\Machine\Scripts\Shutdown" +copy /Y "\\%IPASSERELLE_IP%\wpkg\softwares\fwsupdates\fwsupdates.vbs" "%SYSTEMROOT%\system32\GroupPolicy\Machine\Scripts\Shutdown\" +del /q "%SYSTEMROOT%\system32\GroupPolicy\Machine\Scripts\Shutdown\wpkg.bat" +if not exist "%SystemDrive%\FWSUpdates" mkdir "%SystemDrive%\FWSUpdates" +xcopy /E /Y "\\%IPASSERELLE_IP%\wpkg\softwares\fwsupdates\FWSUpdates\*" "%SystemDrive%\FWSUpdates\" +if not exist "%SystemDrive%\FWSUpdates\repository" mkdir "%SystemDrive%\FWSUpdates\repository" +if not exist "%SystemDrive%\FWSUpdates\status" mkdir "%SystemDrive%\FWSUpdates\status" +if not exist "%SystemDrive%\FWSUpdates\conf\adm" mkdir "%SystemDrive%\FWSUpdates\conf\adm" +if not exist "%SystemDrive%\FWSUpdates\conf\user" mkdir "%SystemDrive%\FWSUpdates\conf\user" +if not exist "%SystemDrive%\FWSUpdates\prodkeys" mkdir "%SystemDrive%\FWSUpdates\prodkeys" +copy /Y "\\%IPASSERELLE_IP%\wpkg\settings\fwsupdates\adm_conf.bat" "%SystemDrive%\FWSUpdates\conf\adm\conf.bat" +copy /Y "\\%IPASSERELLE_IP%\wpkg\settings\fwsupdates\user_conf.bat" "%SystemDrive%\FWSUpdates\conf\user\conf.bat" +icacls.exe "%SystemDrive%\FWSUpdates" /inheritance:d /t /c /q +REM Authenticated users +icacls.exe "%SystemDrive%\FWSUpdates" /remove:g "*S-1-5-11" /t /c /q +REM Some rep are not accessible at all by simple users +icacls.exe "%SystemDrive%\FWSUpdates\repository" /remove:g "*S-1-5-32-545" /t /c /q +icacls.exe "%SystemDrive%\FWSUpdates\status" /remove:g "*S-1-5-32-545" /t /c /q +icacls.exe "%SystemDrive%\FWSUpdates\conf\adm" /remove:g "*S-1-5-32-545" /t /c /q +icacls.exe "%SystemDrive%\FWSUpdates\prodkeys" /remove:g "*S-1-5-32-545" /t /c /q +copy /Y "\\%IPASSERELLE_IP%\wpkg\softwares\fwsupdates\chkupd_bgmon.vbs" "%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\Startup\" +regedit /S "\\%IPASSERELLE_IP%\wpkg\settings\fwsupdates\gp.reg" +regedit /S "\\%IPASSERELLE_IP%\wpkg\settings\fwsupdates\dav_limit.reg" +regini "\\%IPASSERELLE_IP%\wpkg\settings\fwsupdates\run_on_shutdown_reg.txt" +cscript //Nologo "\\%IPASSERELLE_IP%\wpkg\softwares\fwsupdates\localgp.vbs" fwsupdates.vbs false MACHINE +cscript "\\%IPASSERELLE_IP%\wpkg\software\fwsupdates\create_shortcut.vbs" +schtasks.exe /Create /tn "sync_wpkg" /sc hourly /mo 3 /ru "SYSTEM" /tr "%SystemDrive%\FWSUpdates\bin\delayed_sync.bat" /f diff --git a/softwares/FWSUpdates/assets/img/fws.bmp b/softwares/FWSUpdates/assets/img/fws.bmp new file mode 100644 index 0000000000000000000000000000000000000000..c11355cc8d537bd95a86b71830741bd1c3a0a55b GIT binary patch literal 109254 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 XPqp_@p>CC_3m9}C3tBrBj#K|1Z<<$d literal 0 HcmV?d00001 diff --git a/softwares/FWSUpdates/assets/img/fws.ico b/softwares/FWSUpdates/assets/img/fws.ico new file mode 100644 index 0000000000000000000000000000000000000000..f790708fc298cdfc1bcb66e4e1f4daf0d159b840 GIT binary patch literal 64478 zcmeHQhnp2e5?}v=`@Xy5?h_;liin=4cSelg>8S`Rm`)T#PbG^AD&a^fMkI(42_8li z5HK7DK){TE5d{$t1OyQ_uq>PU>bJYi_V(-PuAX^3*k)?K*_k)*O?OZII#g9xSLfv& zLVv>t<xUc z_yqlEe$@GMTbwdPv^aTi^>JcH@(z_O}k1tukgSouvFY zqK5BD(@Bbdi>nF*=RkRrmNoA4E&o*@4ySUu4q$7`1K+#S!1paEKU+F+ziWPFfjF#V zzG&R3K>Vd!foOegp*Zx?e9`2xe1Uh2lWr3HkD~r?^RJa+&CeCiW5kr*vC0?coz!Q* zmx*)th##nowqxVA3emP#k+qEf=vO2*Y_+F@JYIaaw5m<0smsMN}{Rb@Zh83nopNvB%2WB>b^Gi#GG|H|4BS zb{ewFTE@FH1_@yu&YsO|sX~`=^!g5~5!<>X@wk zquvgDYPZ-~!~k9?RXKHab3Z7f@q(9s==h@_=F)_j(PI>3ze%s};U*=H=~`&*OQPB% z?n9ow;r?P#SnP+rEL=HtclZ9cL>x|IpDiDJNBCDd>p+D42l5}6_E-OZ;!TCzB8r#i zmx?1IrXb3R~pB$VU1x7uY%8!o5!Diqsk3`s(}sj8mY+g*mx@xOQ=Pi6zJ7c4K2 zY%@M`B+}|~uU(dm!XN!UWcqB-JD-&~<-ySLht9;MZ`MZ3?Z5?kE|>0n!e8G-A2V_a zU&i2+rTv}uJ|J}bM|kja+YXZ3NzXR5&BI6*_Zg4JPLGx)OzGp^U#~9|(B-m8Z+uiH znq3hs2ZW42WVWYf^JO;hy&>rfCVU{z`_N18MavSV^dYNFdDE|~-0~bx^~#hd?uCp$ z`qSA<3=Zr>L)bW-$K6f*wJso(o_rJpQyY7cW; zIp>xlFKAYgjkYP%28cR0{?&cc_EG4s)|5xefg$6Mc@fy_edrR>7fkK*s^NS+0{In? z?hcv3l$L%EeSaZeO!ax4y}xbK#Vi95{t^B^%Kdt(|HJm@+o#_2pxFl8cdWl)hIu+2 zYt!dj#`&kc7g*-S%@3L1E9CZ%xmaHsJkdN>-t(-#UIuyIgtvOH3F(#J(R|Uqrm1g{ zJZhNV4jF%p<-RoTl}x=Yjvj%0FC1Xky-^Q*?32FlqW=C{vTeYIq1HWIhm1ewbA9Q> zcQW-h$Y(QY-rbk3CmX)bZ~ZgI{w=>Hv-NVzWg3q{#=rL%|8e!brJ3`mz-Y;retHBj z8T_<)EK%zK`s8t*vOneo7c46mi@zuru=8{2)b5$%QONkm8MD7!LpET|UIsmG)dv4D zn(Om&lE)m?*y$zW%sz$UWWw?kI?g7&6#hmW>S~yi2o-F|P0MtRy4uH~Uq19=i8%V&YF}$T4b%fpAMym*!jYHye5m-t_7`^^ zRkzz6Npf-=T0{PsCYf91zq|%6Cf`2fyL@$dB=+)o)c3b(zSl-G7nNo7N1@`6K714P z<#FhQ8|unQr}gyLBats;Gx%#ujBIE0Y%e(WJk!-8=N1@^$ zx6cOu|4IB-c?+9xT+;gzHC_E0_5z(|zF)?|9%*5&-$u*HuOvgZ4b=Y&{b^jfW@KHx z{l*948|VLiW8J<)$6Wo4wyFCnw@(ajC;yb^8)EUHuw$_P*z8?ac2kEzcOQ^=H)2@LjYK{Fe;)2kHNL<*@jD zHtYr}Umtn7784tPP2WY$yQt}_*O)VqoWbDL&P6# zcHXD)+pNkb^q1&2ga+Lc||B?w92A z7MHdta{%z+Du^#iil2U|$e2%v!Z68w^cfY7YP#ScvH!q_e=GU&$0gWd1pIqTT`lXVpHSw5B=$^Rs0=m+otKwJn8 z4K=K9C;W3_|HHic^3@frW5o{@V!-2dZE!w(^7Yj>@ecMw~#f z-<_4{^+?_M1huSjuF>bCU;5tDC&{$7C0F>{cxd|Wp#=EfKEZAK`*D-K&y>EKeH=c7 zt2a7?ZhAT0o*V~r`3!X1^C-5!`YrB!b-wC;O-S=V#Xm{=f0$$q7rA0W^{*L!V868y ze0*H=48;xcwdF~?)iZpF(6{}XZ?C(i@_hXxY(I5ve<9)z+aE_4nnN*iY&42u{eVB? zD5jQ;;8Wuw_@SZQs#yA7!=}+^OtC16853sm8>PlN7+U*>-tgY%ZcHZ5wd>2!l`zgu zn`gHpKS8ngT=Y5lUFdc$3wDz=Mj|TlP~OUQEfj&{Lj0MXRkZDcG~pT6%BSO4#F53fIlY=_w8Q3QGGcNgr8`g-sEKeosGaCAEIhlueY zdG0#HM^pC$mg)GM(e_<-htTjx+&vDVZ^xQ=8=?KX==bgN#m22}{2zFpZ_n=KusOQQ zB)`Xc&w~wr#NFdi1H#{ByTce^qkLM2-GJIZ{DoWue>9E^2%Q75qmt6>C1!h%-uHym z{$Z~{+&vc+(a?J6CHYR>zP&@XhhG@dfv(^pn+~R8azPg68#j~ea$L7U!SNvr34hrB z;5+Ri*kj<=<+2lF-p)oVXg(Y1AkMCf;E$%Sy;5<VhE`pCnRBTy^1#DMbUyi8!Fkdax*#lgYo(Txa}A#@4#^mgr}eOpw|g97yByjRa$ zKXds0q1|T#d*mMq{*a##Z;wNe`|$427n8(Ymuqx^2Z!d@=p8EV@*4hG9D+?!K9h}e zDELF4U74yR~wi|aG*+G73u<@z>8! z-~()TZ^w)i0NqgfbfO-VGOH2lijDz3KS1kUYy_K?&5uV<6XPLg4j>f#n~?s@C5#o| z7i2NSdyhk3&>BTKp98x-*KUtFWgRPgMqFnbjiK*N&qdvXE%;Q5TN(AeydMhwTt7VU zSZ#x@IiM&^R9OyV4`&@1($Zr~N*r9}khUiId)pcP5_H5-G=F9L9li?%|MnDTk3$$E zq}+!0$KGgh=w)SpKgbc>7(uXqnJ}3!!`}X}rqT4A=^pkl0{uX16J2wTq2Mpy*@dM# zZi9D-wH1fZUM24_E^~YUkPl+?%IDPc7>D1|9nAe?F$a#AGm_4%u~Ddbsn>*m86ErF z{}b!zAd_V4(Cr`GcC7F58)uIg@D}pAPh}I**LJTiyBuKb>Yd^c(yw!5;Q8u$y{oI_E2 z%nu`*w2k1;=aT=iUIhCNsstZkb-dH-POk8WU(z0GBH1|bejNwb&JUse&06f3tf^rN z>Y>g@m0#RzX+x6ybhTfZZq&Z8{b+rsjj-+)I*!awKSSn=@>j6!LzXN2ZSNN6J303P zK44wEYdycrW7@pB``~eHH}ZLTZcDy8DhAvb(bz{wkHL&|AQ!p_eS}_j(f2|Bu*nbb zQ;G6D4gr7EeQrDqeNQIX<95c_+ehao;&vQ zaCwDdyW*a!>A_!8@?4%>>paxwaczpD>l1UR1IBM|e5S`{*4mC`8E|gf zli!c&W#W8>o}>F8)OY;Re@~ptv%P^wCf%D8FI464-BjOH+;9yY6zd8(Wa>X;8rx&U z_T%J<-(YVk-4blL9Rkl*Rw|c-f=0oRF{9W~VTvzo&j#z;*56B79cTi6U zIvVyL$tJBPo3lFSrRG`R+dukqo9$EOBlb}?>A=7O^HN+g$&lze_M~exn~;ozX31MCoEgV8$+u4ZqoHs9?I(xQ|xp2DlQif%p5~xI>4V3 z!(L6#biIT0y}v~Go65ZEJN}pdhc7QpiipFGK7{KBzTuZzzi-JydG65Ton((#_PPHbhqpezk@jE2>E}|E-4%S`#*LfzNu~`| z^7i6^{JzMv7ne*&J!4N-?%D#$hu*YLfSQKwx<2ENagrN*2fVTIg}ZhfF~dxD6!7?r z-u!vUIZJ4dVd~>;*vRj&*U!64-TrOgtSuMq?%3rO40quwe^!3R9-OeVamq9I!_r8dT&Aa<5jWwg z;l)*RPd||i0zVMwtn29-bqRX}#EAiu6#q7~Pw~+?K9Hx34}q9R-2CM;DqrO_zT>3h z;xU^aj#yB#TZBdV1++UY~xT@F~T=e&LnvdXwUx;!kxT zmj0LRx|pVy`?^TjN9_O5oa#i)(Xau@yk?tcidpV4%O=kW{~>e?Q;+7ybb7Ak8KXtZ z(;u!r+Kx)`CtWw2d_PdqBHRzrk5*UjxTw0lqs_}B%=bS~aM)kv$TJX?rQQB2PnvIT z+nE9WycGZ3Vz58!e2V|UgSDxirTC}#>vbUQ{|}xzp<|EFDgG(`rm-Tu7hb(c+kbeN s`n1y&|AQOgO`Z47|%7K&vDF;#x>=O=@XsPCUyz|ZP|6eiPf&c&j literal 0 HcmV?d00001 diff --git a/softwares/FWSUpdates/bin/WizApp.exe b/softwares/FWSUpdates/bin/WizApp.exe new file mode 100644 index 0000000000000000000000000000000000000000..e9d2f00bfc0a5cecf5a8f5c42e4f9778e5fe9963 GIT binary patch literal 78848 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 VWhj;VO&aIccFxJzO$=up{vT&vr%eC= literal 0 HcmV?d00001 diff --git a/softwares/FWSUpdates/bin/chkupd.bat b/softwares/FWSUpdates/bin/chkupd.bat new file mode 100644 index 0000000..bd643a0 --- /dev/null +++ b/softwares/FWSUpdates/bin/chkupd.bat @@ -0,0 +1,178 @@ +REM @echo off +setlocal enabledelayedexpansion + +REM Detect if we have admin rights +SET /A ADMIN=0 +net session 1>NUL 2>NUL +IF %ERRORLEVEL% EQU 0 SET /A ADMIN=1 + +IF %ADMIN% EQU 1 CALL %~dp0\..\conf\adm\conf.bat +IF %ADMIN% NEQ 1 CALL %~dp0\..\conf\user\conf.bat + +SET /A WAIT=0 + +CALL %~dp0\..\lang\en.bat +FOR /F "tokens=3" %%A IN ('reg query "HKLM\System\CurrentControlSet\Control\nls\Language" /v Installlanguage') DO SET LANG=%%A +IF EXIST %~dp0\..\lang\%LANG%.bat CALL %~dp0\..\lang\%LANG%.bat + +SET watitle=%L_WINDOW_TITLE% +SET wasig=%L_WINDOW_SIG% +SET walabels=%L_BTN_PREV%;%L_BTN_NEXT%;%L_BTN_OK%;%L_BTN_CANCEL% +SET wabmp=%SystemDrive%\FWSUpdates\assets\img\fws.bmp +SET waico=%SystemDrive%\FWSUpdates\assets\img\fws.ico +SET wabat=%TEMP%\fwsupdates_resp.bat + +:loop +IF NOT "%1" == "loop" IF NOT %WAIT% EQU 0 goto :EOF +timeout /t %WAIT% 1>NUL 2>NUL + +:begin + +SET /A WAIT=300 +SET /A SYNC_IN_PROGRESS=0 +SET /A RUN_ON_SHUTDOWN=0 + +REM Wait if a sync is running +reg query "HKLM\Software\FWS\Updates" /v SyncInProgress 1>NUL 2>NUL +IF %ERRORLEVEL% EQU 0 FOR /F "tokens=3" %%A IN ('reg query "HKLM\Software\FWS\Updates" /v SyncInProgress') DO SET /A SYNC_IN_PROGRESS=%%A +IF %SYNC_IN_PROGRESS% EQU 1 ( + IF "%1" == "loop" goto loop + SET watext=%L_SYNC_ALREADY_IN_PROGRESS% + start /w %SystemDrive%\FWSUpdates\bin\wizapp.exe FINISH NOBACK NOCANCEL TB + goto :EOF +) + +REM if updates are already scheduled for next shutdown, just quit now, there's no point in looping +reg query "HKLM\Software\FWS\Updates\User" /v RunOnShutdown 1>NUL 2>NUL +IF %ERRORLEVEL% EQU 0 FOR /F "tokens=3" %%A IN ('reg query "HKLM\Software\FWS\Updates\User" /v RunOnShutdown') DO SET /A RUN_ON_SHUTDOWN=%%A +IF %RUN_ON_SHUTDOWN% EQU 0 ( + reg query "HKLM\Software\FWS\Updates" /v RunOnShutdown 1>NUL 2>NUL + IF %ERRORLEVEL% EQU 0 FOR /F "tokens=3" %%A IN ('reg query "HKLM\Software\FWS\Updates" /v RunOnShutdown') DO SET /A RUN_ON_SHUTDOWN=%%A +) +IF %RUN_ON_SHUTDOWN% EQU 1 ( + IF "%1" == "loop" goto :EOF + IF %ADMIN% NEQ 1 ( + SET watext=%L_ALREADY_SCHEDULED_ON_SHUTDOWN% + start /w %SystemDrive%\FWSUpdates\bin\wizapp.exe FINISH NOBACK NOCANCEL TB + goto :EOF + ) +) + +SET CHANGES=0 +reg query "HKLM\Software\FWS\Updates" /v PendingChanges 1>NUL 2>NUL +IF %ERRORLEVEL% EQU 0 FOR /F "tokens=3" %%A IN ('reg query "HKLM\Software\FWS\Updates" /v PendingChanges') DO SET /A CHANGES=%%A +IF %CHANGES% LSS 1 IF %ADMIN% NEQ 1 ( + IF "%1" == "loop" goto loop + SET watext=%L_NO_UPDATE_AVAILABLE% %L_FOR_YOUR_SYSTEM%. + start /w %SystemDrive%\FWSUpdates\bin\wizapp.exe FINISH NOBACK NOCANCEL TB + goto :EOF +) + +SET /A NOW=%DATE:~-4%%DATE:~3,2%%DATE:~0,2% +SET /A SINCE=%NOW% +reg query "HKLM\Software\FWS\Updates" /v ChangesAvailableSince 1>NUL 2>NUL +IF %ERRORLEVEL% EQU 0 OR /F "tokens=3 delims= " %%A IN ('reg query "HKLM\Software\FWS\Updates" /v ChangesAvailableSince') DO SET /A SINCE=%%A + +REM Some wording changes if there's only 1 single change to apply +IF %CHANGES% EQU 1 ( + SET INTRO=1 %L_ONE_UPDATE_AVAILABLE% + SET AVAILABLE_SINCE=%L_ONE_UPDATE_AVAILABLE_SINCE% +) ELSE ( + SET INTRO=%CHANGES% %L_X_UPDATES_AVAILABLE% + SET AVAILABLE_SINCE=%L_X_UPDATES_AVAILABLE_SINCE% +) + +REM Compute how many days left we can delay updates +SET /A MAX=%SINCE%+%MAX_REPORT% +SET /A AGE=%NOW%-%SINCE% +SET /A REMAINING=%MAX%-%NOW% + +REM Non admin on RDP shouldn't see updates notif +IF %ADMIN% NEQ 1 IF NOT "%SESSIONNAME%" == "Console" goto :EOF + +REM Check if we can delay updates +REM Users can only delay for %MAX_REPORT% days while admins can always delay +SET /A CAN_REPORT=0 +IF %NOW% LEQ %MAX% SET /A CAN_REPORT=1 +IF %ADMIN% EQU 1 SET /A CAN_REPORT=1 + +IF %CHANGES% LSS 1 IF %ADMIN% EQU 1 ( + SET watext=%L_NO_UPDATE_AVAILABLE% %L_FOR_YOUR_SYSTEM%. + SET wainput= %L_CHECK_ONLINE_FOR_UPDATES% + SET waoutnum=0 + start /w %SystemDrive%\FWSUpdates\bin\wizapp.exe NOBACK RB + IF errorlevel 2 goto cancel_no_update + IF errorlevel 1 goto previous + IF !waoutnum! EQU 0 goto check +) +ELSE ( + IF %CAN_REPORT% EQU 1 ( + SET watext=%INTRO% %L_FOR_YOUR_SYSTEM%.~~%L_YOU_CAN_SCHEDULE%.~~%L_INSTALL_FORCED_IN% %REMAINING% %L_DAYS% + SET wainput= %L_SCHEDULE_ON_SHUTDOWN%; %L_REPORT% + IF %ADMIN% EQU 1 ( + IF %RUN_ON_SHUTDOWN% NEQ 1 ( + SET wainput= %L_SCHEDULE_ON_SHUTDOWN%; %L_REPORT%; %L_INSTALL_NOW%; %L_CHECK_ONLINE_FOR_UPDATES% + ) ELSE ( + SET watext=%INTRO% %L_FOR_YOUR_SYSTEM%.~~%L_ALREADY_SCHEDULED_ON_SHUTDOWN%.~~%L_INSTALL_FORCED_IN% %REMAINING% %L_DAYS% + SET wainput= %L_MAINTAIN_ON_SHUTDOWN%; %L_CANCEL_SCHEDULE_ON_SHUTDOWN%; %L_INSTALL_NOW%; %L_CHECK_ONLINE_FOR_UPDATES% + ) + ) + + SET waoutnum=0 + + start /w %SystemDrive%\FWSUpdates\bin\wizapp.exe NOBACK RB + IF errorlevel 2 goto cancel + IF errorlevel 1 goto previous + CALL %wabat% + IF !waoutnum! EQU 0 goto shutdown + IF !waoutnum! EQU 1 goto later + IF !waoutnum! EQU 2 goto now + IF !waoutnum! EQU 3 goto check + ) ELSE ( + SET watext=%INTRO% %L_FOR_YOUR_SYSTEM%.~~%AVAILABLE_SINCE% %L_SINCE% %AGE% %L_DAYS%.~~%L_CANT_REPORT_ANYMORE% + start /w %SystemDrive%\FWSUpdates\bin\wizapp.exe FINISH TB + goto :shutdown + ) +) + +goto :loop + +:cancel +goto :later + +:cancel_no_update +goto :EOF + +:previous +goto :loop + +:later +reg del "HKLM\Software\FWS\Updates\User" /v RunOnShutdown /f 1>NUL 2>NUL +IF %ADMIN% EQU 1 reg del "HKLM\Software\FWS\Updates" /v RunOnShutdown /f 1>NUL 2>NUL +SET watext=%L_UPDATES_REPORTED%. +start /w %SystemDrive%\FWSUpdates\bin\wizapp.exe FINISH NOBACK TB +SET /A WAIT=WAIT+10800 +goto loop + +:shutdown +reg add "HKLM\Software\FWS\Updates\User" /v RunOnShutdown /t REG_DWORD /d 1 /f +SET watext=%L_UPDATES_SCHEDULED% +%SystemDrive%\FWSUpdates\bin\wizapp.exe FINISH NOBACK TB +goto :EOF + +:now +IF %ADMIN% NEQ 1 goto later +CALL %~dp0\wpkg_feedback.bat %CHANGES% +SET watext=%L_UPDATES_FINISHED% +start /w %SystemDrive%\FWSUpdates\bin\wizapp.exe FINISH NOBACK NOCANCEL TB +goto :loop + +:check +IF %ADMIN% NEQ 1 goto later +SET watext=%L_CHECKING_UPDATES% +start /w %SystemDrive%\FWSUpdates\bin\wizapp.exe PB OPEN NOBACK NOCANCEL +start /w %SystemDrive%\FWSUpdates\bin\wizapp.exe PB UPDATE 10 +CALL %~dp0\sync.bat +start /w %SystemDrive%\FWSUpdates\bin\wizapp.exe PB CLOSE +goto begin + diff --git a/softwares/FWSUpdates/bin/chkupd_launcher.bat b/softwares/FWSUpdates/bin/chkupd_launcher.bat new file mode 100644 index 0000000..c2c45a5 --- /dev/null +++ b/softwares/FWSUpdates/bin/chkupd_launcher.bat @@ -0,0 +1,2 @@ +@echo off +start /min %~dp0\chkupd_wrapper.vbs diff --git a/softwares/FWSUpdates/bin/chkupd_wrapper.vbs b/softwares/FWSUpdates/bin/chkupd_wrapper.vbs new file mode 100644 index 0000000..3a2beaf --- /dev/null +++ b/softwares/FWSUpdates/bin/chkupd_wrapper.vbs @@ -0,0 +1,2 @@ +Set objShell = CreateObject("Wscript.Shell") +objShell.Run """" & objShell.ExpandEnvironmentStrings("%SYSTEMDRIVE%") & "\FWSUpdates\bin\chkupd.bat" & """", 0, False diff --git a/softwares/FWSUpdates/bin/delayed_sync.bat b/softwares/FWSUpdates/bin/delayed_sync.bat new file mode 100644 index 0000000..c039a4f --- /dev/null +++ b/softwares/FWSUpdates/bin/delayed_sync.bat @@ -0,0 +1,5 @@ +CALL %~dp0\..\conf\adm\conf.bat +REM Random delay to spread the load on the server +SET /A DELAY=%RANDOM% %%%RANDOM_DELAY% +timeout /t %DELAY% 1>NUL 2>NUL +CALL %~dp0\sync.bat diff --git a/softwares/FWSUpdates/bin/on_shutdown.bat b/softwares/FWSUpdates/bin/on_shutdown.bat new file mode 100644 index 0000000..487c539 --- /dev/null +++ b/softwares/FWSUpdates/bin/on_shutdown.bat @@ -0,0 +1,13 @@ +@echo off +REM Only run if needed +SET /A USER_RUN=0 +SET /A ADMIN_RUN=0 +reg query "HKLM\Software\FWS\Updates\User" /v RunOnShutdown 1>NUL 2>NUL +IF %ERRORLEVEL% EQU 0 FOR /F "tokens=3" %%A IN ('reg query "HKLM\Software\FWS\Updates\User" /v RunOnShutdown') DO SET /A USER_RUN=%%A +reg query "HKLM\Software\FWS\Updates" /v RunOnShutdown 1>NUL 2>NUL +IF %ERRORLEVEL% EQU 0 FOR /F "tokens=3" %%A IN ('reg query "HKLM\Software\FWS\Updates" /v RunOnShutdown') DO SET /A ADMIN_RUN=%%A + +IF %USER_RUN% NEQ 1 IF %ADMIN_RUN% NEQ 1 goto :EOF + +call %SystemDrive%\FWSUpdates\bin\wpkg_feedback.bat + diff --git a/softwares/FWSUpdates/bin/sync.bat b/softwares/FWSUpdates/bin/sync.bat new file mode 100644 index 0000000..05cf0a3 --- /dev/null +++ b/softwares/FWSUpdates/bin/sync.bat @@ -0,0 +1,188 @@ +setlocal enabledelayedexpansion +CALL %~dp0\..\conf\adm\conf.bat + +SET /A SYNC_IN_PROGRESS=0 +SET /A RUN_ON_SHUTDOWN=0 + +REM exit if another sync is running +reg query "HKLM\Software\FWS\Updates" /v SyncInProgress 1>NUL 2>NUL +IF %ERRORLEVEL% EQU 0 ( + FOR /F "tokens=3" %%A IN ('reg query "HKLM\Software\FWS\Updates" /v SyncInProgress') DO SET /A SYNC_IN_PROGRESS=%%A +) +IF %SYNC_IN_PROGRESS% EQU 1 goto :EOF + +REM or if updates are already scheduled for next shutdown +reg query "HKLM\Software\FWS\Updates\User" /v RunOnShutdown 1>NUL 2>NUL +IF %ERRORLEVEL% EQU 0 FOR /F "tokens=3" %%A IN ('reg query "HKLM\Software\FWS\Updates\User" /v RunOnShutdown') DO SET /A RUN_ON_SHUTDOWN=%%A +IF %RUN_ON_SHUTDOWN% EQU 0 ( + reg query "HKLM\Software\FWS\Updates" /v RunOnShutdown 1>NUL 2>NUL + IF %ERRORLEVEL% EQU 0 FOR /F "tokens=3" %%A IN ('reg query "HKLM\Software\FWS\Updates" /v RunOnShutdown') DO SET /A RUN_ON_SHUTDOWN=%%A +) +IF %RUN_ON_SHUTDOWN% EQU 1 ( + echo %DATE% %TIME% - Updates already scheduled on next shutdown > %SystemDrive%\FWSUpdates\status\sync_log.txt + goto :EOF +) + +REM remove the lock during startup so it'll work if rebooting during a sync +reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce" /v ResetWPKGSyncStatus /t REG_SZ /d "%SYSTEMROOT%\System32\reg.exe delete \"HKLM\Software\FWS\Updates\" /v SyncInProgress /f" /f + +REM Now start the sync +echo %DATE% %TIME% - Starting new Sync > %SystemDrive%\FWSUpdates\status\sync_log.txt +reg add "HKLM\Software\FWS\Updates" /v SyncInProgress /t REG_DWORD /d 1 /f + +REM Lets map a network drive +SET DRIVE=unknown +FOR %%D IN (e f g h i j k l m n o p q r s t u v w x y z) do ( + cd %%D: + IF ERRORLEVEL 1 SET DRIVE=%%D + IF ERRORLEVEL 1 goto drivefound +) +echo %DATE% %TIME% - couldn't find any free drive letter > %SystemDrive%\FWSUpdates\status\sync_log.txt +goto :EOF +:drivefound +net use %DRIVE%: %REPO% /PERSISTENT:NO /USER:%USER% %PASS% 1>NUL 2>NUL +REM Check if mapping worked +IF %ERRORLEVEL% NEQ 0 ( + echo %DATE% %TIME% - Error mapping %REPO% >> %SystemDrive%\FWSUpdates\status\sync_log.txt + goto cleanup +) +REM and if wpkg.js exists +IF NOT EXIST "%DRIVE%:\wpkg.js" ( + echo %DATE% %TIME% - %DRIVE%:\wpkg.js not found >> %SystemDrive%\FWSUpdates\status\sync_log.txt + goto cleanup +) +REM Then Mirror the content of the repository on the local drive +robocopy /MIR /R:10 /LOG:%SystemDrive%\FWSUpdates\status\log_robocopy.txt %DRIVE%:\ %SystemDrive%\FWSUpdates\repository\ 1>NUL 2>NUL + + +REM Now, we have to check the exit status of the robocopy command +REM Fatal Error +if %ERRORLEVEL% EQU 16 ( + echo %DATE% %TIME% - Robocopy exited with status %ERRORLEVEL% >> %SystemDrive%\FWSUpdates\status\sync_log.txt + goto xfererror +) +REM Copy done, with errors, mismatches and new files not copied +if %ERRORLEVEL% EQU 15 ( + echo %DATE% %TIME% - Robocopy exited with status %ERRORLEVEL% >> %SystemDrive%\FWSUpdates\status\sync_log.txt + goto xfererror +) +REM Copy failed, with mismatches and new files not copied +if %ERRORLEVEL% EQU 14 ( + echo %DATE% %TIME% - Robocopy exited with status %ERRORLEVEL% >> %SystemDrive%\FWSUpdates\status\sync_log.txt + goto xfererror +) +REM Copy done, with errors and mismatches +if %ERRORLEVEL% EQU 13 ( + echo %DATE% %TIME% - Robocopy exited with status %ERRORLEVEL% >> %SystemDrive%\FWSUpdates\status\sync_log.txt + goto xfererror +) +REM Copy failed with mismatches +if %ERRORLEVEL% EQU 12 ( + echo %DATE% %TIME% - Robocopy exited with status %ERRORLEVEL% >> %SystemDrive%\FWSUpdates\status\sync_log.txt + goto :xfererror +) +REM Copy done with errors and new files not copied +if %ERRORLEVEL% EQU 11 ( + echo %DATE% %TIME% - Robocopy exited with status %ERRORLEVEL% >> %SystemDrive%\FWSUpdates\status\sync_log.txt + goto :xfererror +) +if %ERRORLEVEL% EQU 10 ( + echo %DATE% %TIME% - Robocopy exited with status %ERRORLEVEL% >> %SystemDrive%\FWSUpdates\status\sync_log.txt + goto xfererror +) +REM Copy done with errors +if %ERRORLEVEL% EQU 9 ( + echo %DATE% %TIME% - Robocopy exited with status %ERRORLEVEL% >> %SystemDrive%\FWSUpdates\status\sync_log.txt + goto xfererror +) +REM Copy failed +if %ERRORLEVEL% EQU 8 ( + echo %DATE% %TIME% - Robocopy exited with status %ERRORLEVEL% >> %SystemDrive%\FWSUpdates\status\sync_log.txt + goto xfererror +) +REM Copy done, with mismatches and new files not copied +if %ERRORLEVEL% EQU 7 ( + echo %DATE% %TIME% - Robocopy exited with status %ERRORLEVEL% >> %SystemDrive%\FWSUpdates\status\sync_log.txt + goto xfererror +) +REM Mismatches and new files not copied +if %ERRORLEVEL% EQU 6 ( + echo %DATE% %TIME% - Robocopy exited with status %ERRORLEVEL% >> %SystemDrive%\FWSUpdates\status\sync_log.txt + goto xfererror +) +REM Copy done with mismatches +if %ERRORLEVEL% EQU 5 ( + echo %DATE% %TIME% - Robocopy exited with status %ERRORLEVEL% >> %SystemDrive%\FWSUpdates\status\sync_log.txt + goto :xfererror +) +REM Mismatches +if %ERRORLEVEL% EQU 4 ( + echo %DATE% %TIME% - Robocopy exited with status %ERRORLEVEL% >> %SystemDrive%\FWSUpdates\status\sync_log.txt + goto xfererror +) +REM Copy done, new files detected +if %ERRORLEVEL% EQU 3 goto postcopy +REM New files detected +if %ERRORLEVEL% EQU 2 goto postcopy +REM Copy done, we have new files, updates available +if %ERRORLEVEL% EQU 1 goto postcopy +REM No error, nothing copied, no updates +if %ERRORLEVEL% EQU 0 goto postcopy + +:xfererror +echo %DATE% %TIME% - Error occured during sync. See log_robocopy.txt for details >> %SystemDrive%\FWSUpdates\status\sync_log.txt +goto cleanup + +:postcopy +echo %DATE% %TIME% - Copy finished successfuly, now checking if changes must be applied >> %SystemDrive%\FWSUpdates\status\sync_log.txt +FOR /F %%A IN ('cscript %SystemDrive%\FWSUpdates\repository\wpkg.js /query:m ^| find /V "productkey" ^| find /C "ID:"') DO SET /A CHANGES=%%A +echo %DATE% %TIME% - Found %CHANGES% changes >> %SystemDrive%\FWSUpdates\status\sync_log.txt +SET NOW=%DATE:~-4%%DATE:~3,2%%DATE:~0,2% +SET /A MAX=%SINCE%+%MAX_REPORT% +SET /A DELTA=%NOW%-%SINCE% +reg add "HKLM\Software\FWS\Updates" /v PendingChanges /t REG_DWORD /d %CHANGES% /f +IF %CHANGES% GTR 0 ( + reg query "HKLM\Software\FWS\Updates" /v ChangesAvailableSince 1>NUL 2>NUL + IF ERRORLEVEL 1 ( + reg add "HKLM\Software\FWS\Updates" /v ChangesAvailableSince /t REG_DWORD /d %NOW% /f + ) ELSE ( + FOR /F %%A IN ('reg query "HKLM\Software\FWS\Updates" /v ChangesAvailableSince') DO SET /A SINCE=%%A + IF %NOW% GTR %MAX% add "HKLM\Software\FWS\Updates" /v RunOnShutdown /t REG_DWORD /d 1 /f + ) + goto copylogs +) ELSE ( + reg delete "HKLM\Software\FWS\Updates" /v ChangesAvailableSince /f + goto copylogs +) + +:copylogs +REM map another network drive to push logs +SET LOGDRIVE=unknown +FOR %%D IN (e f g h i j k l m n o p q r s t u v w x y z) do ( + cd %%D: + IF ERRORLEVEL 1 SET LOGDRIVE=%%D + IF ERRORLEVEL 1 goto logdrivefound +) +echo %DATE% %TIME% - couldn't find any free drive letter for logs > %SystemDrive%\FWSUpdates\status\sync_log.txt +goto :EOF + +:logdrivefound +net use %LOGDRIVE%: %LOGS% /PERSISTENT:NO /USER:%USER% %PASS% 1>NUL 2>NUL +REM Check if mapping worked +IF %ERRORLEVEL% NEQ 0 ( + echo %DATE% %TIME% - Error mapping %LOGS% >> %SystemDrive%\FWSUpdates\status\sync_log.txt + goto cleanup +) +IF NOT EXIST "%LOGDRIVE%:\keys" mkdir "%LOGDRIVE%:\keys" +IF NOT EXIST "%LOGDRIVE%:\logs" mkdir "%LOGDRIVE%:\logs" +IF NOT EXIST "%LOGDRIVE%:\databases" mkdir "%LOGDRIVE%:\databases" +IF EXIST "%SystemDrive\FWSUpdates\prodkeys\%COMPUTERNAME%.txt" copy /Y "%SystemDrive\FWSUpdates\prodkeys\%COMPUTERNAME%.txt" "%LOGDRIVE%:\keys" +IF EXIST "%TEMP%\wpkg-%COMPUTERNAME%.log" copy /Y "%TEMP%\wpkg-%COMPUTERNAME%.log" "%LOGDRIVE%:\logs\%COMPUTERNAME%.log" +IF EXIST "%SYSTEMROOT%\system32\wpkg.xml" copy /Y "%SYSTEMROOT%\system32\wpkg.xml" "%LOGDRIVE%:\databases\%COMPUTERNAME%.xml" +net use /D %LOGDRIVE%: 1>NUL 2>NUL +goto cleanup + +:cleanup +reg delete "HKLM\Software\FWS\Updates" /v SyncInProgress /f +net use /D %DRIVE%: 1>NUL 2>NUL + diff --git a/softwares/FWSUpdates/bin/wpkg_feedback.bat b/softwares/FWSUpdates/bin/wpkg_feedback.bat new file mode 100644 index 0000000..9742edb --- /dev/null +++ b/softwares/FWSUpdates/bin/wpkg_feedback.bat @@ -0,0 +1,70 @@ +@echo off +SETLOCAL enabledelayedexpansion + +SET /A CHANGES=1 +reg query "HKLM\Software\FWS\Updates" /v PendingChanges 1>NUL 2>NUL +IF %ERRORLEVEL% EQU 0 FOR /F "tokens=3" %%A IN ('reg query "HKLM\Software\FWS\Updates" /v PendingChanges') DO SET /A CHANGES=%%A + +CALL %~dp0\..\lang\en.bat +FOR /F "tokens=3" %%A IN ('reg query "HKLM\System\CurrentControlSet\Control\nls\Language" /v Installlanguage') DO SET LANG=%%A +IF EXIST %~dp0\..\lang\%LANG%.bat CALL %~dp0\..\lang\%LANG%.bat + +SET watitle=%L_WINDOW_TITLE% +SET wasig=%L_WINDOW_SIG% +SET walabels=%L_BTN_PREV%;%L_BTN_NEXT%;%L_BTN_OK%;%L_BTN_CANCEL% +SET wabmp=%SystemDrive%\FWSUpdates\assets\img\fws.bmp +SET waico=%SystemDrive%\FWSUpdates\assets\img\fws.ico + +SET watext=%L_INITIALIZING_UPDATES% +start /w %SystemDrive%\FWSUpdates\bin\wizapp.exe PB OPEN NOBACK NOCANCEL +SET /A STEP=90/%CHANGES% +SET /A PROGRESS=0 +SET watext=%L_CHECKING_INSTALLS% +SET /A CANCEL=0 +start /w %SystemDrive%\FWSUpdates\bin\wizapp.exe PB UPDATE 1 +FOR /F "tokens=2" %%A IN ('cscript %SystemDrive%\FWSUpdates\repository\wpkg.js /nonotify /quiet:true /query:I ^| find "ID:" ^| find /V "productkey" ') DO ( + SET PACKAGE=%%A + SET watext=%L_INSTALLING_X% !PACKAGE! + start /w %SystemDrive%\FWSUpdates\bin\wizapp.exe PB UPDATE !PROGRESS! + IF !ERRORLEVEL! EQU 2 goto :cancel + cscript %SystemDrive%\FWSUpdates\repository\wpkg.js /install:!PACKAGE! /nonotify /quiet:true /noreboot /logAppend:true 1>NUL 2>NUL + SET /A PROGRESS=PROGRESS+%STEP% +) +SET watext=%L_CHECKING_UPDATES% +start /w %SystemDrive%\FWSUpdates\bin\wizapp.exe PB UPDATE %PROGRESS% +FOR /F "tokens=2" %%A IN ('cscript %SystemDrive%\FWSUpdates\repository\wpkg.js /nonotify /quiet:true /query:u /logAppend:true ^| find "ID:" ^| find /V "productkey"') DO ( + SET PACKAGE=%%A + SET watext=%L_UPDATING_X% !PACKAGE! + start /w %SystemDrive%\FWSUpdates\bin\wizapp.exe PB UPDATE !PROGRESS! + IF !ERRORLEVEL! EQU 2 goto :cancel + cscript %SystemDrive%\FWSUpdates\repository\wpkg.js /upgrade:!PACKAGE! /nonotify /quiet:true /noreboot /logAppend:true 1>NUL 2>NUL + SET /A PROGRESS=PROGRESS+%STEP% +) +SET watext=%L_CHECKING_REMOVES% +start /w %SystemDrive%\FWSUpdates\bin\wizapp.exe PB UPDATE %PROGRESS% +FOR /F "tokens=2" %%A IN ('cscript %SystemDrive%\FWSUpdates\repository\wpkg.js /nonotify /quiet:true /query:r /logAppend:true ^| find "ID:" ^| find /V "productkey"') DO ( + SET PACKAGE=%%A + SET watext=%L_REMOVING_X% !PACKAGE! + start /w %SystemDrive%\FWSUpdates\bin\wizapp.exe PB UPDATE !PROGRESS! + IF !ERRORLEVEL! EQU 2 goto :cancel + cscript %SystemDrive%\FWSUpdates\repository\wpkg.js /remove:!PACKAGE! /nonotify /quiet:true /noreboot /logAppend:true 1>NUL 2>NUL + SET /A PROGRESS=PROGRESS+%STEP% +) +SET watext=%L_SYNCHRONIZING_CHANGES% +start /w %SystemDrive%\FWSUpdates\bin\wizapp.exe PB UPDATE %PROGRESS% +IF %ERRORLEVEL% EQU 2 goto :cancel +cscript %SystemDrive%\FWSUpdates\repository\wpkg.js /synchronize /nonotify /quiet:true /noreboot /logAppend:true 1>NUL 2>NUL +goto :finish + +:cancel +SET watext=%L_CANCELLING_UPDATES% +start /w %SystemDrive%\FWSUpdates\bin\wizapp.exe PB UPDATE 90 +goto :finish + +:finish +FOR /F %%A IN ('cscript %SystemDrive%\FWSUpdates\repository\wpkg.js /nonotify /quiet:true /query:m /logAppend:true ^| find /V "productkey" ^| find /C "ID:"') DO SET /A CHANGES=%%A +reg add "HKLM\Software\FWS\Updates" /v PendingChanges /t REG_DWORD /d %CHANGES% /f +reg delete "HKLM\Software\FWS\Updates\User" /v RunOnShutdown /f 1>NUL 2>NUL +reg delete "HKLM\Software\FWS\Updates" /v RunOnShutdown /f 1>NUL 2>NUL + +start /w %SystemDrive%\FWSUpdates\bin\wizapp.exe PB CLOSE diff --git a/softwares/FWSUpdates/lang/040C_utf8.bat b/softwares/FWSUpdates/lang/040C_utf8.bat new file mode 100644 index 0000000..23e0a24 --- /dev/null +++ b/softwares/FWSUpdates/lang/040C_utf8.bat @@ -0,0 +1,37 @@ +SET L_WINDOW_TITLE=Mise à jour +SET L_WINDOW_SIG=Firewall Services +SET L_BTN_PREV=Précédent +SET L_BTN_NEXT=Suivant +SET L_BTN_OK=Valider +SET L_BTN_CANCEL=Annuler +SET L_ONE_UPDATE_AVAILABLE=mise à jour est disponible +SET L_X_UPDATES_AVAILABLE=mises à jour sont disponibles +SET L_NO_UPDATE_AVAILABLE=Aucune mise à jour n'est disponible +SET L_ONE_UPDATE_AVAILABLE_SINCE=Cette mise à jour est disponible +SET L_X_UPDATES_AVAILABLE_SINCE=Parmi ces mises à jour, certaines sont disponibles +SET L_FOR_YOUR_SYSTEM=pour votre poste +SET L_YOU_CAN_SCHEDULE=Vous pouvez programmer l'installation au prochain arrêt ou la repousser à plus tard +SET L_SCHEDULE_ON_SHUTDOWN=Programmer l'installation au prochain arrêt du système +SET L_INSTALL_NOW=Installer maintenant +SET L_REPORT=Repousser à plus tard +SET L_SINCE=depuis +SET L_DAYS=jour^(s^^^) +SET L_CANT_REPORT_ANYMORE=il n'est plus possible de retarder leur installation, qui sera effectuée au prochain arrêt du système +SET L_UPDATES_REPORTED=L'installation des mises à jour est repoussée. Elle vous sera reproposée ultérieurement +SET L_UPDATES_SCHEDULED=Les mises à jour ont été programmées pour s'installer durant le prochain arrêt du système +SET L_INITIALIZING_UPDATES=Préparation de l'installation des mises à jour +SET L_CHECKING_INSTALLS=Recherche des logiciels à installer +SET L_INSTALLING_X=Installation de +SET L_CHECKING_UPDATES=Recherche des logiciels à mettre à jour +SET L_UPDATING_X=Mise à jour de +SET L_CHECKING_REMOVES=Recherche des logiciels à supprimer +SET L_REMOVING_X=Suppression de +SET L_SYNCHRONIZING_CHANGES=Synchronisation des changements restants +SET L_UPDATES_FINISHED=L'installation des mises à jour est terminée +SET L_SYNC_ALREADY_IN_PROGRESS=Les mises à jour sont en cours de téléchargement depuis le serveur. Veuillez réessayer plus tard +SET L_ALREADY_SCHEDULED_ON_SHUTDOWN=L'installation des mises à jour a déjà été programmé durant le prochain arrêt ou redémarrage de la machine +SET L_CHECK_ONLINE_FOR_UPDATES=Vérifier maintenant en ligne +SET L_CANCELLING_UPDATES=Annulation des mises à jour en cours +SET L_INSTALL_FORCED_IN=L'installation des mises à jour sera forcée dans +SET L_MAINTAIN_ON_SHUTDOWN=Maintenir la programmation +SET L_CANCEL_SCHEDULE_ON_SHUTDOWN=Annuler la programmation diff --git a/softwares/FWSUpdates/lang/en_utf8.bat b/softwares/FWSUpdates/lang/en_utf8.bat new file mode 100644 index 0000000..d94d25a --- /dev/null +++ b/softwares/FWSUpdates/lang/en_utf8.bat @@ -0,0 +1,37 @@ +SET L_WINDOW_TITLE=System updates +SET L_WINDOW_SIG=Firewall Services +SET L_BTN_PREV=Previous +SET L_BTN_NEXT=Next +SET L_BTN_OK=Validate +SET L_BTN_CANCEL=Cancel +SET L_ONE_UPDATE_AVAILABLE=update available +SET L_X_UPDATES_AVAILABLE=updates available +SET L_NO_UPDATE_AVAILABLE=No update available +SET L_ONE_UPDATE_AVAILABLE_SINCE=This update is available +SET L_X_UPDATES_AVAILABLE_SINCE=Among these updates, some are available +SET L_FOR_YOUR_SYSTEM=for your system +SET L_YOU_CAN_SCHEDULE=You can schedule installation on next shutdown, or postpone it +SET L_SCHEDULE_ON_SHUTDOWN=Schedule installation on next shutdown +SET L_INSTALL_NOW=Install now +SET L_REPORT=Postpone +SET L_SINCE=since +SET L_DAYS=day^(s^^^) +SET L_CANT_REPORT_ANYMORE=It's no longer possible to postpone installation, which will run on next shutdown +SET L_UPDATES_REPORTED=Installation was postponed. You'll be asked again to install later to schedule the updates +SET L_UPDATES_SCHEDULED=Updates have been schedule to run on next shutdown +SET L_INITIALIZING_UPDATES=Initializing updates installation +SET L_CHECKING_INSTALLS=Searching software to install +SET L_INSTALLING_X=Installing +SET L_CHECKING_UPDATES=Searching softwares to update +SET L_UPDATING_X=Updating +SET L_CHECKING_REMOVES=Searching softwares to remove +SET L_REMOVING_X=Removing +SET L_SYNCHRONIZING_CHANGES=Synchronizing remaining changes +SET L_UPDATES_FINISHED=Updates have been installed +SET L_SYNC_ALREADY_IN_PROGRESS=Updates are currently being downloaded, please try again later +SET L_ALREADY_SCHEDULED_ON_SHUTDOWN=Installation is already scheduled on next shutdown +SET L_CHECK_ONLINE_FOR_UPDATES=Check now online +SET L_CANCELLING_UPDATES=Cancelling updates +SET L_INSTALL_FORCED_IN=Installation will be enforced in +SET L_MAINTAIN_ON_SHUTDOWN=Keep schedule +SET L_CANCEL_SCHEDULE_ON_SHUTDOWN=Cancel schedule diff --git a/softwares/chkupd_bgmon.vbs b/softwares/chkupd_bgmon.vbs new file mode 100644 index 0000000..8c4f58e --- /dev/null +++ b/softwares/chkupd_bgmon.vbs @@ -0,0 +1,2 @@ +Set objShell = CreateObject("Wscript.Shell") +objShell.Run """" & objShell.ExpandEnvironmentStrings("%SYSTEMDRIVE%") & "\FWSUpdates\bin\chkupd.bat" & """" & " loop", 0, False diff --git a/softwares/create_shortcut.vbs b/softwares/create_shortcut.vbs new file mode 100644 index 0000000..4dee077 --- /dev/null +++ b/softwares/create_shortcut.vbs @@ -0,0 +1,8 @@ +Set objShell = CreateObject("WScript.Shell") +strStartMenu = objShell.SpecialFolders("AllUsersStartMenu") +Set objLink = objShell.CreateShortcut(strStartMenu & "\FWS Updates.lnk") +objLink.IconLocation = objShell.ExpandEnvironmentStrings("%SystemDrive%") & "\FWSUpdates\assets\img\fws.ico" +objLink.TargetPath = objShell.ExpandEnvironmentStrings("%SystemDrive%") & "\FWSUpdates\bin\chkupd_launcher.bat" +objLink.WindowStyle = 3 +objLink.Save +WScript.Quit diff --git a/softwares/fwsupdates.vbs b/softwares/fwsupdates.vbs new file mode 100644 index 0000000..13188fd --- /dev/null +++ b/softwares/fwsupdates.vbs @@ -0,0 +1,2 @@ +Set objShell = CreateObject("Wscript.Shell") +objShell.Run """" & objShell.ExpandEnvironmentStrings("%SYSTEMDRIVE%") & "\FWSUpdates\bin\on_shutdown.bat" & """", 0, True diff --git a/softwares/localgp.vbs b/softwares/localgp.vbs new file mode 100755 index 0000000..b5336f5 --- /dev/null +++ b/softwares/localgp.vbs @@ -0,0 +1,330 @@ +'********************************************************* +' En-tête +'********************************************************* +' °Author : BLUTEAU Erwan et christian grandjean +' °Date : 28.01.2011 +' °Version : 3.0 +' +' °Script description : +' Add entries in local GPO for "Machine => Startup/Shutdown" or "User +' => Logon/Logoff" entries. +' +' °Script parameters : +' sScript = Script or application to run +' sParameters = command line parameters +' sAddInStartupOrLogin +' True = Startup / Logon +' False = Shutdown / Logoff +' sMACHINEorUSER +' MACHINE = Machine Policy +' USER = User Policy +' +' °Script workflow : +' 1. Set ini file to normal mode +' 2. Edit ini file +' 3. Create/Add changes +' 4. Delete GPO registry key +' 5. Set ini file to hidden mode +' 6. Run GPUPDATE to integrate entries in registry +' +' °Remarks : +' The script accept maximum 9 entries in ini file +' +'******************************************************** +' Fin en-tête +'********************************************************* + + +Const ForReading =1 'Constante pour l ouverture en lecture d un fichier +Const ForWriting = 2 +const ForAppending = 8 +Const DeleteReadOnly = True +'********************************************************* +'recupération des paramétres +'********************************************************* +Set objArgs = Wscript.Arguments ' Objet pour récupérer les arguments +'Param 1 +TargetRunningScript=Wscript.Arguments(0) +'Param 2 +if Wscript.Arguments.count <= 3 then + TargetRunningScriptParam="" +else + TargetRunningScriptParam = Wscript.Arguments(1) + if Wscript.Arguments.count >= 5 then + for i = 2 to Wscript.Arguments.count-3 + TargetRunningScriptParam = TargetRunningScriptParam & " " & Wscript.Arguments(i) + next + end if +end if +'Param 3 +TargetTime=Wscript.Arguments(Wscript.Arguments.count-2) +'Param 4 +TargetGPO=Wscript.Arguments(Wscript.Arguments.count-1) + +'wscript.echo "param1=" & TargetRunningScript +'wscript.echo "param2=" & TargetRunningScriptParam +'wscript.echo "param3=" & TargetTime +'wscript.echo "param4=" & TargetGPO + + +'LANCEMENT SCRIPT +WriteGPOScriptPolicyGPTINIFILE TargetTime,TargetGPO +WriteGPOScriptPolicy TargetRunningScript,TargetRunningScriptParam,TargetTime,TargetGPO +'********************************************************* +' FIN +'********************************************************* +'WScript.Sleep 10000 +WScript.Quit + + + + + + +'********************************************************* +' LES FONCTIONS +'********************************************************* +Sub WriteGPOScriptPolicyGPTINIFILE(ByVal sAddInStartupOrLogin, ByVal sMACHINEorUSER) + Dim objFSO,ooShell + Dim sSys32 + Dim FicGptIni, PathGptIni, TmpVar, NbrLigne, i,ext, version + Dim TABGptIni() + Set ooShell = CreateObject("WSCript.Shell") 'Pour RUN de commandes + Set objFSO = CreateObject("Scripting.FileSystemObject") ' + Set sSys32 = objFSO.GetSpecialFolder(1) + + PathGptIni = sSys32 & "\GroupPolicy\gpt.ini" + PathGptIniTMP = PathGptIni & ".tmp" + + NbrLigne = 0 + IF not objFSO.FileExists(PathGptIni) Then + Set FicGptIni = objFSO.OpenTextFile(PathGptIni, ForWriting,true) + FicGptIni.write("[General]") + FicGptIni.close + end if + + Set FicGptIni = objFSO.OpenTextFile(PathGptIni, ForReading) + + Do Until FicGptIni.AtEndOfStream + NbrLigne = NbrLigne + 1 + TmpVar = FicGptIni.ReadLine() + ReDim preserve TABGptIni(NbrLigne) + TABGptIni(NbrLigne)=TmpVar + 'wscript.echo TABGptIni(NbrLigne) + Loop + 'wscript.echo "***********************" + 'wscript.echo "***********************" + + if sMACHINEorUSER = "MACHINE" then + gPCMachineLine = 0 + generalLine = 0 + For i = 0 to NbrLigne + if instr(1,TABGptIni(i),"gPCMachineExtensionNames", 1) then + gPCMachineLine = 1 + if instr(TABGptIni(i),"[{42B5FAAE-6536-11D2-AE5A-0000F87571E3}{40B6664F-4972-11D1-A7CA-0000F87571E3}]") then + 'wscript.echo "deja présent" + else + ext = right(TABGptIni(i),len(TABGptIni(i))-instr(TABGptIni(i),"=")) + TABGptIni(i) = "gPCMachineExtensionNames=" & "[{42B5FAAE-6536-11D2-AE5A-0000F87571E3}{40B6664F-4972-11D1-A7CA-0000F87571E3}]" & ext + end if + end if + + if instr(1,TABGptIni(i),"Version=",1) AND (instr(1,TABGptIni(i),"gPCFunctionalityVersion",1)=0) then + version = right(TABGptIni(i),len(TABGptIni(i))-instr(TABGptIni(i),"=")) + version = version + 65536 + TABGptIni(i) = "Version=" & version + end if + if instr(1,TABGptIni(i),"[General]", 1) then + generalLine = 1 + end if + if i = NbrLigne AND generalLine = 0 then + TABGptIni(i) = TABGptIni(i) & vbNewLine & "[General]" + end if + if i = NbrLigne AND gPCMachineLine = 0 then + TABGptIni(i) = TABGptIni(i) & vbNewLine & "gPCMachineExtensionNames=" & "[{42B5FAAE-6536-11D2-AE5A-0000F87571E3}{40B6664F-4972-11D1-A7CA-0000F87571E3}]" & vbNewLine & "Version=1" + end if + Next + end if + + if sMACHINEorUSER = "USER" then + gPCUserLine = 0 + For i = 0 to NbrLigne + if instr(TABGptIni(i),"gPCUserExtensionNames") then + if instr(TABGptIni(i),"[{42B5FAAE-6536-11D2-AE5A-0000F87571E3}{40B66650-4972-11D1-A7CA-0000F87571E3}]") then + 'wscript.echo "deja présent" + else + ext = right(TABGptIni(i),len(TABGptIni(i))-instr(TABGptIni(i),"=")) + TABGptIni(i) = "gPCUserExtensionNames=" & "[{42B5FAAE-6536-11D2-AE5A-0000F87571E3}{40B66650-4972-11D1-A7CA-0000F87571E3}]" & ext + end if + end if + + if instr(TABGptIni(i),"Version=") AND (instr(TABGptIni(i),"gPCFunctionalityVersion")=0) then + version = right(TABGptIni(i),len(TABGptIni(i))-instr(TABGptIni(i),"=")) + version = version + 1 + TABGptIni(i) = "Version=" & version + end if + if i = NbrLigne AND gPCUserLine = 0 then + TABGptIni(i) = TABGptIni(i) & vbNewLine & "gPCUserExtensionNames=" & "[{42B5FAAE-6536-11D2-AE5A-0000F87571E3}{40B6664F-4972-11D1-A7CA-0000F87571E3}]" & vbNewLine & "Version=1" + end if + Next + end if + + on error goto 0 + If objFSO.FileExists(PathGptIniTMP) Then + objFSO.DeleteFile(PathGptIniTMP) + End If + Set FicGptIniTEMP = objFSO.OpenTextFile(PathGptIniTMP, ForWriting,true) + for k = 0 to NbrLigne + 'wscript.echo TABGptIni(k) + FicGptIniTEMP.write(TABGptIni(k) & vbNewLine) + next + FicGptIniTEMP.close + objFSO.CopyFile PathGptIniTMP, PathGptIni, 1 + If objFSO.FileExists(PathGptIniTMP) Then + objFSO.DeleteFile(PathGptIniTMP) + End If + + +End Sub +'********************************************************* +Sub WriteGPOScriptPolicy(ByVal sScript, ByVal sParameters, ByVal sAddInStartupOrLogin, ByVal sMACHINEorUSER) + Dim sScriptPath, sSys32, sTMP + Dim oINI, ooShell, ooFSO, oINIProperties, oRegFile + Dim iLastStartup, iLastShutdown + Dim sOption1, sOption2, sStartup, sShutdown + sStartup = "" + sShutdown = "" + sMACHINEorUSER = Ucase(sMACHINEorUSER) + + Set ooShell = CreateObject("WSCript.Shell") + Set ooFSO = CreateObject("Scripting.FileSystemObject") + + Set sSys32 = ooFSO.GetSpecialFolder(1) + + ' Check if COMPUTER or USER Policy + If sMACHINEorUSER = "MACHINE" Then + sScriptPath = sSys32 & "\GroupPolicy\Machine\Scripts\scripts.ini" + Elseif sMACHINEorUSER = "USER" Then + sScriptPath = sSys32 & "\GroupPolicy\User\Scripts\scripts.ini" + Else + WScript.Echo "Please set value for sMACHINEorUSER !" + WScript.Quit + End If + + If (Not ooFSO.FileExists(sScriptPath)) Then + ' Add new value in startup or shutdown + If sAddInStartupOrLogin Then + iLastStartup = 0 + If sMACHINEorUSER = "MACHINE" Then sStartup = VbCrLf & "[Startup]" + If sMACHINEorUSER = "USER" Then sStartup = VbCrLf & "[Logon]" + sStartup = sStartup & VbCrLf & iLastStartup & "CmdLine=" & sScript + sStartup = sStartup & VbCrLf & iLastStartup & "Parameters=" & sParameters + Else + iLastShutdown = 0 + If sMACHINEorUSER = "MACHINE" Then sStartup = VbCrLf & "[Shutdown]" + If sMACHINEorUSER = "USER" Then sStartup = VbCrLf & "[Logoff]" + sShutdown = sShutdown & VbCrLf &iLastShutdown & "CmdLine=" & sScript + sShutdown = sShutdown & VbCrLf &iLastShutdown & "Parameters=" & sParameters + End If + Else + ' Set file as normal + Set oINIProperties = ooFSO.GetFile(sScriptPath) + oINIProperties.Attributes = 0 'The File become Hidden! + + ' read + Set oINI = ooFSO.OpenTextFile(sScriptPath, 1) + + iLastStartup = 0 + iLastShutdown = 0 + + Do While 1 = 1 + On Error Resume Next + sTMP = oINI.ReadLine + 'If sTMP = VbCrLf Then sTMP = "" + If Err > 0 Then Exit Do + On Error GoTo 0 + + If InStr(1, UCase(sTMP), UCase("[Startup]")) > 0 And sMACHINEorUSER = "MACHINE" Then sOption1 = sTMP + If InStr(1, UCase(sTMP), UCase("[Shutdown]")) > 0 And sMACHINEorUSER = "MACHINE" Then sOption2 = sTMP + If InStr(1, UCase(sTMP), UCase("[Logon]")) > 0 And sMACHINEorUSER = "USER" Then sOption1 = sTMP + If InStr(1, UCase(sTMP), UCase("[Logoff]")) > 0 And sMACHINEorUSER = "USER" Then sOption2 = sTMP + + If sOption1 = "[Startup]" And sOption2 <> "[Shutdown]" Or sOption1 = "[Logon]" And sOption2 <> "[Logoff]" Then + sStartup = sStartup & VbCrLf & sTMP + + On Error Resume Next + 'WScript.Echo CInt(Left(sTMP, 1)) + iLastStartup = Cint(Left(sTMP, 1)) + 1 + On Error GoTo 0 + 'WScript.Echo "Start Next value = " & iLastStartup + Else + sShutdown = sShutdown & VbCrLf & sTMP + On Error Resume Next + 'WScript.Echo CInt(Left(sTMP, 1)) + iLastShutdown = CInt(Left(sTMP, 1)) + 1 + On Error GoTo 0 + 'WScript.Echo "Shutdown Next value = " & iLastShutdown + End If + Loop + + ' Add new value in startup or shutdown + If sAddInStartupOrLogin Then + ' If key dont exist + If InStr(1, sStartup, "[Startup]") = 0 And sMACHINEorUSER = "MACHINE" Then sStartup = VbCrLf & "[Startup]" + If InStr(1, sStartup, "[Logon]") = 0 And sMACHINEorUSER = "USER" Then sStartup = VbCrLf & "[Logon]" + ' Don't add the script agin if it's already there. Not very foolproof but.... + If InStr(1, sStartup, "CmdLine=" & sScript, 1) = 0 Then + sStartup = sStartup & VbCrLf &iLastStartup & "CmdLine=" & sScript + sStartup = sStartup & VbCrLf & iLastStartup & "Parameters=" & sParameters + End If + Else + ' If key dont exist + If InStr(1, sShutdown, "[Shutdown]") = 0 And sMACHINEorUSER = "MACHINE" Then sShutdown = VbCrLf & "[Shutdown]" + If InStr(1, sShutdown, "[Logoff]") = 0 And sMACHINEorUSER = "USER" Then sShutdown = VbCrLf & "[Logoff]" + If InStr(1, sShutdown, "CmdLine=" & sScript, 1) = 0 Then + sShutdown = sShutdown & VbCrLf & iLastShutdown & "CmdLine=" & sScript + sShutdown = sShutdown & VbCrLf & iLastShutdown & "Parameters=" & sParameters + End If + End If + + ' Close file + oINI.Close + End If + On Error GoTo 0 + ' prin result + 'WScript.Echo sStartup & sShutdown + + ' Write result in ini file + Set oINI = ooFSO.CreateTextFile(sScriptPath, True) + oINI.WriteLine sStartup & sShutdown + oINI.Close + + ' Set file as hidden + Set oINIProperties = ooFSO.GetFile(sScriptPath) + oINIProperties.Attributes = 2 'The File become Hidden! + + ' Remove registry key + 'Set oRegFile = ooFSO.CreateTextFile(CurDir & "\~TMP-REG-WriteGPOScriptPolicy-Script.reg", True) + 'oRegFile.WriteLine "Windows Registry Editor Version 5.00" + 'oRegFile.WriteLine "[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine\Scripts]" + 'oRegFile.Close + 'oShell.Run "REGEDIT /S " & CurDir & "\~TMP-REG-WriteGPOScriptPolicy-Script.reg" + 'oFSO.DeleteFile CurDir & "\~TMP-REG-WriteGPOScriptPolicy-Script.reg", True + + ' Check if COMPUTER or USER Policy + If sMACHINEorUSER = "MACHINE" Then + ' Reload configuration from ini file + ooShell.Run "GPUPDATE /Target:Computer /Wait:30", 0, True + 'if err.number <> 0 then + ' wscript.echo "ERREUR : " & err.Number & " : " & err.Description + ' wscript.sleep 10000 + 'end if + Elseif sMACHINEorUSER = "USER" Then + ' Reload configuration from ini file + ooShell.Run "GPUPDATE /Target:User /Force /Wait:30", 0, True + Else + WScript.Echo "Please set value for sMACHINEorUSER !" + WScript.Quit + End If + +End Sub diff --git a/softwares/offline_upgrade.bat b/softwares/offline_upgrade.bat new file mode 100644 index 0000000..cc8b754 --- /dev/null +++ b/softwares/offline_upgrade.bat @@ -0,0 +1,22 @@ +@echo off + +REM perform upgrade of WPKG client + +IF EXIST "%SystemDrive%\FWSUpdates\assets.upgrade" ( + RMDIR /S /Q "%SystemDrive%\FWSUpdates\assets" + RENAME "%SystemDrive%\FWSUpdates\assets.upgrade" assets +) +IF EXIST "%SystemDrive%\FWSUpdates\bin.upgrade" ( + RMDIR /S /Q "%SystemDrive%\FWSUpdates\bin" + RENAME "%SystemDrive%\FWSUpdates\bin.upgrade" bin +) +IF EXIST "%SystemDrive%\FWSUpdates\lang.upgrade" ( + RMDIR /S /Q "%SystemDrive%\FWSUpdates\lang" + RENAME "%SystemDrive%\FWSUpdates\lang.upgrade" lang +) +IF EXIST "%SystemRoot%\System32\GroupPolicy\Machine\Scripts\Shutdown\wpkg.bat" DEL /F /Q "%SystemRoot%\System32\GroupPolicy\Machine\Scripts\Shutdown\wpkg.bat" +IF EXIST "%SystemRoot%\System32\GroupPolicy\Machine\Scripts\Shutdown\fwsupdates.upgrade.vbs" ( + DEL /Q "%SystemRoot%\System32\GroupPolicy\Machine\Scripts\Shutdown\fwsupdates.vbs" + RENAME "%SystemRoot%\System32\GroupPolicy\Machine\Scripts\Shutdown\fwsupdates.upgrade.vbs" fwsupdates.vbs +) +reg delete "HKLM\Software\FWS\Updates" /v PendingChanges /f diff --git a/wpkg-fwsupdates.spec b/wpkg-fwsupdates.spec new file mode 100644 index 0000000..32e235a --- /dev/null +++ b/wpkg-fwsupdates.spec @@ -0,0 +1,61 @@ +%define package fwsupdates +%define version 0.1.0 +%define release 0.beta1 + +Name: wpkg-fwsupdates +Version: %{version} +Release: %{release}%{?dist} +Summary: WPKG Client with a GUI + +Group: System/Softwares +URL: http://www.ipasserelle.com +Source0: %{name}-%{version}.tar.gz +License: misc + +BuildRoot: /var/tmp/%{name}-%{version}-%{release}-buildroot +BuildArch: noarch +BuildRequires: unix2dos +BuildRequires: e-smith-devtools +BuildRequires: /usr/bin/iconv + +Requires: ipasserelle-gp + +%description +Meta package to install WPKG supported softwares on iPasserelle + +%prep +%setup -q -n %{name}-%{version} + +%build +perl createlinks +unix2dos packages/* +for F in $(ls softwares/FWSUpdates/lang/*.bat); do + L=${F%_utf8.bat}.bat + iconv -f UTF-8 -t CP850 -o $L $F + unix2dos $L + rm -f $F +done + +%install +/bin/rm -rf %{buildroot} +cp -a root %{buildroot}/ +mkdir -p %{buildroot}/home/e-smith/files/shares/wpkg/files/packages +mkdir -p %{buildroot}/home/e-smith/files/shares/wpkg/files/softwares/%{package} +mkdir -p %{buildroot}/home/e-smith/files/shares/wpkg/files/settings/%{package} +cp -r softwares/* %{buildroot}/home/e-smith/files/shares/wpkg/files/softwares/%{package}/ +cp -r packages/* %{buildroot}/home/e-smith/files/shares/wpkg/files/packages/ +cp -r settings/* %{buildroot}/home/e-smith/files/shares/wpkg/files/settings/%{package}/ + +%files +%defattr(-,root,root) +%doc CHANGELOG.git +/home/e-smith/files/shares/ +/etc + +%clean +/bin/rm -rf %{buildroot} + +%changelog +* Wed Dec 9 2015 Daniel Berteaud 0.1.0-1 +- First package +