Войти

Показать полную графическую версию : Cmd 2 Vbs


gen0m.rsw
14-09-2014, 23:06
Всем участникам респект!!!
Помогите правильно перевести CMD скрипт в VBS

%windir%\Microsoft.NET\Framework\v4.0.30319\regasm.exe /codebase "%windir%\system32\ShellExt\APK Shell Extension\apkshellext.dll"

Iska
15-09-2014, 01:02
Если делать по уму — как-то так (не проверялось!):
Option Explicit

Const WindowsFolder = 0
Const SystemFolder = 1

Dim objFSO

Dim strFile1
Dim strFile2


Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")

strFile1 = objFSO.BuildPath(objFSO.GetSpecialFolder(WindowsFolder), "Microsoft.NET\Framework\v4.0.30319\regasm.exe")

If objFSO.FileExists(strFile1) Then
strFile2 = objFSO.BuildPath(objFSO.GetSpecialFolder(SystemFolder), "ShellExt\APK Shell Extension\apkshellext.dll")

If objFSO.FileExists(strFile2) Then
WScript.CreateObject("WScript.Shell").Run """" & strFile1 & """ /codebase """ & strFile2 & """", 1, True
Else
WScript.Echo "Can't find file [" & strFile2 & "]."
WScript.Quit 2
End If
Else
WScript.Echo "Can't find file [" & strFile1 & "]."
WScript.Quit 1
End If

Set objFSO = Nothing

WScript.Quit 0

gen0m.rsw
18-09-2014, 12:14
Iska
Скрип работает(если выше путь совпадает)! Как всегда не досказал!
Сборку дЭлаю, в Advanced Installer 10.7
Не хочу лишние файлы(мусор, по уму хочется, да и приятно) в инстолятор пихать!!!
Есть конечно CMD оригинальный(ниже), но в чем проблема, путь переменный(у человека должОн быть выбор,
по Ентому активно использую "Переменные среды")!!!!

"%windir%\Microsoft.NET\Framework64\v4.0.30319\regasm.exe" /codebase "%~dp0\apkshellext.dll"

Вот Ентот скрипт на Языке Advanced Installer дОлжон выглядеть так
"[WindowsFolder]Microsoft.NET\Framework64\v4.0.30319\regasm.exe" /codebase "[APKShellExtension_Dir]apkshellext.dll"
или так
"[WindowsFolder]\Microsoft.NET\Framework64\v4.0.30319\regasm.exe" /codebase "[APKShellExtension_Dir]\apkshellext.dll"

Да и на кавычки ему нас Рать(а нас больше), сам определяет(в отличие от VBS, ШОТО там иХних много)
Вот как то так!!! Спасибо за понимание Iska
А, ДА original cmd code, енто самого монстра(хорошего правда)!!!
@ECHO OFF
ECHO ################################################
ECHO ## APK Shell Extension ##
ECHO ## ##
ECHO ## http://apkshellext.googlecode.com ##
ECHO ################################################

@echo off

REM === check and get the UAC for administrator privilege ===
REM === code from https://sites.google.com/site/eneerge/scripts/batchgotadmin
REM ===
:: BatchGotAdmin
:-------------------------------------
REM --> Check for permissions
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"

REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
echo Requesting administrative privileges...
goto UACPrompt
) else ( goto gotAdmin )

:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"

"%temp%\getadmin.vbs"
exit /B

:gotAdmin
if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
pushd "%CD%"
CD /D "%~dp0"
:--------------------------------------

REM SYSTEMINFO | FIND /i "x64-based pc"
echo %PROCESSOR_IDENTIFIER% | FIND /i "x86"

IF %ERRORLEVEL%==1 (
"%windir%\Microsoft.NET\Framework64\v4.0.30319\regasm.exe" /codebase "%~dp0\apkshellext.dll"
) ELSE (
"%windir%\Microsoft.NET\Framework\v4.0.30319\regasm.exe" /codebase "%~dp0\apkshellext.dll"
)

ECHO Done!
ECHO.
ECHO /-------------------------------------------------------------------\
ECHO apkshellext is an open-source project,
ECHO Please visit http://apkshellext.googlecode.com for more information
ECHO \-------------------------------------------------------------------/

PAUSE
@ECHO ON

Тоже похожая проблема с QTAddressBar, но была решена просто(НЕ ПРОСТО) добавлением ветвей в реестр(120 записей и конечно в супер папку Assembly\и дальше), разумеется при наличии NET 2
Хотя тоже проблема решается тоже через
"%windir%\Microsoft.NET\Framework64\v4.0.30319\regasm.exe" /codebase "%~dp0\QTAddressBar.dll"

Но с apkshellext.dll файл реестра перевалил за 2000 строк(и Енто я его почистил, вплоть до пробелов), такое количество записей я не могу(не хочу) добавлять в инстолятор(MSI)!!!

Iska
18-09-2014, 17:56
Спасибо за понимание Iska »
Вы напрасно благодарите меня — я ничего не понял в Вашем сумбурном описании с настойчивым коверканием языка.




© OSzone.net 2001-2012