home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 1998 March / VPR9803A.ISO / OLS / Windows / WBAT137P / wbat137p.lzh / SAMPLE / 00SETUP.BTW < prev    next >
Text File  |  1997-08-10  |  12KB  |  358 lines

  1. @batchwnd off
  2. @executewnd off
  3. @echo off
  4. REM    --------------------------------------------------------------
  5. REM    WinBatchEhサンプルバッチ - 00SETUP.BTW
  6. REM    .BTWファイルの実行ファイルへの関連付け, WinBatchEhのプログラム
  7. REM    マネージャ(スタートメニュー)へのグループの作成を行う
  8. REM
  9. REM    Author : Yohei Shimizu
  10. REM    Version: 1.17
  11. REM    Date   : 1997/08/10
  12. REM
  13. REM    History: 1.0    1995/05/24
  14. REM            Initial Version
  15. REM         1.1    1995/06/11
  16. REM            DROPFILE.BTWを追加
  17. REM            他細かな変更
  18. REM         1.11    1995/06/24
  19. REM            GM0.BTWを追加
  20. REM         1.12    1995/08/05
  21. REM            NTの設定を入れてみた(Thanks tantan)
  22. REM            WinBatchEhが1.04以上なら楽にwinbatch.exeを探す
  23. REM         1.13    1995/08/16
  24. REM            VIEWSCR.BTWを追加
  25. REM            バッチのアイコンは別のものにするようにした
  26. REM         1.13a    1995/10/13
  27. REM            シェルの名前に @Progman を使うようにした
  28. REM         1.13b    1995/12/19
  29. REM            シェルの名前を一般的なもので表示するようにした
  30. REM         1.13c    1996/06/09
  31. REM            メッセージをちょっと変えた
  32. REM            古いWINBATCH.EXEを動作対象外とした
  33. REM            HLPの登録が32ビット版に対応してなかったのを修正
  34. REM         1.13d    1996/08/09
  35. REM            32ビット版の関連付けのファイル名を "" で囲うようにした
  36. REM         1.13e    1996/08/21
  37. REM            コメント文章の誤りの修正
  38. REM         1.14    1997/01/15
  39. REM            32ビット版で空白を含むフォルダにセットアップできない
  40. REM            のを修正
  41. REM         1.15    1997/05/18
  42. REM            タイトルBMPを追加
  43. REM            関連付けに %2 以降を設定するようにした
  44. REM            WinBatchEhグループをいちいち削除しないようにした
  45. REM            その他細かい修正など
  46. REM         1.16    1997/05/24
  47. REM            タイトルBMPを非圧縮のものに変更
  48. REM            WinBatchEhグループ内の(このバッチで作成する)アイコン
  49. REM            を削除するようにした
  50. REM            その他細かい修正など
  51. REM         1.17    1997/08/10
  52. REM            Windows95でのアンインストールの正式サポート
  53. REM            Win3.1でWINBAT32.HLPが存在時、登録されてしまうのを修正
  54. REM    --------------------------------------------------------------
  55.  
  56. :/ WinBatchEhのバージョンのチェック
  57. :/ バージョン 1.01 以前ではgetversionがサポートされてないので先にERRORLEVEL
  58. :/ に入れておく
  59. set ERRORLEVEL=101
  60. getversion
  61. if not ERRORLEVEL 134
  62.   messagebox このバッチを動作させるには WinBatchEh バージョン 1.34 以降を使用してください.
  63.   exit
  64. endif
  65.  
  66. :/ ウィンドウタイトルを使う方法
  67. :/ if %OS%.==Windows_NT.
  68. :/   set SHELL=プログラム マネージャ - %USERDOMAIN%\%USERNAME%
  69. :/ else
  70. :/   set SHELL=プログラム マネージャ
  71. :/ endif
  72.  
  73. :/ クラス名を使う方法(こっちなら大抵のSHELLで動くはず)
  74. set SHELL=@Progman
  75.  
  76. :/ 環境変数 OSNAME に OS 名を入れる
  77. set OSNAME=OTHER
  78. getversion /P
  79. if %ERRORLEVEL%==0 set OSNAME=WIN31
  80. if %ERRORLEVEL%==1 set OSNAME=WIN95
  81. if %ERRORLEVEL%==2 set OSNAME=WINNT
  82.  
  83.  
  84. :/ パラメータがあれば分岐
  85. if "%1"=="uninstall" goto UNINST
  86. if "%1"=="uninstall2" goto UNINST2
  87.  
  88.  
  89. :/ -------------------------------------------------------------
  90. :/ インストールフェーズ
  91. :/ -------------------------------------------------------------
  92.  
  93. :/ カレントドライブ/ディレクトリをバッチ自身のディレクトリに移動
  94. STRTOKFILE=STF_DRV CHGDRV "%0"
  95. %CHGDRV%
  96. STRTOKFILE=STF_PATH CHGDIR "%0"
  97. cd "%CHGDIR%"
  98.  
  99.  
  100. :/ --- タイトルの表示
  101.  
  102. :/ 画面から外れたところでまず表示させる
  103. displaybmp /Y /WP:3072,3072 00setup.bmp
  104.  
  105. :/ BMPの大きさを取得
  106. getwindowrect "WinBatchEhBMP" X Y CX CY
  107. :/ デスクトップ(全画面)の大きさを取得
  108. getwindowrect @Desktop DX DY DCX DCY
  109.  
  110. :/ BMPのX位置の計算(画面中央)
  111. let X=DCX/2-CX/2
  112.  
  113. :/ BMPのY位置の初期値(Y)と最終位置(YY=画面中央)の計算
  114. let Y=DCY
  115. let YY=DCY/2-CY/2
  116.  
  117. :/ 移動量の計算(32分割)
  118. let SY=(DCY-YY)/32
  119.  
  120. :/ 画面下から上まで移動
  121. for /L %%a in (%Y%,-%SY%,%YY%) do
  122.   setwindowrect "WinBatchEhBMP" %X% %%a
  123. endfor
  124.  
  125. :/ ウエイト
  126. sleeptime 2
  127.  
  128. :/ bmpの消去
  129. displaybmp
  130.  
  131.  
  132. :/ --- Install
  133.  
  134. :/ 確認
  135. messagebox=MB_YESNO+MB_FORMAT 拡張子がBTWのファイルへの関連付けと,\nプログラム マネージャ(スタートメニュー) への\nサンプルバッチの登録を行います.
  136. if not %ERRORLEVEL%==IDYES exit
  137.  
  138. @batchwnd on
  139. @executewnd on
  140.  
  141. :/ プログラムマネージャがあるか
  142. if not existwindowr "%SHELL%"
  143.   messagebox プログラム マネージャ(スタートメニュー) が見つかりませんでした。処理を中止します。
  144.   exit
  145. endif
  146.  
  147. :/ カレントディレクトリを取得
  148. getcurrent=GCD_DRVPATH CWD
  149.  
  150. :/ 実行ファイル名を取得
  151. getcurrent=GCD_WINBATCH WBATEXE
  152.  
  153. echo.
  154. echo 実行ファイル は %WBATEXE% です.
  155.  
  156. :/ 32ビット版のとき環境変数の長いファイル名を短いファイル名に代入し直す
  157. if WINBAT32==YES
  158.   STRTOKFILE=STF_SHORT+STF_DRV+STF_PATHNAME CWD "%CWD%"
  159.   STRTOKFILE=STF_SHORT+STF_DRV+STF_PATHNAME WBATEXE "%WBATEXE%"
  160.   STRTOKFILE=STF_SHORT+STF_DRV+STF_PATHNAME WBATHLP "%WBATHLP%"
  161. endif
  162.  
  163. :/ ヘルプファイル名を取得
  164. strtokfile=STF_DRV+STF_PATH+STF_NODE WBATHLP %WBATEXE%
  165. set WBATHLP=%WBATHLP%.HLP
  166.  
  167. echo ヘルプファイルは %WBATHLP% です.
  168. echo.
  169.  
  170. set BATCHICON=%WBATEXE% ,4
  171. set BATCHICON2=%WBATEXE% ,3
  172.  
  173.  
  174. :/ 関連付けを設定
  175. echo 関連付けを行っています...
  176.  
  177. :/ レジストリデータの削除(以前の設定の消去)と設定
  178. if WINBAT32==YES
  179.   setregstring .BTW
  180.   setregstring .BTW '%WBATEXE% "%%1" %%2 %%3 %%4 %%5 %%6 %%7 %%8 %%9'
  181. else
  182.   setregstring .BTW
  183.   setregstring .BTW "%WBATEXE% %%1 %%2 %%3 %%4 %%5 %%6 %%7 %%8 %%9"
  184. endif
  185.  
  186. :/ win.iniのExternsionsに設定
  187. writeinistring Extensions btw "%WBATEXE% ^.btw" win.ini
  188.  
  189. :/ プログラムマネージャに登録
  190. echo.
  191. echo プログラム マネージャ(スタートメニュー)にアイコンを登録しています...
  192.  
  193. :/ すでにあれば削除(するのなら有効にする)
  194. :/ ddeexecute=REAL "%SHELL%" "[DeleteGroup(WinBatchEh)]"
  195.  
  196. :/ グループを作成
  197. ddeexecute=REAL "%SHELL%" "[CreateGroup(WinBatchEh)]"
  198. ddeexecute=REAL "%SHELL%" "[ShowGroup(WinBatchEh, 1)]"
  199.  
  200. :/ アイコンがあれば削除
  201. ddeexecute=REAL "%SHELL%" "[DeleteItem(WinBatchEh)]"
  202. ddeexecute=REAL "%SHELL%" "[DeleteItem(WinBatchEh ヘルプ)]"
  203. ddeexecute=REAL "%SHELL%" "[DeleteItem(普通の サンプル)]"
  204. ddeexecute=REAL "%SHELL%" "[DeleteItem(ボタンメニュー サンプル)]"
  205. ddeexecute=REAL "%SHELL%" "[DeleteItem(電卓を使った サンプル)]"
  206. ddeexecute=REAL "%SHELL%" "[DeleteItem(全WRIファイル を印刷)]"
  207. ddeexecute=REAL "%SHELL%" "[DeleteItem(選択した全WRI ファイルを印刷)]"
  208. ddeexecute=REAL "%SHELL%" "[DeleteItem(ファイルマネージャ からドロップ)]"
  209. ddeexecute=REAL "%SHELL%" "[DeleteItem(次回の壁紙を 変更)]"
  210. ddeexecute=REAL "%SHELL%" "[DeleteItem(セーバー ビューア)]"
  211. ddeexecute=REAL "%SHELL%" "[DeleteItem(数あてゲーム)]"
  212. if %OSNAME%==WIN95 ddeexecute=REAL "%SHELL%" "[DeleteItem(WinBatchEh アンインストール)]"
  213.  
  214. :/ アイコンを追加
  215. ddeexecute=REAL "%SHELL%" "[AddItem(%WBATEXE%, WinBatchEh)]"
  216. ddeexecute=REAL "%SHELL%" "[AddItem(%WBATHLP%, WinBatchEh ヘルプ)]"
  217. ddeexecute=REAL "%SHELL%" "[AddItem(%WBATEXE% %CWD%\sample.bat, 普通の サンプル, %BATCHICON%)]"
  218. ddeexecute=REAL "%SHELL%" "[AddItem(%CWD%\menusel.btw, ボタンメニュー サンプル, %BATCHICON%)]"
  219. ddeexecute=REAL "%SHELL%" "[AddItem(%CWD%\testcalc.btw, 電卓を使った サンプル, %BATCHICON%)]"
  220. ddeexecute=REAL "%SHELL%" "[AddItem(%CWD%\prtwri1.btw, 全WRIファイル を印刷, %BATCHICON%)]"
  221. ddeexecute=REAL "%SHELL%" "[AddItem(%CWD%\prtwri2.btw, 選択した全WRI ファイルを印刷, %BATCHICON%)]"
  222. ddeexecute=REAL "%SHELL%" "[AddItem(%CWD%\dropfile.btw, ファイルマネージャ からドロップ, %BATCHICON%)]"
  223. ddeexecute=REAL "%SHELL%" "[AddItem(%CWD%\chgwallp.btw, 次回の壁紙を 変更, %BATCHICON%)]"
  224. ddeexecute=REAL "%SHELL%" "[AddItem(%CWD%\viewscr.btw, セーバー ビューア, %BATCHICON%)]"
  225. ddeexecute=REAL "%SHELL%" "[AddItem(%CWD%\gm0.btw, 数あてゲーム, %BATCHICON%)]"
  226. if %OSNAME%==WIN95 ddeexecute=REAL "%SHELL%" "[AddItem(%CWD%\00setup.btw uninstall, WinBatchEh アンインストール, %BATCHICON2%)]"
  227.  
  228.  
  229. :/ Win95ならレジストリのアンインストールに追加
  230. if %OSNAME%==WIN95
  231.   setregstring=RIGHT /N /R:HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\WinBatchEh\DisplayName" "WinBatchEh"
  232.   setregstring=RIGHT /N /R:HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\WinBatchEh\UninstallString" '%WBATEXE% "%CWD%\00setup.btw" uninstall'
  233. endif
  234.  
  235. :/ おしまい
  236. messagebox 完了しました.
  237.  
  238. goto END
  239.  
  240.  
  241. :/ -------------------------------------------------------------
  242. :/ アンインストールフェーズ(Windows95のみ動作)
  243. :/ -------------------------------------------------------------
  244. :/ Uninstall
  245. :UNINST
  246.  
  247. :/ 確認
  248. messagebox=MB_YESNO WinBatchEhのすべてのファイルと、関連付けなどの削除を行ないます
  249. if not %ERRORLEVEL%==IDYES exit
  250.  
  251. :/ 他に動いているWinBatchEhがあるか?
  252. findwnd alldsp @WinBatchEh>NUL
  253. if errorlevel 2
  254.   messagebox 現在動作中のWinBatchEhを停止させてからでなければ、アンインストールする事はできません。アンインストールを中止します。
  255.   exit
  256. endif
  257.  
  258. :/ WININIT.INI がすでにあると、うまく削除できない可能性が高いので
  259. if exist %windir%\WININIT.INI
  260.   messagebox すでに Windowsのディレクトリ[%windir%] に WININIT.INI が存在します。アンインストールを中止します。一旦マシンを再起動して、再度アンインストールを実行してください。
  261.   exit
  262. endif
  263.  
  264. nonstopmessage /Y /U /UL アンインストールの準備を行なっています...
  265.  
  266. :/ 後で RD できないことがあるので、カレントディレクトリを変更しておく
  267. cd \
  268.  
  269. :/ スタートメニューのグループの削除
  270. ddeexecute=REAL "%SHELL%" "[DeleteGroup(WinBatchEh)]"
  271.  
  272. :/ レジストリの関連付けの削除
  273. setregstring .BTW
  274.  
  275. :/ Win95ならレジストリのアンインストールの削除
  276. if %OSNAME%==WIN95
  277.   setregstring=RIGHT /R:HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\WinBatchEh"
  278. endif
  279.  
  280. :/ win.iniのExternsionsの削除
  281. writeinistring Extensions btw "" win.ini
  282.  
  283. :/ ファイルの削除
  284. :/ WINBATCH(32).EXEと、このバッチファイルは使用中なので、一旦WINDOWSの
  285. :/ ディレクトリにコピーして、WINDOWSディレクトリのWINBATCH(32).EXEと
  286. :/ このバッチで再度起動する
  287.  
  288. :/ WinBatchEhのパスと実行ファイル名を取得
  289. getcurrent=GCD_WINBATCH WBATEXE
  290.  
  291. :/ WinBatchEhの存在するパスを取得
  292. strtokfile=STF_DRV+STF_PATH+STF_SHORT WBPATH "%WBATEXE%"
  293.  
  294. :/ WINDOWSディレクトリにコピー
  295. copy "%WBATEXE%" %windir%
  296. copy "%WBPATH%\WINBATCH.INI" %windir%
  297. copy "%0" %windir%
  298.  
  299. :/ WinBatchEhの実行ファイル名だけを取得
  300. strtokfile=STF_NAME WBATEXENAME "%WBATEXE%"
  301.  
  302. :/ このバッチのファイル名だけを取得
  303. strtokfile=STF_NAME SETUPBATNAME "%0"
  304.  
  305. :/ WINDOWSディレクトリで再度起動
  306. start %windir%\%WBATEXENAME% %windir%\%SETUPBATNAME% uninstall2 "%WBPATH%"
  307.  
  308. nonstopmessage
  309.  
  310. :/ このバッチ自身は抜ける
  311. exit
  312.  
  313.  
  314. :/ -------------------------------------------------------------
  315. :/ アンインストール 第2フェーズ
  316. :/ -------------------------------------------------------------
  317. :UNINST2
  318.  
  319. nonstopmessage /Y /U /UL ファイルの削除を行なっています...
  320.  
  321. :/ 元のバッチが終了するのを待つ
  322. while 1
  323.   findwnd alldsp @WinBatchEh>NUL
  324.   if not errorlevel 2 break
  325. wend
  326.  
  327. :/ ファイルの削除
  328. :/ ディレクトリ毎、一挙に削除しても良いかも知れないが、ユーザーが作成した
  329. :/ ファイルがあるかも知れないのでファイル単位で削除する
  330.  
  331. for %%a in (00SETUP.BTW 00SETUP.BMP SAMPLE.BAT PRTWRI1.BTW PRTWRI2.BTW MENUSEL.BTW CHGWALLP.BTW TESTCALC.BTW DROPFILE.BTW DROPSUB.BTW VIEWSCR.BTW GM0.BTW STDOUT.BTW STDOUT.BAT WBATAPI.TXT WBATAPI.H WBAPISMP.C) do del /f "%2\sample\%%a"
  332.  
  333. rd "%2\sample"
  334.  
  335. for %%a in (WINBATCH.TXT WINBATCH.EXE WINBAT32.EXE WINBAT32.HLP WINBATCH.HLP WINBAT32.CNT WBDLL32.DLL WBDLL16.DLL WINBATRG.TXT WINBATHS.TXT WINBATCH.INI WINBATCH.GID WINBAT32.GID) do if exist "%2\%%a" del /f "%2\%%a"
  336.  
  337. rd "%2"
  338.  
  339. :/ WinBatchEhのパスと実行ファイル名を取得
  340. getcurrent=GCD_WINBATCH WBATEXE
  341.  
  342. :/ WININIT.INI に記述して次回起動時に、WINDOWSディレクトリにコピーした
  343. :/ ファイルを削除(Windows95のみで使用可能)
  344. :/ writeinistring コマンドでは同じエントリ(NUL)を複数書けないので
  345. :/ echo で直接書く
  346.  
  347. echo [Rename]>>%windir%\WININIT.INI
  348. echo NUL=%WBATEXE%>>%windir%\WININIT.INI
  349. echo NUL=%0>>%windir%\WININIT.INI
  350. echo NUL=%windir%\WINBATCH.INI>>%windir%\WININIT.INI
  351.  
  352. nonstopmessage
  353.  
  354. :/ おしまい
  355. messagebox 処理が終了しました。Windowsを再起動すると削除が完了します。
  356.  
  357. :END
  358.