msi をダウンロードしてインストールしたいと思います。すべてスクリプト内でサイレント モードで行います。start iexplore.exe http://domain.com/file.msi /qn
残念ながら、MSIをダウンロードするだけで、インストールは開始されません。これを修正する方法を知っている人はいますか?
質問する
94 次
2 に答える
0
また、ダウンロードしたファイルを「開始」する必要があります。デフォルトのダウンロード場所 (変更されていない限り、Windows 7 では C:\Users[ユーザー名]\Downloads) にダウンロードされます。ただし、ダウンロードが完了するまでファイルを待機させる必要があります。そうしないと、msi を実行できなくなります。私の知る限り、チェックする方法が組み込まれていないため、予想される最長のダウンロード時間を秒単位で考慮する必要があります。待機は、使用している OS に応じて、いくつかの異なる方法で行うことができます。一例は
timeout /t [seconds] /nobreak > NUL
これは秒単位の待機時間を受け入れ、/nobreak はキー押下を無視することを意味します (これは通常、タイマーが終了する前に続行することを示します)。もう 1 つの方法は、バッチ ファイルが無効な IP アドレス (1.1.1.1) に対して特定のミリ秒で ping を実行するようにすることです。例えば
PING 1.1.1.1 -n 1 -w [milliseconds] >NUL
お役に立てれば。
于 2013-04-03T17:59:12.143 に答える
0
どうぞ。私はそれをテストしていませんが、少なくとも別のプロジェクトから作成された JScript 関数を持っていました。.bat
これを拡張子を付けて保存し、set url=
必要に応じて行を変更して実行します。
@if (@a==@b) @end /*
:: batch portion
@echo off
setlocal
set url=http://domain.com/file.msi
set saveloc=%temp%\file.msi
cscript /nologo /e:jscript "%~f0" "%url%" "%saveloc%"
msiexec /i "%saveloc%" /qn /norestart
:installwait
ping -n 2 0.0.0.0 >NUL
wmic process where name="msiexec.exe" get name 2>NUL | find /i "msiexec" >NUL && goto installwait
del "%saveloc%"
goto :EOF
:: JScript portion */
function fetch(url) {
var xObj = new ActiveXObject("Microsoft.XMLHTTP");
xObj.open("GET",url,true);
xObj.setRequestHeader('User-Agent','XMLHTTP/1.0');
xObj.send('');
while (xObj.readyState != 4) WSH.Sleep(50);
return(xObj);
}
function save(xObj, file) {
var stream = new ActiveXObject("ADODB.Stream");
with (stream) {
type = 1;
open();
write(xObj.responseBody);
saveToFile(file, 2);
close();
}
}
save(fetch(WSH.Arguments(0)), WSH.Arguments(1));
于 2013-04-03T17:51:03.880 に答える