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

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Cmd 2 Vbs (http://forum.oszone.net/showthread.php?t=287953)

gen0m.rsw 14-09-2014 23:06 2402905

Cmd 2 Vbs
 
Всем участникам респект!!!
Помогите правильно перевести 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 2402924

Если делать по уму — как-то так (не проверялось!):
Код:

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 2404315

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 2404516

Цитата:

Цитата gen0m.rsw
Спасибо за понимание Iska »

Вы напрасно благодарите меня — я ничего не понял в Вашем сумбурном описании с настойчивым коверканием языка.


Время: 09:54.

Время: 09:54.
© OSzone.net 2001-