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
でインストール出来るっぽいので、
インストールファイルの書き方覚えてそちらに移行できればより簡単に
出来る様になるかと。