VBscript HTTP Status msgbox 只弹出一次问题
VBscript HTTP Status msgbox only pops up once issue
这是我正在制作的 MS-HTA 中的 VBscript 代码,它应该每隔 运行 检查一次针对网络服务器的更新。
但它不起作用,如果用户点击确定但没有弹出,它会弹出一次
下载新版本,即使它们保留在旧版本上,也不会再提示。
如果版本仍然过时,我有什么办法让它每隔 运行 提示一次?
需要是可以在 HTMLApplication MS-HTA 中运行的 VBScript。
Dim varHTTP, varBinaryString, varFileName, varLink
set objShell = CreateObject("WScript.Shell")
Set varHTTP = CreateObject("Microsoft.XMLHTTP")
Set varBinaryString = CreateObject("Adodb.Stream")
varFileName = "YoutubeDLV2.zip"
varNewFileName = "YoutubeDLV3.zip"
varLink = "https://MyURL.com/YTDL/V2/" & varFileName
varNewLink = "https://MyURL.com/YTDL/V3/" & varNewFileName
varHTTP.Open "GET", varLink, False
varHTTP.Send
CheckFile()
Sub CheckFile()
Select Case Cint(varHTTP.status)
Case 200, 202, 302
'it exists
Exit Sub
Case Else
'does not exist
msgbox "Update Found! Go to:" & vbNewLine &
"https://MyURL.com/YTDL/" & vbNewLine & "And download latest version." &
vbNewLine & vbNewLine & "Currently Running Version." & vbNewLine + varLink &
vbNewLine & vbNewLine & "Newest Version:" & vbNewLine + varNewLink
End Select
End Sub
似乎是这一行导致了问题
Case 200, 202, 302
案例202 - 每次都自己提示
案例 200、202、302 - 即使被拒绝也只会导致一次
案例 200 - 自己什么都不做
200 – OK (standard successful http request)
202 – Accepted (request accepted for processing, but not completed)
302 – Found (via redirection)
正如我上面所说,这段代码确实有效,但只有一次。我希望它每次都能正常工作,我不知道为什么我不能让它工作,有什么想法吗?
--- 编辑
我只是使用了批处理,因为我更了解它,并使它起作用。它确实依赖于 powershell 的第 5 版,因此无法在 windows 7 和第三方 wget 独立 exe 中工作,但它可以工作:)
:main
cls
set version=2.0
set filename=YoutubeDLV3.zip
wget.exe --no-check-certificate https://mysite/YTDL/version.txt >nul
set /p nwstvrsn=<version.txt
set nwstvrsn=%nwstvrsn: =%
if %version% lss %nwstvrsn% goto newupdateavailable
if %version%==%nwstvrsn% goto noupdateavailable
goto main
:newupdateavailable
cls
echo.
echo Downloading Update...
echo.
wget.exe --no-check-certificate https://mysite/YTDL/V2/%filename% -O "%filename%"
ping localhost -n 2 >nul
PowerShell.exe Expand-Archive %filename% -DestinationPath %userprofile%\Downloads\
pause
exit
:noupdateavailable
cls
echo.
echo No Update Available
echo.
pause
exit
并通过
从 hta 告诉它 运行
Sub Window_onload
Const NORMAL_WINDOW = 1
Set objShell = CreateObject("Shell.Application")
objShell.ShellExecute "VersionCheck.bat", "", , , NORMAL_WINDOW
End Sub
我只是使用了批处理,因为我更了解它,并使它起作用。它确实依赖于 powershell 的第 5 版,因此无法在 windows 7 和第三方 wget 独立 exe 中工作,但它可以工作:)
:main
cls
set version=2.0
set filename=YoutubeDLV3.zip
wget.exe --no-check-certificate https://mysite/YTDL/version.txt >nul
set /p nwstvrsn=<version.txt
set nwstvrsn=%nwstvrsn: =%
if %version% lss %nwstvrsn% goto newupdateavailable
if %version%==%nwstvrsn% goto noupdateavailable
goto main
:newupdateavailable
cls
echo.
echo Downloading Update...
echo.
wget.exe --no-check-certificate https://mysite/YTDL/V2/%filename% -O "%filename%"
ping localhost -n 2 >nul
PowerShell.exe Expand-Archive %filename% -DestinationPath %userprofile%\Downloads\
pause
exit
:noupdateavailable
cls
echo.
echo No Update Available
echo.
pause
exit
并通过
从 hta 告诉它 运行
Sub Window_onload
Const NORMAL_WINDOW = 1
Set objShell = CreateObject("Shell.Application")
objShell.ShellExecute "VersionCheck.bat", "", , , NORMAL_WINDOW
End Sub
这是我正在制作的 MS-HTA 中的 VBscript 代码,它应该每隔 运行 检查一次针对网络服务器的更新。
但它不起作用,如果用户点击确定但没有弹出,它会弹出一次 下载新版本,即使它们保留在旧版本上,也不会再提示。
如果版本仍然过时,我有什么办法让它每隔 运行 提示一次? 需要是可以在 HTMLApplication MS-HTA 中运行的 VBScript。
Dim varHTTP, varBinaryString, varFileName, varLink
set objShell = CreateObject("WScript.Shell")
Set varHTTP = CreateObject("Microsoft.XMLHTTP")
Set varBinaryString = CreateObject("Adodb.Stream")
varFileName = "YoutubeDLV2.zip"
varNewFileName = "YoutubeDLV3.zip"
varLink = "https://MyURL.com/YTDL/V2/" & varFileName
varNewLink = "https://MyURL.com/YTDL/V3/" & varNewFileName
varHTTP.Open "GET", varLink, False
varHTTP.Send
CheckFile()
Sub CheckFile()
Select Case Cint(varHTTP.status)
Case 200, 202, 302
'it exists
Exit Sub
Case Else
'does not exist
msgbox "Update Found! Go to:" & vbNewLine &
"https://MyURL.com/YTDL/" & vbNewLine & "And download latest version." &
vbNewLine & vbNewLine & "Currently Running Version." & vbNewLine + varLink &
vbNewLine & vbNewLine & "Newest Version:" & vbNewLine + varNewLink
End Select
End Sub
似乎是这一行导致了问题
Case 200, 202, 302
案例202 - 每次都自己提示
案例 200、202、302 - 即使被拒绝也只会导致一次
案例 200 - 自己什么都不做
200 – OK (standard successful http request)
202 – Accepted (request accepted for processing, but not completed)
302 – Found (via redirection)
正如我上面所说,这段代码确实有效,但只有一次。我希望它每次都能正常工作,我不知道为什么我不能让它工作,有什么想法吗?
--- 编辑
我只是使用了批处理,因为我更了解它,并使它起作用。它确实依赖于 powershell 的第 5 版,因此无法在 windows 7 和第三方 wget 独立 exe 中工作,但它可以工作:)
:main
cls
set version=2.0
set filename=YoutubeDLV3.zip
wget.exe --no-check-certificate https://mysite/YTDL/version.txt >nul
set /p nwstvrsn=<version.txt
set nwstvrsn=%nwstvrsn: =%
if %version% lss %nwstvrsn% goto newupdateavailable
if %version%==%nwstvrsn% goto noupdateavailable
goto main
:newupdateavailable
cls
echo.
echo Downloading Update...
echo.
wget.exe --no-check-certificate https://mysite/YTDL/V2/%filename% -O "%filename%"
ping localhost -n 2 >nul
PowerShell.exe Expand-Archive %filename% -DestinationPath %userprofile%\Downloads\
pause
exit
:noupdateavailable
cls
echo.
echo No Update Available
echo.
pause
exit
并通过
从 hta 告诉它 运行Sub Window_onload
Const NORMAL_WINDOW = 1
Set objShell = CreateObject("Shell.Application")
objShell.ShellExecute "VersionCheck.bat", "", , , NORMAL_WINDOW
End Sub
我只是使用了批处理,因为我更了解它,并使它起作用。它确实依赖于 powershell 的第 5 版,因此无法在 windows 7 和第三方 wget 独立 exe 中工作,但它可以工作:)
:main
cls
set version=2.0
set filename=YoutubeDLV3.zip
wget.exe --no-check-certificate https://mysite/YTDL/version.txt >nul
set /p nwstvrsn=<version.txt
set nwstvrsn=%nwstvrsn: =%
if %version% lss %nwstvrsn% goto newupdateavailable
if %version%==%nwstvrsn% goto noupdateavailable
goto main
:newupdateavailable
cls
echo.
echo Downloading Update...
echo.
wget.exe --no-check-certificate https://mysite/YTDL/V2/%filename% -O "%filename%"
ping localhost -n 2 >nul
PowerShell.exe Expand-Archive %filename% -DestinationPath %userprofile%\Downloads\
pause
exit
:noupdateavailable
cls
echo.
echo No Update Available
echo.
pause
exit
并通过
从 hta 告诉它 运行Sub Window_onload
Const NORMAL_WINDOW = 1
Set objShell = CreateObject("Shell.Application")
objShell.ShellExecute "VersionCheck.bat", "", , , NORMAL_WINDOW
End Sub