IEXPRESS_IE6SP1.EXE 作成プログラム

Last-modified: 2007-05-12 (土) 22:06:26
 

まだ試作段階ですので、利用に当たっては十分注意してください。

 

以下にソースを記述します。

修正が必要な場合は上記の「Readme」・「ソース」からお願いします。
 
@ECHO OFF
SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: IEXPRESS_IE6SP1.EXE 作成プログラム
::         Copyright 2007  A.K Office Supporters
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
SET APP_TITLE=IEXPRESS_IE6SP1.EXE 作成プログラム
SET APP_VER=1.0
SET APP_TITLE=%APP_TITLE%  (ver%APP_VER%)
TITLE %APP_TITLE%
set PREP=%~dp0
if /i "%PREP:~-1%"=="\" set PREP=%PREP:~0,-1%
cd /d %PREP%
CLS
ECHO ========================================================
ECHO     %APP_TITLE%
ECHO ========================================================
echo.
echo ※注意!!
echo 本プログラムが終了するまで、このウィンドウを閉じないでください。
echo 思わぬ不具合の原因となる場合があります。
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: パラメータの設定(いずれもON/OFFでセット)                         (ここから)
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: 詳細表示モード
SET SHOW_DETAILS_MODE=OFF
:: IEXPRESS_IE6SP1.EXEのソース保存
SET SAVE_IE6SP1_SOURCE_MODE=OFF
:: ステップバイステップモード
SET STEP_BY_STEP_MODE=OFF
:: デバッグモード
SET DEBUG_MODE=OFF
:: デバッグモード時は全てをONに
if /i "%DEBUG_MODE%"=="ON" SET SHOW_DETAILS_MODE=ON&SET STEP_BY_STEP_MODE=ON&SET SAVE_IE6SP1_SOURCE_MODE=ON&echo PREP=%PREP%\
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: パラメータの設定                                                 (ここまで)
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: 作業開始確認
IF EXIST TEMP.VBS DEL TEMP.VBS /Q
echo>TEMP.VBS Dim TmpStr
echo>>TEMP.VBS TmpStr=MsgBox("本プログラムは、動作条件として SP+ メーカー ver.0.72.2 以降が必要です。" ^&_
echo>>TEMP.VBS Chr(13^) ^& Chr(10^) ^&_
echo>>TEMP.VBS "上記 ver の SP+ メーカー が動作している環境を利用し、本プログラムは単独で動作します。" ^&_
echo>>TEMP.VBS Chr(13^) ^& Chr(10^) ^& Chr(13^) ^& Chr(10^) ^&_
echo>>TEMP.VBS "本プログラムは、インターネットへの接続環境が必須です。" ^&_
echo>>TEMP.VBS Chr(13^) ^& Chr(10^) ^&_
echo>>TEMP.VBS "また、事前に SP+ メーカー で Windows 2000 統合化環境を作成しておく必要があります。" ^&_
echo>>TEMP.VBS Chr(13^) ^& Chr(10^) ^&_
echo>>TEMP.VBS "(作業フォルダとアップデートフォルダは必ず設定しておいてください。)" ^&_
echo>>TEMP.VBS Chr(13^) ^& Chr(10^) ^& Chr(13^) ^& Chr(10^) ^&_
echo>>TEMP.VBS "※注意!!" ^&_
echo>>TEMP.VBS Chr(13^) ^& Chr(10^) ^&_
echo>>TEMP.VBS "本プログラムが終了するまで、コマンドプロンプトウィンドウは閉じないでください。" ^&_
echo>>TEMP.VBS Chr(13^) ^& Chr(10^) ^&_
echo>>TEMP.VBS "思わぬ不具合の原因となる場合があります。" ^&_
echo>>TEMP.VBS Chr(13^) ^& Chr(10^) ^& Chr(13^) ^& Chr(10^) ^&_
echo>>TEMP.VBS "なお、既存の IEXPRESS_IE6SP1.EXE は上書きされます。" ^&_
echo>>TEMP.VBS Chr(13^) ^& Chr(10^) ^& Chr(13^) ^& Chr(10^) ^&_
echo>>TEMP.VBS "「OK」ボタンをクリックすると、IEXPRESS_IE6SP1.EXE の作成を開始します。",33,"%APP_TITLE%"^)
echo>>TEMP.VBS Wscript.Echo TmpStr
echo>>TEMP.VBS Set TmpStr = Nothing
FOR /F %%A IN ('CSCRIPT //NOLOGO TEMP.VBS') DO if /i "%%A"=="2" goto :END
DEL TEMP.VBS /Q
:: download.exeの存在を確認
if not exist download.exe call :ERROR MSG_00&goto :END
:: winsppm.iniから環境変数をセット
if exist winsppm.ini (
  echo %PREP%\winsppm.ini をロードします。
  for /f "tokens=1* delims==" %%A in (winsppm.ini) do (
    set TEMPSTR=%%A
    set TEMPSTR=!TEMPSTR:~0,1!
    if /i "!TEMPSTR!"=="[" (
      IF /I "%%A"=="[Windows 2000]" (SET CHECK=OK) ELSE (SET CHECK=)
    ) else if /i "!CHECK!"=="OK" (
      if /i "%%A"=="UpdateFolder" set UPDATE_FOLDER=%%B
      if /i "%%A"=="WorkFolder" set WORK_FOLDER=%%B
      if /i "%%A"=="ListFilePath" set LIST_FILE_PATH=%%B
      if /i "%%A"=="ListFileUse" set LIST_FILE_USE=%%B
    )
  )
) else call :ERROR MSG_01&goto :END
if "%LIST_FILE_USE%"=="1" if not "%LIST_FILE_PATH%"=="" set UPDATE_LIST=%LIST_FILE_PATH%
if "%UPDATE_LIST%"=="" for /f "delims=" %%A in ('dir/b/s "%PREP%\list\default_w2k.lst"') do set UPDATE_LIST=%%A
if "%UPDATE_FOLDER:~-1%"=="\" set UPDATE_FOLDER=%UPDATE_FOLDER:~0,-1%
if "%WORK_FOLDER:~-1%"=="\" set WORK_FOLDER=%WORK_FOLDER:~0,-1%
set DL_FOLDER=%WORK_FOLDER%\IE6SP1
if /i "%SHOW_DETAILS_MODE%"=="ON" (
  echo アップデートフォルダ
  echo   %UPDATE_FOLDER%
  echo アップデートリストファイル
  echo   %UPDATE_LIST%
  echo 作業フォルダ
  echo   %WORK_FOLDER%
  echo IE6SP1 ダウンロードフォルダ
  echo   %DL_FOLDER%
)
:: 環境変数の取得状態診断
if not exist "%UPDATE_LIST%" call :ERROR MSG_02&goto :END
if /i "%UPDATE_FOLDER%"=="" call :ERROR MSG_03&goto :END
if /i "%WORK_FOLDER%"=="" call :ERROR MSG_03&goto :END
if /i "%STEP_BY_STEP_MODE%"=="ON" (
  IF EXIST TEMP.VBS DEL TEMP.VBS /Q
  echo>TEMP.VBS Dim TmpStr
  echo>>TEMP.VBS TmpStr=MsgBox("パラメータの設定が終了しました。続行しますか?",36,"%APP_TITLE%"^)
  echo>>TEMP.VBS Wscript.Echo TmpStr
  echo>>TEMP.VBS Set TmpStr = Nothing
  FOR /F %%A IN ('CSCRIPT //NOLOGO TEMP.VBS') DO if /i "%%A"=="7" goto :END
  DEL TEMP.VBS /Q
)
:: アップデートリストファイルの情報から対象言語を取得
echo %UPDATE_LIST% をロードします。
set CHECK=
for /f "tokens=1* delims==" %%A in ('type "%UPDATE_LIST%"') do (
  set TEMPSTR=%%A
  set TEMPSTR=!TEMPSTR:~0,1!
  if /i "!TEMPSTR!"=="[" IF /I "%%A"=="[INFO]" (SET CHECK=OK) ELSE (SET CHECK=)
  if /i "!CHECK!"=="OK" if /i "%%A"=="LANGUAGE" set LANGUAGE=%%B
)
echo   言語:%LANGUAGE%
if /i "%LANGUAGE%"=="Arabic" set LANG=AR& set SCRIPT_FILE=SCRIPTAR.CAB
if /i "%LANGUAGE%"=="Chinese (Simplified)" set LANG=CN& set SCRIPT_FILE=SCRIPCHS.CAB
if /i "%LANGUAGE%"=="Chinese (Traditional)" set LANG=TW& set SCRIPT_FILE=SCRIPCHT.CAB
if /i "%LANGUAGE%"=="Czech" set LANG=CS& set SCRIPT_FILE=SCRIPTCS.CAB
if /i "%LANGUAGE%"=="Danish" set LANG=DA& set SCRIPT_FILE=SCRIPTDA.CAB
if /i "%LANGUAGE%"=="Dutch" set LANG=NL& set SCRIPT_FILE=SCRIPTNL.CAB
if /i "%LANGUAGE%"=="English" set LANG=EN-US&set SCRIPT_FILE=SCRIPTEN.CAB
if /i "%LANGUAGE%"=="Finnish" set LANG=FI& set SCRIPT_FILE=SCRIPTFI.CAB
if /i "%LANGUAGE%"=="French" set LANG=FR& set SCRIPT_FILE=SCRIPTFR.CAB
if /i "%LANGUAGE%"=="German" set LANG=DE& set SCRIPT_FILE=SCRIPTDE.CAB
if /i "%LANGUAGE%"=="Greek" set LANG=EL& set SCRIPT_FILE=SCRIPTEL.CAB
if /i "%LANGUAGE%"=="Hebrew" set LANG=HE& set SCRIPT_FILE=SCRIPTHE.CAB
if /i "%LANGUAGE%"=="Hungarian" set LANG=HU& set SCRIPT_FILE=SCRIPTHU.CAB
if /i "%LANGUAGE%"=="Italian" set LANG=IT& set SCRIPT_FILE=SCRIPTIT.CAB
if /i "%LANGUAGE%"=="Japanese" set LANG=JA& set SCRIPT_FILE=SCRIPTJP.CAB
if /i "%LANGUAGE%"=="Japanese (NEC)" set LANG=JA& set SCRIPT_FILE=SCRIPTJP.CAB
if /i "%LANGUAGE%"=="Korean" set LANG=KO& set SCRIPT_FILE=SCRIPTKO.CAB
if /i "%LANGUAGE%"=="Norwegian (Bokmal)" set LANG=NO& set SCRIPT_FILE=SCRIPTNO.CAB
if /i "%LANGUAGE%"=="Polish" set LANG=PL& set SCRIPT_FILE=SCRIPTPL.CAB
if /i "%LANGUAGE%"=="Portuguese (Brazil)" set LANG=PT-BR&set SCRIPT_FILE=SCRIPPTB.CAB
if /i "%LANGUAGE%"=="Portuguese (Portugal)" set LANG=PT& set SCRIPT_FILE=SCRIPPTG.CAB
if /i "%LANGUAGE%"=="Russian" set LANG=RU& set SCRIPT_FILE=SCRIPTRU.CAB
if /i "%LANGUAGE%"=="Spanish" set LANG=ES& set SCRIPT_FILE=SCRIPTES.CAB
if /i "%LANGUAGE%"=="Swedish" set LANG=SV& set SCRIPT_FILE=SCRIPTSV.CAB
if /i "%LANGUAGE%"=="Tukish" set LANG=TR& set SCRIPT_FILE=SCRIPTTR.CAB
if /i "%STEP_BY_STEP_MODE%"=="ON" (
  IF EXIST TEMP.VBS DEL TEMP.VBS /Q
  echo>TEMP.VBS Dim TmpStr
  echo>>TEMP.VBS TmpStr=MsgBox("%UPDATE_LIST% から対象言語 %LANGUAGE% を取得しました。続行しますか?",36,"%APP_TITLE%"^)
  echo>>TEMP.VBS Wscript.Echo TmpStr
  echo>>TEMP.VBS Set TmpStr = Nothing
  FOR /F %%A IN ('CSCRIPT //NOLOGO TEMP.VBS') DO if /i "%%A"=="7" goto :END
  DEL TEMP.VBS /Q
)
:: IE6SP1用ファイル取得の準備
:: download.exe コマンドoption
set DLOPTION=/retry=2 /timeout=30
:: URLのベースを指定
set URL_BASE=http://download.microsoft.com/download/ie6sp1/finrel/6_sp1/W98NT42KMeXP
:: [download.ini編集]
if exist Download.ini del Download.ini
echo>Download.ini %URL_BASE%/%LANG%/BRANDING.CAB
echo>>Download.ini %URL_BASE%/%LANG%/CRLUPD.CAB
echo>>Download.ini %URL_BASE%/%LANG%/ie6setup.exe
echo>>Download.ini %URL_BASE%/%LANG%/IEEXINST.CAB
echo>>Download.ini %URL_BASE%/%LANG%/IEW2K_1.CAB
echo>>Download.ini %URL_BASE%/%LANG%/IEW2K_2.CAB
echo>>Download.ini %URL_BASE%/%LANG%/IEW2K_3.CAB
echo>>Download.ini %URL_BASE%/%LANG%/IEW2K_4.CAB
echo>>Download.ini %URL_BASE%/%LANG%/MAILNEWS.CAB
echo>>Download.ini %URL_BASE%/%LANG%/MPLAY2U.CAB
echo>>Download.ini %URL_BASE%/%LANG%/OEEXCEP.CAB
echo>>Download.ini %URL_BASE%/%LANG%/README.CAB
echo>>Download.ini %URL_BASE%/%LANG%/%SCRIPT_FILE%
echo>>Download.ini %URL_BASE%/%LANG%/WAB.CAB
:: 作業フォルダの準備
if not exist "%WORK_FOLDER%\IE6SP1" (
  echo 作業フォルダ %WORK_FOLDER%\IE6SP1 を作成します。
  md "%WORK_FOLDER%\IE6SP1"
)
if exist "%UPDATE_FOLDER%\ie6setup.exe" if not exist "%WORK_FOLDER%\IE6SP1\ie6setup.exe" copy "%UPDATE_FOLDER%\ie6setup.exe" "%WORK_FOLDER%\IE6SP1\ie6setup.exe">NUL
:: [download.lst編集]
if exist Download.tmp DEL Download.tmp /Q
set HOTFIXNO=0
for /f "delims=" %%P in (Download.ini) DO (
  if not exist "%DL_FOLDER%\%%~nxP" (
    echo>>Download.tmp TITLE!HOTFIXNO!=%%~nxP
    echo>>Download.tmp URL!HOTFIXNO!=%%P
    echo>>Download.tmp File!HOTFIXNO!=%DL_FOLDER%\%%~nxP
    set /a HOTFIXNO=HOTFIXNO+1
  )
)
if exist Download.tmp (
  echo>download.lst [Download]
  echo>>download.lst ListCount=!HOTFIXNO!
  type Download.tmp >>download.lst
  echo>>download.lst [Result]
  echo>>download.lst ExitCode=1
:: ダウンロード実行
  ECHO ファイルのダウンロードを開始します。
  if /i "%STEP_BY_STEP_MODE%"=="ON" (
    IF EXIST TEMP.VBS DEL TEMP.VBS /Q
    echo>TEMP.VBS Dim TmpStr
    echo>>TEMP.VBS TmpStr=MsgBox("ファイルのダウンロードを開始しますか?",36,"%APP_TITLE%"^)
    echo>>TEMP.VBS Wscript.Echo TmpStr
    echo>>TEMP.VBS Set TmpStr = Nothing
    FOR /F %%A IN ('CSCRIPT //NOLOGO TEMP.VBS') DO if /i "%%A"=="7" goto :END
    DEL TEMP.VBS /Q
  )
  download.exe %DLOPTION%
  set DLERR=!ERRORLEVEL!
  if !DLERR! geq 2 set IE6SP1SRCERR=1&call :ERROR MSG_05&GOTO :END
)
:: [iesetup.ini編集]
echo>"%WORK_FOLDER%\IE6SP1\iesetup.ini" [Version]
echo>>"%WORK_FOLDER%\IE6SP1\iesetup.ini" Signature="Active setup"
echo>>"%WORK_FOLDER%\IE6SP1\iesetup.ini" [Options]
echo>>"%WORK_FOLDER%\IE6SP1\iesetup.ini" IELiteMode=0
echo>>"%WORK_FOLDER%\IE6SP1\iesetup.ini" ConfirmFileList=0
echo>>"%WORK_FOLDER%\IE6SP1\iesetup.ini" LocalInstall=1
:: ダウンロード診断
for /f "delims=" %%P in (Download.ini) DO (
  set DLFILE=%%~nxP
  if /i "%SHOW_DETAILS_MODE%"=="ON" (
    echo URL :%URL_BASE%/%LANG%/!DLFILE!
    echo 保存先:%DL_FOLDER%\!DLFILE!
  )
  if not exist "%DL_FOLDER%\!DLFILE!" (
    call :ERROR MSG_06&GOTO :END
  ) else (
    ECHO !DLFILE! のダウンロードに成功しました。
  )
)
:: IEXPRESS実行
ECHO %PREP%\IEXPRESS_IE6SP1.SED を編集します。
echo>IEXPRESS_IE6SP1.SED [Version]
echo>>IEXPRESS_IE6SP1.SED Class=IEXPRESS
echo>>IEXPRESS_IE6SP1.SED SEDVersion=3
echo>>IEXPRESS_IE6SP1.SED [Options]
echo>>IEXPRESS_IE6SP1.SED PackagePurpose=InstallApp
echo>>IEXPRESS_IE6SP1.SED ShowInstallProgramWindow=0
echo>>IEXPRESS_IE6SP1.SED HideExtractAnimation=1
echo>>IEXPRESS_IE6SP1.SED UseLongFileName=1
echo>>IEXPRESS_IE6SP1.SED InsideCompressed=0
echo>>IEXPRESS_IE6SP1.SED CAB_FixedSize=0
echo>>IEXPRESS_IE6SP1.SED CAB_ResvCodeSigning=0
echo>>IEXPRESS_IE6SP1.SED RebootMode=N
echo>>IEXPRESS_IE6SP1.SED InstallPrompt=%%InstallPrompt%%
echo>>IEXPRESS_IE6SP1.SED DisplayLicense=%%DisplayLicense%%
echo>>IEXPRESS_IE6SP1.SED FinishMessage=%%FinishMessage%%
echo>>IEXPRESS_IE6SP1.SED TargetName=%%TargetName%%
echo>>IEXPRESS_IE6SP1.SED FriendlyName=%%FriendlyName%%
echo>>IEXPRESS_IE6SP1.SED AppLaunched=%%AppLaunched%%
echo>>IEXPRESS_IE6SP1.SED PostInstallCmd=%%PostInstallCmd%%
echo>>IEXPRESS_IE6SP1.SED AdminQuietInstCmd=%%AdminQuietInstCmd%%
echo>>IEXPRESS_IE6SP1.SED UserQuietInstCmd=%%UserQuietInstCmd%%
echo>>IEXPRESS_IE6SP1.SED SourceFiles=SourceFiles
echo>>IEXPRESS_IE6SP1.SED [Strings]
echo>>IEXPRESS_IE6SP1.SED InstallPrompt=
echo>>IEXPRESS_IE6SP1.SED DisplayLicense=
echo>>IEXPRESS_IE6SP1.SED FinishMessage=
echo>>IEXPRESS_IE6SP1.SED TargetName="%UPDATE_FOLDER%\IEXPRESS_IE6SP1.EXE"
echo>>IEXPRESS_IE6SP1.SED FriendlyName=Internet Explorer 6 Service Pack 1
echo>>IEXPRESS_IE6SP1.SED AppLaunched=ie6setup.exe /q:a /r:n
echo>>IEXPRESS_IE6SP1.SED PostInstallCmd=^<None^>
echo>>IEXPRESS_IE6SP1.SED AdminQuietInstCmd=
echo>>IEXPRESS_IE6SP1.SED UserQuietInstCmd=
echo>>IEXPRESS_IE6SP1.SED FILE0="BRANDING.CAB"
echo>>IEXPRESS_IE6SP1.SED FILE1="CRLUPD.CAB"
echo>>IEXPRESS_IE6SP1.SED FILE2="ie6setup.exe"
echo>>IEXPRESS_IE6SP1.SED FILE3="iesetup.ini"
echo>>IEXPRESS_IE6SP1.SED FILE4="IEEXINST.CAB"
echo>>IEXPRESS_IE6SP1.SED FILE5="IEW2K_1.CAB"
echo>>IEXPRESS_IE6SP1.SED FILE6="IEW2K_2.CAB"
echo>>IEXPRESS_IE6SP1.SED FILE7="IEW2K_3.CAB"
echo>>IEXPRESS_IE6SP1.SED FILE8="IEW2K_4.CAB"
echo>>IEXPRESS_IE6SP1.SED FILE9="MAILNEWS.CAB"
echo>>IEXPRESS_IE6SP1.SED FILE10="MPLAY2U.CAB"
echo>>IEXPRESS_IE6SP1.SED FILE11="OEEXCEP.CAB"
echo>>IEXPRESS_IE6SP1.SED FILE12="README.CAB"
echo>>IEXPRESS_IE6SP1.SED FILE13="%SCRIPT_FILE%"
echo>>IEXPRESS_IE6SP1.SED FILE14="WAB.CAB"
echo>>IEXPRESS_IE6SP1.SED [SourceFiles]
echo>>IEXPRESS_IE6SP1.SED SourceFiles0="%WORK_FOLDER%\IE6SP1\"
echo>>IEXPRESS_IE6SP1.SED [SourceFiles0]
echo>>IEXPRESS_IE6SP1.SED %%FILE0%%=
echo>>IEXPRESS_IE6SP1.SED %%FILE1%%=
echo>>IEXPRESS_IE6SP1.SED %%FILE2%%=
echo>>IEXPRESS_IE6SP1.SED %%FILE3%%=
echo>>IEXPRESS_IE6SP1.SED %%FILE4%%=
echo>>IEXPRESS_IE6SP1.SED %%FILE5%%=
echo>>IEXPRESS_IE6SP1.SED %%FILE6%%=
echo>>IEXPRESS_IE6SP1.SED %%FILE7%%=
echo>>IEXPRESS_IE6SP1.SED %%FILE8%%=
echo>>IEXPRESS_IE6SP1.SED %%FILE9%%=
echo>>IEXPRESS_IE6SP1.SED %%FILE10%%=
echo>>IEXPRESS_IE6SP1.SED %%FILE11%%=
echo>>IEXPRESS_IE6SP1.SED %%FILE12%%=
echo>>IEXPRESS_IE6SP1.SED %%FILE13%%=
echo>>IEXPRESS_IE6SP1.SED %%FILE14%%=
if /i "%DEBUG_MODE%"=="ON" (
  IF EXIST TEMP.VBS DEL TEMP.VBS /Q
  echo>TEMP.VBS Dim TmpStr
  echo>>TEMP.VBS TmpStr=MsgBox("IEXPRESS_IE6SP1.SEDをメモ帳で開きますか?([キャンセル]で中断します。)",35,"%APP_TITLE%"^)
  echo>>TEMP.VBS If TmpStr=6 Then MsgBox "メモ帳を閉じた後、続行します。",64,"%APP_TITLE%"
  echo>>TEMP.VBS Wscript.Echo TmpStr
  echo>>TEMP.VBS Set TmpStr = Nothing
  FOR /F %%A IN ('CSCRIPT //NOLOGO TEMP.VBS') DO (
    if /i "%%A"=="6" start/wait notepad IEXPRESS_IE6SP1.SED
    if /i "%%A"=="2" set IEXPRESS_ERROR=1&goto :END
  )
  DEL TEMP.VBS /Q
)
:: IEXPRESS_IE6SP1.EXE作成
ECHO %UPDATE_FOLDER%\IEXPRESS_IE6SP1.EXE を作成します。
if /i "%STEP_BY_STEP_MODE%"=="ON" (
  IF EXIST TEMP.VBS DEL TEMP.VBS /Q
  echo>TEMP.VBS Dim TmpStr
  echo>>TEMP.VBS TmpStr=MsgBox("IEXPRESS_IE6SP1.EXE を作成しますか?",36,"%APP_TITLE%"^)
  echo>>TEMP.VBS Wscript.Echo TmpStr
  echo>>TEMP.VBS Set TmpStr = Nothing
  FOR /F %%A IN ('CSCRIPT //NOLOGO TEMP.VBS') DO if /i "%%A"=="7" set IEXPRESS_ERROR=1&goto :END
  DEL TEMP.VBS /Q
)
:: 既存のIEXPRESS_IE6SP1.EXEがあれば削除して新たに作る
if exist "%UPDATE_FOLDER%\IEXPRESS_IE6SP1.EXE" del "%UPDATE_FOLDER%\IEXPRESS_IE6SP1.EXE" /q
IEXPRESS /N IEXPRESS_IE6SP1.SED
if exist "%UPDATE_FOLDER%\IEXPRESS_IE6SP1.EXE" (
  ECHO %UPDATE_FOLDER%\IEXPRESS_IE6SP1.EXE を作成しました。
  if /i "%STEP_BY_STEP_MODE%"=="ON" (
    IF EXIST TEMP.VBS DEL TEMP.VBS /Q
    ECHO>TEMP.VBS MsgBox "%UPDATE_FOLDER%\IEXPRESS_IE6SP1.EXE を作成しました。",0,"%APP_TITLE%"
    cscript //NOLOGO TEMP.VBS
    del TEMP.VBS /q
  )
) else set IEXPRESS_ERROR=1&call :ERROR MSG_07
:END
:: クリーンアップ
if not defined IE6SP1SRCERR if not defined IEXPRESS_ERROR if /i not "%SAVE_IE6SP1_SOURCE_MODE%"=="ON" if exist "%WORK_FOLDER%\IE6SP1" rd/s/q "%WORK_FOLDER%\IE6SP1"
if exist Download.tmp del Download.tmp /Q
if not defined IE6SP1SRCERR if /i not "%DEBUG_MODE%"=="ON" if exist Download.ini del Download.ini /Q
if /i not "%DEBUG_MODE%"=="ON" if exist IEXPRESS_IE6SP1.SED del IEXPRESS_IE6SP1.SED /Q
if exist "%UPDATE_FOLDER%\~IEXPRESS_IE6SP1.DDF" del "%UPDATE_FOLDER%\~IEXPRESS_IE6SP1.DDF" /Q
if exist "%UPDATE_FOLDER%\~IEXPRESS_IE6SP1.CAB" del "%UPDATE_FOLDER%\~IEXPRESS_IE6SP1.CAB" /Q
if not defined IE6SP1SRCERR if /i not "%SAVE_IE6SP1_SOURCE_MODE%"=="ON" if exist "%WORK_FOLDER%\IE6SP1" echo %WORK_FOLDER%\IE6SP1 を削除できませんでした。&set ERR=F
if exist Download.tmp echo Download.tmp を削除できませんでした。&set ERR=F
if not defined IE6SP1SRCERR if /i not "%DEBUG_MODE%"=="ON" if exist Download.ini echo Download.ini を削除できませんでした。&set ERR=F
if /i not "%DEBUG_MODE%"=="ON" if exist IEXPRESS_IE6SP1.SED echo IEXPRESS_IE6SP1.SED を削除できませんでした。&set ERR=F
if exist "%UPDATE_FOLDER%\~IEXPRESS_IE6SP1.DDF" echo %UPDATE_FOLDER%\~IEXPRESS_IE6SP1.DDF を削除できませんでした。&set ERR=F
if exist "%UPDATE_FOLDER%\~IEXPRESS_IE6SP1.CAB" echo %UPDATE_FOLDER%\~IEXPRESS_IE6SP1.CAB を削除できませんでした。&set ERR=F
ECHO>TEMP.VBS MsgBox "処理を終了します。",0,"%APP_TITLE%"
ECHO 処理を終了します。
cscript //nologo temp.vbs
DEL TEMP.VBS /Q
IF EXIST TEMP.VBS echo TEMP.VBS を削除できませんでした。&set ERR=F
if "%ERR%"=="F" echo 削除できなかったフォルダ・ファイルがあります。手動で削除願います。&pause
goto :EOF
:ERROR
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: エラーMSGの表示                                                         [C1]
::  (引数) %1:MSG-No
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
IF EXIST TEMP.VBS DEL TEMP.VBS /Q
IF /I "%1"=="MSG_00" (
  echo>TEMP.VBS MsgBox "download.exeが見つかりません。" ^&_
  echo>>TEMP.VBS Chr(13^) ^& Chr(10^) ^& "SP+メーカーのインストール先フォルダから実行してください。" ^&_
  echo download.exeが見つかりません。
  echo SP+メーカーのインストール先フォルダから実行してください。
)
IF /I "%1"=="MSG_01" (
  echo>TEMP.VBS MsgBox "SP+メーカーの実行環境に、winsppm.iniを検出できませんでした。" ^&_
  echo SP+メーカーの実行環境に、winsppm.iniを検出できませんでした。
)
IF /I "%1"=="MSG_02" (
  echo>TEMP.VBS MsgBox "アップデートリストファイルが見つかりません。" ^&_
  echo アップデートリストファイルが見つかりません。
  if /i "%SHOW_DETAILS_MODE%"=="ON" (
    echo>>TEMP.VBS Chr(13^) ^& Chr(10^) ^& "  UPDATE_LIST=%UPDATE_LIST%" ^&_
    echo   UPDATE_LIST=%UPDATE_LIST%
  )
)
IF /I "%1"=="MSG_03" (
  echo>TEMP.VBS MsgBox "SP+メーカー実行環境が整っていません。" ^& Chr(13^) ^& Chr(10^) ^&_
  echo SP+メーカー実行環境が整っていません。
  echo>>TEMP.VBS "一度、SP+メーカーを起動し各種設定をして終了させ、再度実行してください。" ^&_
  echo 一度、SP+メーカーを起動し各種設定をして終了させ、再度実行してください。
  if /i "%SHOW_DETAILS_MODE%"=="ON" (
    echo>>TEMP.VBS Chr(13^) ^& Chr(10^) ^& "  UPDATE_FOLDER=%UPDATE_FOLDER%" ^&_
    echo   UPDATE_FOLDER=%UPDATE_FOLDER%
  )
)
IF /I "%1"=="MSG_04" (
  echo>TEMP.VBS MsgBox "作業フォルダ %WORK_FOLDER%\IE6SP1 を削除できませんでした。" ^&_
  echo 作業フォルダ %WORK_FOLDER%\IE6SP1 を削除できませんでした。
)
IF /I "%1"=="MSG_05" (
  echo>TEMP.VBS MsgBox "ダウンロードに失敗しました。" ^&_
  echo ダウンロードに失敗しました。
  if /i "%SHOW_DETAILS_MODE%"=="ON" (
    echo>>TEMP.VBS Chr(13^) ^& Chr(10^) ^& "  ERRORLEVEL=%DLERR%" ^&_
    echo   ERRORLEVEL=%DLERR%
  )
)
IF /I "%1"=="MSG_06" (
  echo>TEMP.VBS MsgBox "!DLFILE! のダウンロードに失敗しました。" ^&_
  echo !DLFILE! のダウンロードに失敗しました。
)
IF /I "%1"=="MSG_07" (
  echo>TEMP.VBS MsgBox "%UPDATE_FOLDER%\IEXPRESS_IE6SP1.EXE を作成できませんでした。" ^&_
  echo %UPDATE_FOLDER%\IEXPRESS_IE6SP1.EXE を作成できませんでした。
)
echo>>TEMP.VBS 	Chr(13^) ^& Chr(10^) ^& Chr(13^) ^& Chr(10^) ^&_
echo.
echo>>TEMP.VBS 	"IEXPRESS_IE6SP1.EXE 作成プログラムは、正常に処理を行えませんでした。",16,"エラーが発生しました! - %APP_TITLE%"
echo IEXPRESS_IE6SP1.EXE 作成プログラムは、正常に処理を行えませんでした。
CSCRIPT //NOLOGO TEMP.VBS
DEL TEMP.VBS /Q
goto :EOF
:EOF
 

簡易掲示板を設置しました。


ダウンロード中断時はIE6SP1フォルダを残すようにしました

銀松? (2007-05-08 (火) 22:25:20)

Download.iniの書式をURLに変更し、ダウンロード中断時は残すようにしました。
その他、パラメータの変更などしています。


  • あ、IEXPRESS化できなかった場合も残すようにしなきゃ(汗) -- 銀松? 2007-05-08 (火) 22:29:30
  • 色々やってみた結果、こうなりました。たぶんこれで問題ないと思いますが、念のため確認していただけますか? -- 銀松? 2007-05-10 (木) 19:09:23
  • ちょっと問題があったので更新しました。あと既存のIEXPRESS_IE6SP1.EXEを削除するタイミングを変更しました。 -- 銀松? 2007-05-10 (木) 22:25:10

ステップバイステップモードを追加してみました

銀松? (2007-05-07 (月) 22:15:17)

なんとなく、デバッグモードがステップバイステップに似てると思い、思いつきでいじってみました。
いかがなもんでしょう?

@ECHO OFF
SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: IEXPRESS_IE6SP1.EXE 作成プログラム
::         Copyright 2007  A.K Office Supporters
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
SET APP_TITLE=IEXPRESS_IE6SP1.EXE 作成プログラム
SET APP_VER=1.0
SET APP_TITLE=%APP_TITLE%  (ver%APP_VER%)
TITLE %APP_TITLE%
cd /d %~dp0
CLS
ECHO ========================================================
ECHO     %APP_TITLE%
ECHO ========================================================
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: パラメータの設定(いずれもON/OFFでセット)                         (ここから)
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: 詳細表示モード
SET SHOW_DETAILS_MODE=OFF
:: IEXPRESS_IE6SP1.EXEのソース保存
SET SAVE_IE6SP1_SOURCE=OFF
:: ステップバイステップモード
SET STEP_BY_STEP_MODE=ON
:: デバッグモード
SET DEBUG_MODE=OFF
:: デバッグモード時は詳細表示&ステップバイステップモードに
if /i "%DEBUG_MODE%"=="ON" SET SHOW_DETAILS_MODE=ON&SET STEP_BY_STEP_MODE=ON
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: パラメータの設定                                                 (ここまで)
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: 作業開始確認
IF EXIST TEMP.VBS DEL TEMP.VBS /Q
echo>TEMP.VBS Dim TmpStr
echo>>TEMP.VBS TmpStr=MsgBox("IEXPRESS_IE6SP1.EXEの作成を開始します。" ^&_
echo>>TEMP.VBS Chr(13^) ^& Chr(10^) ^& Chr(13^) ^& Chr(10^) ^&_
echo>>TEMP.VBS "なお、既存のIEXPRESS_IE6SP1.EXEは上書きされます。",33,"%APP_TITLE%"^)
echo>>TEMP.VBS Wscript.Echo TmpStr
echo>>TEMP.VBS Set TmpStr = Nothing
FOR /F %%A IN ('CSCRIPT //NOLOGO TEMP.VBS') DO if /i "%%A"=="2" goto :END
DEL TEMP.VBS /Q
:: download.exeの存在を確認
if not exist download.exe call :ERROR MSG_00&goto :END
:: winsppm.iniから環境変数をセット
if exist winsppm.ini (
  echo %~dp0winsppm.ini をロードします。
  for /f "tokens=1* delims==" %%A in (winsppm.ini) do (
    set TEMPSTR=%%A
    set TEMPSTR=!TEMPSTR:~0,1!
    if /i "!TEMPSTR!"=="[" (
      IF /I "%%A"=="[Windows 2000]" (SET CHECK=OK) ELSE (SET CHECK=)
    ) else if /i "!CHECK!"=="OK" (
      if /i "%%A"=="UpdateFolder" set UPDATE_FOLDER=%%B
      if /i "%%A"=="WorkFolder" set WORK_FOLDER=%%B
      if /i "%%A"=="ListFilePath" set LIST_FILE_PATH=%%B
      if /i "%%A"=="ListFileUse" set LIST_FILE_USE=%%B
    )
  )
) else call :ERROR MSG_01&goto :END
if "%LIST_FILE_USE%"=="1" if not "%LIST_FILE_PATH%"=="" set UPDATE_LIST=%LIST_FILE_PATH%
if "%UPDATE_LIST%"=="" set UPDATE_LIST=%~dp0list\default_w2k.lst
if "%UPDATE_FOLDER:~-1%"=="\" set UPDATE_FOLDER=%UPDATE_FOLDER:~0,-1%
if "%WORK_FOLDER:~-1%"=="\" set WORK_FOLDER=%WORK_FOLDER:~0,-1%
set DL_FOLDER=%WORK_FOLDER%\IE6SP1
if /i "%SHOW_DETAILS_MODE%"=="ON" (
  echo アップデートフォルダ
  echo   %UPDATE_FOLDER%
  echo アップデートリストファイル
  echo   %UPDATE_LIST%
  echo 作業フォルダ
  echo   %WORK_FOLDER%
  echo IE6SP1 ダウンロードフォルダ
  echo   %DL_FOLDER%
)
:: 環境変数の取得状態診断
if not exist "%UPDATE_LIST%" call :ERROR MSG_02&goto :END
if /i "%UPDATE_FOLDER%"=="" call :ERROR MSG_03&goto :END
if /i "%WORK_FOLDER%"=="" call :ERROR MSG_03&goto :END
if /i "%STEP_BY_STEP_MODE%"=="ON" (
  IF EXIST TEMP.VBS DEL TEMP.VBS /Q
  echo>TEMP.VBS Dim TmpStr
  echo>>TEMP.VBS TmpStr=MsgBox("パラメータの設定が終了しました。続行しますか?",36,"%APP_TITLE%"^)
  echo>>TEMP.VBS Wscript.Echo TmpStr
  echo>>TEMP.VBS Set TmpStr = Nothing
  FOR /F %%A IN ('CSCRIPT //NOLOGO TEMP.VBS') DO if /i "%%A"=="7" goto :END
  DEL TEMP.VBS /Q
)
:: 既存のIEXPRESS_IE6SP1.EXEがあれば削除して新たに作る
if exist "%UPDATE_FOLDER%\IEXPRESS_IE6SP1.EXE" del "%UPDATE_FOLDER%\IEXPRESS_IE6SP1.EXE" /q
:: アップデートリストファイルの情報から対象言語を取得
echo %UPDATE_LIST% をロードします。
set CHECK=
for /f "tokens=1* delims==" %%A in ('type "%UPDATE_LIST%"') do (
  set TEMPSTR=%%A
  set TEMPSTR=!TEMPSTR:~0,1!
  if /i "!TEMPSTR!"=="[" IF /I "%%A"=="[INFO]" (SET CHECK=OK) ELSE (SET CHECK=)
  if /i "!CHECK!"=="OK" if /i "%%A"=="LANGUAGE" set LANGUAGE=%%B
)
echo   言語:%LANGUAGE%
if /i "%LANGUAGE%"=="Arabic" set LANG=AR& set SCRIPT_FILE=SCRIPTAR.CAB
if /i "%LANGUAGE%"=="Chinese (Simplified)" set LANG=CN& set SCRIPT_FILE=SCRIPCHS.CAB
if /i "%LANGUAGE%"=="Chinese (Traditional)" set LANG=TW& set SCRIPT_FILE=SCRIPCHT.CAB
if /i "%LANGUAGE%"=="Czech" set LANG=CS& set SCRIPT_FILE=SCRIPTCS.CAB
if /i "%LANGUAGE%"=="Danish" set LANG=DA& set SCRIPT_FILE=SCRIPTDA.CAB
if /i "%LANGUAGE%"=="Dutch" set LANG=NL& set SCRIPT_FILE=SCRIPTNL.CAB
if /i "%LANGUAGE%"=="English" set LANG=EN-US&set SCRIPT_FILE=SCRIPTEN.CAB
if /i "%LANGUAGE%"=="Finnish" set LANG=FI& set SCRIPT_FILE=SCRIPTFI.CAB
if /i "%LANGUAGE%"=="French" set LANG=FR& set SCRIPT_FILE=SCRIPTFR.CAB
if /i "%LANGUAGE%"=="German" set LANG=DE& set SCRIPT_FILE=SCRIPTDE.CAB
if /i "%LANGUAGE%"=="Greek" set LANG=EL& set SCRIPT_FILE=SCRIPTEL.CAB
if /i "%LANGUAGE%"=="Hebrew" set LANG=HE& set SCRIPT_FILE=SCRIPTHE.CAB
if /i "%LANGUAGE%"=="Hungarian" set LANG=HU& set SCRIPT_FILE=SCRIPTHU.CAB
if /i "%LANGUAGE%"=="Italian" set LANG=IT& set SCRIPT_FILE=SCRIPTIT.CAB
if /i "%LANGUAGE%"=="Japanese" set LANG=JA& set SCRIPT_FILE=SCRIPTJP.CAB
if /i "%LANGUAGE%"=="Japanese (NEC)" set LANG=JA& set SCRIPT_FILE=SCRIPTJP.CAB
if /i "%LANGUAGE%"=="Korean" set LANG=KO& set SCRIPT_FILE=SCRIPTKO.CAB
if /i "%LANGUAGE%"=="Norwegian (Bokmal)" set LANG=NO& set SCRIPT_FILE=SCRIPTNO.CAB
if /i "%LANGUAGE%"=="Polish" set LANG=PL& set SCRIPT_FILE=SCRIPTPL.CAB
if /i "%LANGUAGE%"=="Portuguese (Brazil)" set LANG=PT-BR&set SCRIPT_FILE=SCRIPPTB.CAB
if /i "%LANGUAGE%"=="Portuguese (Portugal)" set LANG=PT& set SCRIPT_FILE=SCRIPPTG.CAB
if /i "%LANGUAGE%"=="Russian" set LANG=RU& set SCRIPT_FILE=SCRIPTRU.CAB
if /i "%LANGUAGE%"=="Spanish" set LANG=ES& set SCRIPT_FILE=SCRIPTES.CAB
if /i "%LANGUAGE%"=="Swedish" set LANG=SV& set SCRIPT_FILE=SCRIPTSV.CAB
if /i "%LANGUAGE%"=="Tukish" set LANG=TR& set SCRIPT_FILE=SCRIPTTR.CAB
if /i "%STEP_BY_STEP_MODE%"=="ON" (
  IF EXIST TEMP.VBS DEL TEMP.VBS /Q
  echo>TEMP.VBS Dim TmpStr
  echo>>TEMP.VBS TmpStr=MsgBox("%UPDATE_LIST% から対象言語 %LANGUAGE% を取得しました。続行しますか?",36,"%APP_TITLE%"^)
  echo>>TEMP.VBS Wscript.Echo TmpStr
  echo>>TEMP.VBS Set TmpStr = Nothing
  FOR /F %%A IN ('CSCRIPT //NOLOGO TEMP.VBS') DO if /i "%%A"=="7" goto :END
  DEL TEMP.VBS /Q
)
:: IE6SP1用ファイル取得の準備
:: download.exe コマンドoption
set DLOPTION=/retry=2 /timeout=30
:: URLのベースを指定
set URL_BASE=http://download.microsoft.com/download/ie6sp1/finrel/6_sp1/W98NT42KMeXP
:: [download.ini編集]
if exist Download.ini del Download.ini
echo>Download.ini %URL_BASE%/%LANG%/BRANDING.CAB
echo>>Download.ini %URL_BASE%/%LANG%/CRLUPD.CAB
echo>>Download.ini %URL_BASE%/%LANG%/ie6setup.exe
echo>>Download.ini %URL_BASE%/%LANG%/IEEXINST.CAB
echo>>Download.ini %URL_BASE%/%LANG%/IEW2K_1.CAB
echo>>Download.ini %URL_BASE%/%LANG%/IEW2K_2.CAB
echo>>Download.ini %URL_BASE%/%LANG%/IEW2K_3.CAB
echo>>Download.ini %URL_BASE%/%LANG%/IEW2K_4.CAB
echo>>Download.ini %URL_BASE%/%LANG%/MAILNEWS.CAB
echo>>Download.ini %URL_BASE%/%LANG%/MPLAY2U.CAB
echo>>Download.ini %URL_BASE%/%LANG%/OEEXCEP.CAB
echo>>Download.ini %URL_BASE%/%LANG%/README.CAB
echo>>Download.ini %URL_BASE%/%LANG%/%SCRIPT_FILE%
echo>>Download.ini %URL_BASE%/%LANG%/WAB.CAB
:: 作業フォルダの準備
if not exist "%WORK_FOLDER%\IE6SP1" (
  echo 作業フォルダ %WORK_FOLDER%\IE6SP1 を作成します。
  md "%WORK_FOLDER%\IE6SP1"
)
if exist "%UPDATE_FOLDER%\ie6setup.exe" if not exist "%WORK_FOLDER%\IE6SP1\ie6setup.exe" copy "%UPDATE_FOLDER%\ie6setup.exe" "%WORK_FOLDER%\IE6SP1\ie6setup.exe">NUL
:: [download.lst編集]
if exist Download.tmp DEL Download.tmp /Q
set HOTFIXNO=0
for /f "delims=" %%P in (Download.ini) DO (
  if not exist "%DL_FOLDER%\%%~nxP" (
    echo>>Download.tmp TITLE!HOTFIXNO!=%%~nxP
    echo>>Download.tmp URL!HOTFIXNO!=%%P
    echo>>Download.tmp File!HOTFIXNO!=%DL_FOLDER%\%%~nxP
    set /a HOTFIXNO=HOTFIXNO+1
  )
)
if exist Download.tmp (
  echo>download.lst [Download]
  echo>>download.lst ListCount=!HOTFIXNO!
  type Download.tmp >>download.lst
  echo>>download.lst [Result]
  echo>>download.lst ExitCode=1
:: ダウンロード実行
  ECHO ファイルのダウンロードを開始します。
  if /i "%STEP_BY_STEP_MODE%"=="ON" (
    IF EXIST TEMP.VBS DEL TEMP.VBS /Q
    echo>TEMP.VBS Dim TmpStr
    echo>>TEMP.VBS TmpStr=MsgBox("ファイルのダウンロードを開始しますか?",36,"%APP_TITLE%"^)
    echo>>TEMP.VBS Wscript.Echo TmpStr
    echo>>TEMP.VBS Set TmpStr = Nothing
    FOR /F %%A IN ('CSCRIPT //NOLOGO TEMP.VBS') DO if /i "%%A"=="7" goto :END
    DEL TEMP.VBS /Q
  )
  download.exe %DLOPTION%
  set DLERR=!ERRORLEVEL!
  if !DLERR! geq 2 call :ERROR MSG_05&GOTO :END
)
:: [iesetup.ini編集]
echo>"%WORK_FOLDER%\IE6SP1\iesetup.ini" [Version]
echo>>"%WORK_FOLDER%\IE6SP1\iesetup.ini" Signature="Active setup"
echo>>"%WORK_FOLDER%\IE6SP1\iesetup.ini" [Options]
echo>>"%WORK_FOLDER%\IE6SP1\iesetup.ini" IELiteMode=0
echo>>"%WORK_FOLDER%\IE6SP1\iesetup.ini" ConfirmFileList=0
echo>>"%WORK_FOLDER%\IE6SP1\iesetup.ini" LocalInstall=1
:: ダウンロード診断
for /f "delims=" %%P in (Download.ini) DO (
  set DLFILE=%%~nxP
  if /i "%SHOW_DETAILS_MODE%"=="ON" (
    echo URL :%URL_BASE%/%LANG%/!DLFILE!
    echo 保存先:%DL_FOLDER%\!DLFILE!
  )
  if not exist "%DL_FOLDER%\!DLFILE!" (
    call :ERROR MSG_06&GOTO :END
  ) else (
    ECHO !DLFILE! のダウンロードに成功しました。
  )
)
:: IEXPRESS実行
ECHO %~dp0IEXPRESS_IE6SP1.SED を編集します。
echo>IEXPRESS_IE6SP1.SED [Version]
echo>>IEXPRESS_IE6SP1.SED Class=IEXPRESS
echo>>IEXPRESS_IE6SP1.SED SEDVersion=3
echo>>IEXPRESS_IE6SP1.SED [Options]
echo>>IEXPRESS_IE6SP1.SED PackagePurpose=InstallApp
echo>>IEXPRESS_IE6SP1.SED ShowInstallProgramWindow=0
echo>>IEXPRESS_IE6SP1.SED HideExtractAnimation=1
echo>>IEXPRESS_IE6SP1.SED UseLongFileName=1
echo>>IEXPRESS_IE6SP1.SED InsideCompressed=0
echo>>IEXPRESS_IE6SP1.SED CAB_FixedSize=0
echo>>IEXPRESS_IE6SP1.SED CAB_ResvCodeSigning=0
echo>>IEXPRESS_IE6SP1.SED RebootMode=N
echo>>IEXPRESS_IE6SP1.SED InstallPrompt=%%InstallPrompt%%
echo>>IEXPRESS_IE6SP1.SED DisplayLicense=%%DisplayLicense%%
echo>>IEXPRESS_IE6SP1.SED FinishMessage=%%FinishMessage%%
echo>>IEXPRESS_IE6SP1.SED TargetName=%%TargetName%%
echo>>IEXPRESS_IE6SP1.SED FriendlyName=%%FriendlyName%%
echo>>IEXPRESS_IE6SP1.SED AppLaunched=%%AppLaunched%%
echo>>IEXPRESS_IE6SP1.SED PostInstallCmd=%%PostInstallCmd%%
echo>>IEXPRESS_IE6SP1.SED AdminQuietInstCmd=%%AdminQuietInstCmd%%
echo>>IEXPRESS_IE6SP1.SED UserQuietInstCmd=%%UserQuietInstCmd%%
echo>>IEXPRESS_IE6SP1.SED SourceFiles=SourceFiles
echo>>IEXPRESS_IE6SP1.SED [Strings]
echo>>IEXPRESS_IE6SP1.SED InstallPrompt=
echo>>IEXPRESS_IE6SP1.SED DisplayLicense=
echo>>IEXPRESS_IE6SP1.SED FinishMessage=
echo>>IEXPRESS_IE6SP1.SED TargetName="%UPDATE_FOLDER%\IEXPRESS_IE6SP1.EXE"
echo>>IEXPRESS_IE6SP1.SED FriendlyName=Internet Explorer 6 Service Pack 1
echo>>IEXPRESS_IE6SP1.SED AppLaunched=ie6setup.exe /q:a /r:n
echo>>IEXPRESS_IE6SP1.SED PostInstallCmd=^<None^>
echo>>IEXPRESS_IE6SP1.SED AdminQuietInstCmd=
echo>>IEXPRESS_IE6SP1.SED UserQuietInstCmd=
echo>>IEXPRESS_IE6SP1.SED FILE0="BRANDING.CAB"
echo>>IEXPRESS_IE6SP1.SED FILE1="CRLUPD.CAB"
echo>>IEXPRESS_IE6SP1.SED FILE2="ie6setup.exe"
echo>>IEXPRESS_IE6SP1.SED FILE3="iesetup.ini"
echo>>IEXPRESS_IE6SP1.SED FILE4="IEEXINST.CAB"
echo>>IEXPRESS_IE6SP1.SED FILE5="IEW2K_1.CAB"
echo>>IEXPRESS_IE6SP1.SED FILE6="IEW2K_2.CAB"
echo>>IEXPRESS_IE6SP1.SED FILE7="IEW2K_3.CAB"
echo>>IEXPRESS_IE6SP1.SED FILE8="IEW2K_4.CAB"
echo>>IEXPRESS_IE6SP1.SED FILE9="MAILNEWS.CAB"
echo>>IEXPRESS_IE6SP1.SED FILE10="MPLAY2U.CAB"
echo>>IEXPRESS_IE6SP1.SED FILE11="OEEXCEP.CAB"
echo>>IEXPRESS_IE6SP1.SED FILE12="README.CAB"
echo>>IEXPRESS_IE6SP1.SED FILE13="%SCRIPT_FILE%"
echo>>IEXPRESS_IE6SP1.SED FILE14="WAB.CAB"
echo>>IEXPRESS_IE6SP1.SED [SourceFiles]
echo>>IEXPRESS_IE6SP1.SED SourceFiles0="%WORK_FOLDER%\IE6SP1\"
echo>>IEXPRESS_IE6SP1.SED [SourceFiles0]
echo>>IEXPRESS_IE6SP1.SED %%FILE0%%=
echo>>IEXPRESS_IE6SP1.SED %%FILE1%%=
echo>>IEXPRESS_IE6SP1.SED %%FILE2%%=
echo>>IEXPRESS_IE6SP1.SED %%FILE3%%=
echo>>IEXPRESS_IE6SP1.SED %%FILE4%%=
echo>>IEXPRESS_IE6SP1.SED %%FILE5%%=
echo>>IEXPRESS_IE6SP1.SED %%FILE6%%=
echo>>IEXPRESS_IE6SP1.SED %%FILE7%%=
echo>>IEXPRESS_IE6SP1.SED %%FILE8%%=
echo>>IEXPRESS_IE6SP1.SED %%FILE9%%=
echo>>IEXPRESS_IE6SP1.SED %%FILE10%%=
echo>>IEXPRESS_IE6SP1.SED %%FILE11%%=
echo>>IEXPRESS_IE6SP1.SED %%FILE12%%=
echo>>IEXPRESS_IE6SP1.SED %%FILE13%%=
echo>>IEXPRESS_IE6SP1.SED %%FILE14%%=
if /i "%DEBUG_MODE%"=="ON" (
  IF EXIST TEMP.VBS DEL TEMP.VBS /Q
  echo>TEMP.VBS Dim TmpStr
  echo>>TEMP.VBS TmpStr=MsgBox("IEXPRESS_IE6SP1.SEDをメモ帳で開きますか?([キャンセル]で中断します。)",35,"%APP_TITLE%"^)
  echo>>TEMP.VBS If TmpStr=6 Then MsgBox "メモ帳を閉じた後、続行します。",64,"%APP_TITLE%"
  echo>>TEMP.VBS Wscript.Echo TmpStr
  echo>>TEMP.VBS Set TmpStr = Nothing
  FOR /F %%A IN ('CSCRIPT //NOLOGO TEMP.VBS') DO (
    if /i "%%A"=="6" start/wait notepad IEXPRESS_IE6SP1.SED
    if /i "%%A"=="2" goto :END
  )
  DEL TEMP.VBS /Q
)
:: IEXPRESS_IE6SP1.EXE作成
ECHO %UPDATE_FOLDER%\IEXPRESS_IE6SP1.EXE を作成します。
if /i "%STEP_BY_STEP_MODE%"=="ON" (
  IF EXIST TEMP.VBS DEL TEMP.VBS /Q
  echo>TEMP.VBS Dim TmpStr
  echo>>TEMP.VBS TmpStr=MsgBox("IEXPRESS_IE6SP1.EXE を作成しますか?",36,"%APP_TITLE%"^)
  echo>>TEMP.VBS If TmpStr=6 Then
  echo>>TEMP.VBS 	Wscript.Echo "YES"
  echo>>TEMP.VBS Else
  echo>>TEMP.VBS 	Wscript.Echo "NO"
  echo>>TEMP.VBS End If
  echo>>TEMP.VBS Set TmpStr = Nothing
  FOR /F %%A IN ('CSCRIPT //NOLOGO TEMP.VBS') DO if /i "%%A"=="NO" goto :END
  DEL TEMP.VBS /Q
)
IEXPRESS /N IEXPRESS_IE6SP1.SED
if exist "%UPDATE_FOLDER%\IEXPRESS_IE6SP1.EXE" (
  ECHO %UPDATE_FOLDER%\IEXPRESS_IE6SP1.EXE を作成しました。
) else call :ERROR MSG_07
:END
:: クリーンアップ
if /i not "%SAVE_IE6SP1_SOURCE%"=="ON" if exist "%WORK_FOLDER%\IE6SP1" rd/s/q "%WORK_FOLDER%\IE6SP1"
if exist Download.tmp del Download.tmp /Q
if /i not "%DEBUG_MODE%"=="ON" if exist Download.ini del Download.ini /Q
if /i not "%DEBUG_MODE%"=="ON" if exist IEXPRESS_IE6SP1.SED del IEXPRESS_IE6SP1.SED /Q
if exist "%UPDATE_FOLDER%\~IEXPRESS_IE6SP1.DDF" del "%UPDATE_FOLDER%\~IEXPRESS_IE6SP1.DDF" /Q
if exist "%UPDATE_FOLDER%\~IEXPRESS_IE6SP1.CAB" del "%UPDATE_FOLDER%\~IEXPRESS_IE6SP1.CAB" /Q
if /i not "%SAVE_IE6SP1_SOURCE%"=="ON" if exist "%WORK_FOLDER%\IE6SP1" echo %WORK_FOLDER%\IE6SP1 を削除できませんでした。&set ERR=F
if exist Download.tmp echo Download.tmp を削除できませんでした。&set ERR=F
if /i not "%DEBUG_MODE%"=="ON" if exist Download.ini echo Download.ini を削除できませんでした。&set ERR=F
if /i not "%DEBUG_MODE%"=="ON" if exist IEXPRESS_IE6SP1.SED echo IEXPRESS_IE6SP1.SED を削除できませんでした。&set ERR=F
if exist "%UPDATE_FOLDER%\~IEXPRESS_IE6SP1.DDF" echo %UPDATE_FOLDER%\~IEXPRESS_IE6SP1.DDF を削除できませんでした。&set ERR=F
if exist "%UPDATE_FOLDER%\~IEXPRESS_IE6SP1.CAB" echo %UPDATE_FOLDER%\~IEXPRESS_IE6SP1.CAB を削除できませんでした。&set ERR=F
ECHO>TEMP.VBS MsgBox "処理を終了します。",64,"%APP_TITLE%"
ECHO 処理を終了します。
cscript //nologo temp.vbs
DEL TEMP.VBS /Q
IF EXIST TEMP.VBS echo TEMP.VBS を削除できませんでした。&set ERR=F
if "%ERR%"=="F" echo 削除できなかったフォルダ・ファイルがあります。手動で削除願います。&pause
goto :EOF
:ERROR
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: エラーMSGの表示                                                         [C1]
::  (引数) %1:MSG-No
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
IF EXIST TEMP.VBS DEL TEMP.VBS /Q
IF /I "%1"=="MSG_00" (
  echo>TEMP.VBS MsgBox "download.exeが見つかりません。" ^&_
  echo>>TEMP.VBS Chr(13^) ^& Chr(10^) ^& "SP+メーカーのインストール先フォルダから実行してください。" ^&_
  echo download.exeが見つかりません。
  echo SP+メーカーのインストール先フォルダから実行してください。
)
IF /I "%1"=="MSG_01" (
  echo>TEMP.VBS MsgBox "SP+メーカーの実行環境に、winsppm.iniを検出できませんでした。" ^&_
  echo SP+メーカーの実行環境に、winsppm.iniを検出できませんでした。
)
IF /I "%1"=="MSG_02" (
  echo>TEMP.VBS MsgBox "アップデートリストファイルが見つかりません。" ^&_
  echo アップデートリストファイルが見つかりません。
  if /i "%SHOW_DETAILS_MODE%"=="ON" (
    echo>>TEMP.VBS Chr(13^) ^& Chr(10^) ^& "  UPDATE_LIST=%UPDATE_LIST%" ^&_
    echo   UPDATE_LIST=%UPDATE_LIST%
  )
)
IF /I "%1"=="MSG_03" (
  echo>TEMP.VBS MsgBox "SP+メーカー実行環境が整っていません。" ^& Chr(13^) ^& Chr(10^) ^&_
  echo SP+メーカー実行環境が整っていません。
  echo>>TEMP.VBS "一度、SP+メーカーを起動し各種設定をして終了させ、再度実行してください。" ^&_
  echo 一度、SP+メーカーを起動し各種設定をして終了させ、再度実行してください。
  if /i "%SHOW_DETAILS_MODE%"=="ON" (
    echo>>TEMP.VBS Chr(13^) ^& Chr(10^) ^& "  UPDATE_FOLDER=%UPDATE_FOLDER%" ^&_
    echo   UPDATE_FOLDER=%UPDATE_FOLDER%
  )
)
IF /I "%1"=="MSG_04" (
  echo>TEMP.VBS MsgBox "作業フォルダ %WORK_FOLDER%\IE6SP1 を削除できませんでした。" ^&_
  echo 作業フォルダ %WORK_FOLDER%\IE6SP1 を削除できませんでした。
)
IF /I "%1"=="MSG_05" (
  echo>TEMP.VBS MsgBox "ダウンロードに失敗しました。" ^&_
  echo ダウンロードに失敗しました。
  if /i "%SHOW_DETAILS_MODE%"=="ON" (
    echo>>TEMP.VBS Chr(13^) ^& Chr(10^) ^& "  ERRORLEVEL=%DLERR%" ^&_
    echo   ERRORLEVEL=%DLERR%
  )
)
IF /I "%1"=="MSG_06" (
  echo>TEMP.VBS MsgBox "!DLFILE! のダウンロードに失敗しました。" ^&_
  echo !DLFILE! のダウンロードに失敗しました。
)
IF /I "%1"=="MSG_07" (
  echo>TEMP.VBS MsgBox "%UPDATE_FOLDER%\IEXPRESS_IE6SP1.EXE を作成できませんでした。" ^&_
  echo %UPDATE_FOLDER%\IEXPRESS_IE6SP1.EXE を作成できませんでした。
)
echo>>TEMP.VBS 	Chr(13^) ^& Chr(10^) ^& Chr(13^) ^& Chr(10^) ^&_
echo.
echo>>TEMP.VBS 	"IEXPRESS_IE6SP1.EXE 作成プログラムは、正常に処理を行えませんでした。",16,"エラーが発生しました! - %APP_TITLE%"
echo IEXPRESS_IE6SP1.EXE 作成プログラムは、正常に処理を行えませんでした。
CSCRIPT //NOLOGO TEMP.VBS
DEL TEMP.VBS /Q
goto :EOF
:EOF

更新しました

銀松? (2007-05-06 (日) 17:57:02)

どこを変えたかはここをご覧ください。


上のソースを更新しました。

銀松? (2007-05-06 (日) 15:03:00)

これでどうでしょうか?


  • ie6setup.exe が、UPDATE_FOLDER上に存在するしないに関わらず、常にDL and DL先はIE6SP1 にしてます。
    となると、134行目のcopyは意味無し and せっかくDLした ie6setup.exeは、UPDATE_FOLDERに入れてない。
    前のとおりの処理の方が良くないですか? -- 銀の匙? 2007-05-06 (日) 17:33:50
  • アップデートフォルダにIEXPRESS_IE6SP1.EXEがあれば、ie6setup.exeは不要になると判断しました。
    ていうか、134行目と135行目は逆ですねorz -- 銀松? 2007-05-06 (日) 17:45:07
  • 以下ので最後の修正でしょう。
    148,174行目 set DL_FOLDER は、forの前定義に (LOOP内に入れる必要性なし)
    270行目は、不用なので削除 -- 銀の匙? 2007-05-06 (日) 21:52:22
  • ほかにもdownload.exeとWORK_FOLDERの有無の診断が抜けていたので修正しました。
    IE6SP1フォルダを残すかどうかは、SAVEORGで指定するようにしました。 -- 銀松? 2007-05-07 (月) 00:00:58
  • あと、iniファイルでパラメータ指定ってあったほうがいいでしょうか? -- 銀松? 2007-05-07 (月) 00:03:10
  • SRCを読んだ限りもう手直しの必要は無いと思います。
    ただパラメータ設定に関しては有効文字を(YES/NO)と記述しておいた方が良いのでは?
    また、iniファイル化の必要性は無いと考えます。(個人の好みでしょうけど)
    IEXPRESS_IE6SP1.EXEのソース残す大きな意味は無いですし、頻繁に変える類の設定では無いですし。
    これで完成リリースして良いと思います。 -- 銀の匙? 2007-05-07 (月) 12:45:02

これでいいかな?

銀松? (2007-05-06 (日) 10:55:23)

一度環境変数に割り当ててforだのifだのから脱出し、それから値の診断をすればよさそうです。

 
if exist winsppm.ini (
  echo %~dp0winsppm.ini をロードします。
  for /f "tokens=1* delims==" %%A in (winsppm.ini) do (
    set TEMPSTR=%%A
    set TEMPSTR=!TEMPSTR:~0,1!
    if /i "!TEMPSTR!"=="[" (
      IF /I "%%A"=="[Windows 2000]" (SET CHECK=OK) ELSE (SET CHECK=)
    ) else if /i "!CHECK!"=="OK" (
      if /i "%%A"=="UpdateFolder" set UPDATE_FOLDER=%%B
      if /i "%%A"=="WorkFolder" set WORK_FOLDER=%%B
      if /i "%%A"=="ListFilePath" set LIST_FILE_PATH=%%B
      if /i "%%A"=="ListFileUse" set LIST_FILE_USE=%%B
    )
  )
) else call :ERROR MSG_01&goto :END
if "%LIST_FILE_USE%"=="1" (
  if not "%LIST_FILE_PATH%"=="" (
    if exist "%LIST_FILE_PATH%" set UPDATE_LIST=%LIST_FILE_PATH%
  )
) else set UPDATE_LIST=%~dp0list\default_w2k.lst

# とりあえず、下のコメント欄からの投稿はしないということでどうでしょう?


  • ちなみに↑の行頭「#」は「~#」と記述しないとダメみたいです。 -- 銀松? 2007-05-06 (日) 10:57:44
  • これでよいのでは?

     
    if "%LIST_FILE_USE%"=="1" (
    if not "%LIST_FILE_PATH%"=="" set UPDATE_LIST=%LIST_FILE_PATH%
    ) else set UPDATE_LIST=%~dp0list\default_w2k.lst

     
    行頭「#」は「~#」と記述・・・とは何ですか? -- 銀の匙? 2007-05-06 (日) 11:18:45
  • LIST_FILE_PATH の有効性を調べるなら、これじゃないとダメでんね。;
     
    if "%LIST_FILE_USE%"=="1" if not "%LIST_FILE_PATH%"=="" set UPDATE_LIST=%LIST_FILE_PATH%
    if "%UPDATE_LIST%"=="" set UPDATE_LIST=%~dp0list\default_w2k.lst -- 銀の匙? 2007-05-06 (日) 13:29:16

まだ不具合あります

銀松? (2007-05-06 (日) 02:15:44)

現状では、

ListFileUse=0
ListFilePath=・・・.lst

で、ListFilePathのデータが読み込まれてしまう不具合があります。


  • 原因は、次の2点です
    1.ListFileUse=1 の場合にのみ ListFilePath参照すべきなのに、無条件参照してる
    2.ListFileUse/ListFilePath どちらの定義が先になるかあやふや
     今回の場合、ListFileUse 定義が先のため、後からの ListFilePathで上書きされる

     
    こうしたい所ですが、定義順が逆だとこれではまだNGだす。
    if /i "A"=="ListFileUse" set LISTFILEUSE=B
    if /i "A"=="ListFilePath" if /i "%LISTFILEUSE%"=="1" set UPDATE_LIST=B -- 銀の匙? 2007-05-06 (日) 09:48:10
  • ↑困ったTEXT整形適用ですね。。。半角%%が使えん -- 銀の匙? 2007-05-06 (日) 09:51:09
  • 追伸:遅延環境変数の影響で !LISTFILEUSE! としないとダメみたいですね -- 銀の匙? 2007-05-06 (日) 10:01:22