rcmdnk's blog

[改訂版] VBScriptポケットリファレンス (POCKET REFERENCE)

Windowsでプログラムをインストールする時、インストーラーが付いてないと ダウンロードしてから適当なフォルダに置いたり、 さらにスタートメニューにも出したい場合には手作業でフォルダを用意したりしないと いけないわけですが、 そのようなプログラムを簡単にスタートメニューとかに設置するスクリプトの紹介。

インストーラー

こんな感じのインストールスクリプトを使います。

install.vbs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
' Set basic objects
Set wssh = WScript.CreateObject("WScript.Shell")
Set fs = WScript.CreateObject("Scripting.FileSystemObject")
Set nw = WScript.CreateObject("WScript.Network")
Set sh = CreateObject("Shell.Application")

' Basic Values
progFiles = "C:\Program Files"
startMenu = wssh.SpecialFolders("AllUsersPrograms")
defRoot = "C:\Users\" & nw.UserName & "\Downloads"

' Pathes
sName = Wscript.ScriptName
pPath = ""
pName = ""

' Set Folder to install
Set objFolder = sh.BrowseForFolder(0, "Choose Program Folder to be installed.", 1, defRoot)

' Check Folder
If objFolder is Nothing then
  WScript.Quit
Else
  pPath = objFolder.Items.Item.Path
  pName = objFolder.Items.Item.Name
End If

If Not fs.FolderExists(pPath) then
  MsgBox pPath & " is not found!",,sName
  WScript.Quit
End If

If fs.FolderExists(progFiles & "\" & pName) then
  MsgBox pName & " is already installed in " & progFiles & ".",,sName
  WScript.Quit
End If
If fs.FolderExists(startMenu & "\" & pName) then
  MsgBox pName & " exists in " & startMenu & ", but not in " & progFiles & ", please check.",,sName
  WScript.Quit
End If

' Copy Folder to progFiles
fs.CopyFolder pPath,progFiles & "\" & pName

' Make symbolic links to startMenu
Set objExec = wssh.Exec("cmd /C mklink /D """ & startMenu & "\" & pName & """ """ _
              & progFiles & "\" & pName & """")

Do Until objExec.StdErr.AtEndOfStream
  strLine = objExec.StdErr.ReadLine
  MsgBox strLine
Loop

最新版: install.vbs (メッセージが日本語なのといくつかデバッグ用コメントあり)

デフォルトでは、ユーザーフォルダ直下のDownloadsフォルダを 最初にプログラムを探しに行き、 インストール先はC:\Program\ Files下で、 さらにAllUsers用のスタートメニューにリンクを追加します。 (ダウンロードフォルダやインストール先を変えたい場合は上のprogFiles等の 値を適時変更)

このスクリプトをinstall.vbsというファイルでデスクトップに置いておいたり、 MagicFormation等のランチャーに追加しておきます。

使い方はこのスクリプトを起動(ダブルクリックなどで)すると

こんな感じでダウンロードフォルダからプログラムのフォルダを選ぶような 状態になります。

zipファイルなどで配布されてるプログラムは展開するとフォルダにまとまってると思いますが、 そうでない場合などはわかりやすい名前のフォルダを作ってその中に 必要なファイル群を入れておきます。

ここで、フォルダを選んでOKを押してあげれば、 C:\Program\ Files下にそのフォルダのコピーを作り、 さらにAllUsers用のスタートメニューにそこからシンボリックリンクを張ります。

通常のプログラムだと、スタートメニューにフォルダを作って、 その中に必要なファイルだけリンクを作るような形ですが、 このスクリプトではフォルダごとリンクを作ります。

これで、スタートメニューにもプログラムが登録されて 起動できる様になります。(ダウンロードフォルダにあるものはもう消しても大丈夫。)

uninstall.vbs

一応アンインストール用のスクリプトも。

こんなかんじで、これもinstall.vbs同様、uninstall.vbsと 言うファイルで保存してダブルクリックしたりランチャーから呼んだりします。

最新版: uninstall.vbs

このスクリプトが行う事も単純で、 C:\Program\ Filesからフォルダを選んで、 それを削除し、それと同じ名前のフォルダを AllUsers用のスタートメニューから削除します。

自身のアンインストーラーを持ってるプログラムでもなんでもかんでも消せてしまうので 気をつけて下さい。 他の場所に作った設定ファイルだとかを削除する必要があるので、 アンインストーラーを持ってるものはそちらで削除したほうが良いです。

まとめ

だいぶ前にVBScriptもよく知らないまま書いた物なので 構文とかおかしいかもしれませんが、取り敢えずXP、Vista、7と 問題なく動いています (やってることはコピーとかだけなのでパスさえきちんと取れれば問題は出ないはず)。

こういったインストーラーが付いてないものもChocolatey でインストール出来るっぽいので、 インストールファイルの書き方覚えてそちらに移行できればより簡単に 出来る様になるかと。

Sponsored Links
Sponsored Links

« Mac OS X 10.9 MavericksでGimpでファイルを保存したりするときに文字が打てない問題の解消法 BrewallにGitHubでリストファイルを管理する機能を付けた »

}