View previous topic :: View next topic |
Author |
Message |
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Tue Jun 27, 2017 01:32 Post subject: |
|
|
Skif_off wrote: | Аргументы сомнению какие-нибудь есть? | Зачем сомнению аргументы? Аргументы должны быть у утверждения. Сомнения строятся на предположениях, иначе бы не было смысла предлагать проверить. Только тебе-то какая разница? Ты же этим не пользуешься.
Iori
Давай попробуем сделать. Только сперва мне нужна версия библиотеки, включая битность. Сам файл нужен. У меня 6.1.7601.17514 (win7sp1_rtm.101119-1850).
Iori wrote: | Решение очень хорошее. | А что там хорошего? Это же обычная регистрация. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Iori
Joined: 25 Apr 2012 Posts: 551
|
(Separately) Posted: Tue Jun 27, 2017 03:37 Post subject: |
|
|
Flasher
Quote: | А что там хорошего? Это же обычная регистрация. |
А нельзя ли сделать что-бы сам скрипт запускал Code: | regsvr32 /s msado15.dll | , если не находит в реестре метку msado15.dll.
Quote: | Давай попробуем сделать. |
Спасибо за предложение. Способ который подсказал Skif_off, я скорее всего смогу сам осуществить.
У меня в TC есть кнопки для 7зип которые запускаются через батник. Работают без проблем. По этому я всегда могу использовать их там. Идея была убрать лишние кнопки и оставить только твой скрипт, но так что бы он работал универсально везде. Если это получиться без особо больших затрат, то хорошо, а если нет, то не беда. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Tue Jun 27, 2017 10:09 Post subject: |
|
|
Iori
Просто надо выбрать файл и выложить сюда. Чтобы работало на разных битностях, проще - сразу 32-битный. Есть ещё идея заменить на ChilkatCharset.dll (правда он Trial), только тогда мне придётся ещё скрипт править. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Skif_off
Joined: 28 Nov 2012 Posts: 1232
|
(Separately) Posted: Tue Jun 27, 2017 11:37 Post subject: |
|
|
Как-то много слов, предположу, что предположение на пустом месте.
Flasher wrote: | Чтобы работало на разных битностях проще сразу 32-битный. |
Не совсем проще: подсистему WOW64 в WinPEx64 добавляют нередко, но она бывает не исчерпывающей. Сталкивался с проблемами, тот же AkelPad при прочих равных: в AkelPad х64 всё работает, а AkelPad х86 скрипты выдают ошибку (хотя сами по себе файлы могут присутствовать, но без регистрации). Если затачивать под конкретную сборку, то лучше уточнить этот момент. Или вариант ниже.
Iori
Если прикручиваете к WinPE свою сборку ТС, то, может быть, через плагин AutoRun? В нём есть и FileExist (проверить наличие файлов), и RegRead (проверить регистрацию - один из ключей, в значении которого есть имя библиотеки), и ShellExec (зарегистрировать при необходимости). И разрядность ОС можно проверить. Если ТС будет использоваться и не в WinPE, то тогда нужно как-то это предусмотреть, например, наличие PECMD в "%WinDir%\System32\" или LetterSwap (тут могут быть варианты *.au3, *.a3x, *.exe).
Хотя, наверное, через 7zSFX попроще всё это разрулить, включая разрядность... |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Tue Jun 27, 2017 12:09 Post subject: |
|
|
Skif_off wrote: | предположу, что предположение на пустом месте. | Уверяю, что твоё предположение беспочвенно. Я не находил в сети описание такой работы с WinPE, натыкался только на какие-то проблемы с манифестами.
Skif_off wrote: | Если затачивать под конкретную сборку, то лучше уточнить этот момент. | Можно и уточнить. А можно и под обе битности подогнать.
Skif_off wrote: | Или вариант ниже. | Вариант не ахти. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Iori
Joined: 25 Apr 2012 Posts: 551
|
(Separately) Posted: Tue Jun 27, 2017 19:23 Post subject: |
|
|
Flasher
Quote: | Просто надо выбрать файл и выложить сюда |
От десятки х64 (10.0.15063.296) 32 + 64бит.
http://rgho.st/8Cl4qvqJJ
Quote: | Если прикручиваете к WinPE свою сборку ТС, то, может быть, через плагин AutoRun? |
Как вы уже сказали, через 7zSFX будет удобнее.
Я говорю что у меня есть кнопки 7zip для Winpe. Я думал что подогнать скрипт, так что-бы работал под WinPE не будет тяжело.
Спасибо за альтернативное решение проблемы. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Wed Jun 28, 2017 16:42 Post subject: |
|
|
Iori
Решил по-другому (без ADO) сделать. Не так быстро как раньше, но, возможно, устроит:
Версия +WinPE Code: | '•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
' Распаковка выбранных архивов и/или архивов в структуре выбранных каталогов
' в одноимённые папки рядом с архивами (при наличии в них более одного элемента)
' c автоматическим переходом в случае распаковки одного архива
' Условие: необходима текущая версия утилиты 7z.exe
' Параметры:
' 1. %WL (обязательный)
' 2. <расширения архивов (в т.ч. двойные) через "|"> ("" - все поддерживаемые)
' 3. <флаг распаковки одиночных элементов без подкаталогов: 1>
' 4. <пропустить/перезаписать существующие/переименовать извлекаемые файлы: s/a/u>
' 5. <флаг удаления распакованных архивов: 1>
' Примеры: %WL | %WL "" 1 | %WL 7z|7zip|arj|bzip2|rar|tar.bz2|zip | %WL "" 1 s 1
Option Explicit : Dim Z7
'••••••••• Путь к утилите 7z.exe •••••••••
Z7 = "%COMMANDER_PATH%\Utils\7-Zip\7z.exe"
'•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••• Автор: Flasher © •••
Dim A, C, Filt, One, Mode, Del, List, WSS, FSO, XML, ShA, Reg, TF, F, Ch, Cn, It
Set A = WSH.Arguments : C = A.Count: If C = 0 Then WSH.Quit
If C > 1 Then Filt = LCase(A(1)) : If C > 2 Then One = A(2)
If C > 3 Then Mode = "-ao"& A(3) : If C > 4 Then Del = A(4)
List = A(0) : Set WSS = CreateObject("WScript.Shell")
Set FSO = CreateObject("Scripting.FileSystemObject")
Set XML = CreateObject("Msxml2.DOMDocument")
Set ShA = CreateObject("Shell.Application")
Set Reg = New Regexp
Reg.IgnoreCase = True : Reg.Pattern = "^(001|7z(|ip)|a|apm|arj?|bz(|ip)2|cab|cpio|ch[iqmw]" &_
"|cramfs|deb|dmg|docx?|e(sd|pub|xe|xt[234]?)|fat|gz(|ip)|hfsx?|hx[sirqw]|ihex|img|iso|jar|" &_
"li[bt]|l(zh|ma)|lha|mbr|ms(i|lz|sp)|mub|n(si|tf)s|od[st]|qcow(|2c?)|r00|rar|rpm|pkg|ppmd|" &_
"ppt|squashfs|scap|swm|t[agx]z|tar|tbz2?|u(d|efi)f|vdi|vhd|vmdk|wim|x(ar|lsx?|pi|z)|z|zipx?)$"
TF = FSO.GetSpecialFolder(2) & "\" & FSO.GetTempName
With FSO.OpenTextFile(List,,,-1)
Do : F = Trim(.ReadLine)
If F <> "" Then If FSO.FileExists("\\?\" & F) Then _
ForFile F, Ch, It, Cn Else ForFolder F, Ch, It, Cn
Loop Until .AtEndOfStream : .Close
End With
If Ch > 1 Then WSS.Popup "Распаковка завершена!", 1.4 , " Результат", 64
If Ch = 1 Then
If Cn > 1 And FSO.FolderExists(It) Then It = FSO.GetParentFolderName(It)
WSS.Exec "%COMMANDER_EXE% /A /S /O /L=""" & Replace(It, "\\?\", "") & """"
End If : If FSO.FileExists(List) Then FSO.DeleteFile List
If FSO.FileExists(TF) Then FSO.DeleteFile TF
Sub ForFile(Arch, T, F1, Sum)
Dim Ext, BN, Ex, Arr, Item : Ext = LCase(FSO.GetExtensionName(Arch))
BN = FSO.GetBaseName(Arch) : Ex = LCase(FSO.GetExtensionName(BN))
Ex = Len(Ex) * InStr("|" & Filt & "|", "|" & Ex & "." & Ext & "|")
If (Filt = "" Or Ex Or InStr("|" & Filt & "|", "|" & Ext & "|")) And Reg.Test(Ext) Then
WSS.Run "%comspec% /c chcp 65001&&echo off>" & TF & "&echo ^<?xml version=""" &_
"1.0"" encoding=""utf-8""?^>^<a^>>>" & TF & "&&""" & Z7 & """ l -slt" &_
" """ & Arch & """ -sccUTF-8>>" & TF & "&&echo ^</a^>>>" & TF, 0, True
XML.Load TF : Arr = Split(XML.Text, "----------" & vbLf)(1)
Arr = Filter(Split(Arr, vbLf), "Path = ") : XML.Abort
Sum = Ubound(Arr) + 1 : If Sum > 0 Then Item = Split(Arr(0), " = ")(1)
If Sum < 1 And Ext = "zip" And Len(Arch) < 260 Then
Dim Items : Set Items = ShA.NameSpace(Arch).Items
Sum = Items.Count : If Sum Then Item = Items.Item(0)
End If
If Sum > 0 Or FSO.GetFile(LPath(Arch)).Size Then
Dim P, Fd, NF : P = FSO.GetParentFolderName(Arch)
Fd = P & "\" & BN
If Sum = 1 And (One = "1" Or BN = Item) Then NF = P Else NF = Fd
F1 = NF & "\" & Item
WSS.Run """" & Z7 & """ x """ & Arch & """ -o""" &_
NF & """ " & Mode & " -y -p", 0, True : T = T + 1
LPath(F1) : LPath(Fd) : LPath(Arch)
If FSO.FileExists(F1) Then
If Del = 1 And Sum = 1 Then FSO.DeleteFile Arch, 1
ElseIf FSO.FolderExists(F1) Then
If FSO.GetFolder(F1).Size Then
If Del = 1 And Sum = 1 Then FSO.DeleteFile Arch, 1
Else FSO.DeleteFolder F1, 1
End If
ElseIf FSO.FolderExists(Fd) Then
If FSO.GetFolder(Fd).Size Then
If Del = 1 Then FSO.DeleteFile Arch, 1
Else FSO.DeleteFolder Fd, 1
End If : F1 = Fd
End If
End If
End If
End Sub
Sub ForFolder(Fold, T, F1, Cnt)
Dim N : Set Fold = FSO.GetFolder(LPath(Fold))
For Each N In Fold.SubFolders : ForFolder N.Path, Ch, It, Cnt : Next
For Each N In Fold.Files : ForFile N.Path, Ch, It, Cnt : Next
End Sub
Function LPath(Obj)
LPath = Obj : If Len(Obj) > 259 And Left(Obj, 1) <> "\" Then LPath = "\\?\" & Obj
End Function |
_________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Last edited by Flasher on Wed Jun 28, 2017 21:55; edited 1 time in total |
|
Back to top |
|
|
Iori
Joined: 25 Apr 2012 Posts: 551
|
(Separately) Posted: Wed Jun 28, 2017 21:07 Post subject: |
|
|
Flasher
Ах Молодец Спасибо Огромное.
Проверил в WinPE, работает. Если и медленнее работает как ты говоришь, то на долю секунды, не больше.
Заметил что когда скрипт распаковывает 7z sfx exe файл, то потом не переходит в папку с распакованными файлами. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Wed Jun 28, 2017 21:19 Post subject: |
|
|
Iori
Пож-та. Ну, я ощущаю поболее 1 дс.
Проверил sfx (внути неск. файлов) - переход есть. Скинь свой файл. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Iori
Joined: 25 Apr 2012 Posts: 551
|
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Wed Jun 28, 2017 21:56 Post subject: |
|
|
Iori
Вроде поправил. Но вообще это и TCKB-шной версии касается. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Iori
Joined: 25 Apr 2012 Posts: 551
|
(Separately) Posted: Wed Jun 28, 2017 22:04 Post subject: |
|
|
Flasher
Работает
А версия которая поддерживает WinPE, не будет на TCKB?
Всё-таки скрипт теперь универсальнее стал. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Wed Jun 28, 2017 22:14 Post subject: |
|
|
Iori
Не, не будет. Иначе бы только заменой текущего и обошлось. Скорость для меня приоритетней, да без темпизации. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Iori
Joined: 25 Apr 2012 Posts: 551
|
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Thu Jun 29, 2017 22:26 Post subject: |
|
|
Iori
Мда. Вот тебе, бабушка, и Iori'ev (универсальный) день... Дело не в точках, а в амперсандах в путях/именах элементов архива. Пофиксить можно только заменой новоиспечённого метода чтения юникодного имени, к которому переходим. Есть, в принципе, в запасе один вариант, но он ещё помедленнее будет.
P.S.: Между ответами ровно сутки. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|