FileZilla FTPサーバーの簡単ローカルインストール

VBSCript で FileZilla_Server-0_9_27.exe の WEBインストール
その場で実行または、ダウンロードしてから実行
何も用意する必要はありません。
必要ファイルのダウンロードと設定をその場で全て行います

インストール済みの場合は最初にアンインストーラを起動して終了します
新規インストールする場合は再びスクリプトを起動してください

1) 大きなファイルダウンロード用の http.exe をダウンロード
2) 本体ダウンロード
3) 日本語化パッチダウンロード
4) 解凍用 lhasa.exe をダウンロード
5) インストール
6) 調整
7) 日本語化パッチ解凍
8) 日本語化パッチ実行
9) ダウンロードしたファイルを削除


途中、本体インストール後にメッセージボックスが起動しますが、インストーラが
設定アプリを起動するので、その終了を待つ為に行っています。
設定アプリログイン用のパスワードを入力してアプリを終了してから
メッセージボックスを閉じて下さい。
( 他のウインドウに隠れている可能性があるので探して下さい )

↓このスクリプトで表示しています。


↓の終了を待っているので、パスワードを入力して本体を閉じてから↑のメッセージボックスを閉じて下さい


↓本体です


↓これは日本語化パッチが終了すると表示されます

インストール後のサービスの設定は「手動」です。
起動・終了はプログラムメニューにあります。

FileZilla が勝手に自動起動をレジストリに登録するので削除しています。

デフォルトの設定ファイルを
user : lightbox
pass : password
で登録しています。

FTP のディレクトリはデフォルトでテンポラリディレクトリにしています。
適宜追加・変更して下さい。

設定方法の詳細は こちら を参考にすると良いと思います
( FFFTP の日本語が化ける対処方法もあります )
001.<JOB>
002.<SCRIPT
003.    language="VBScript"
004.    src="http://homepage2.nifty.com/lightbox/laylaClass.vbs">
005.</SCRIPT>
006. 
007.<SCRIPT language=VBScript>
008.' ***********************************************************
009.' 処理開始
010.' ***********************************************************
011.Call laylaFunctionTarget( "http://homepage2.nifty.com/lightbox/" )
012.Call laylaLoadFunction( "baseFunction.vbs" )
013.Call laylaLoadFunction( "wmiReg.vbs" )
014.Call laylaLoadFunction( "wmiService.vbs" )
015.Call laylaLoadFunction( "toolFunction.vbs" )
016. 
017.Crun
018. 
019.' ***********************************************************
020.' アンインストール
021.' ***********************************************************
022.if WMIRegGetStringValue( &H80000002, "SOFTWARE\FileZilla Server", "Install_Dir", strInstallDir ) then
023.    strMessage = "既に FileZilla Server がインストールされています" & vbCrLf
024.    strMessage = strMessage & "アンイストーラを起動しますのでその後再度このスクリプトを起動して下さい"
025.    MsgOk(strMessage)
026.    RunSync2(Dd(strInstallDir & "\Uninstall.exe"))
027.    Wscript.Quit
028.end if
029. 
030.' ***********************************************************
031.' 極小ダウンローダ
032.' ***********************************************************
033.strDownloader = "http://homepage2.nifty.com/lightbox/http.exe"
034.strHttp = TempDir & "\http.exe"
035.ret = HTTPDownload( strDownloader, strHttp )
036.if not ret then
037.    Wscript.Echo ErrorMessage
038.    Wscript.Quit
039.end if
040.print "極小ダウンローダをダウンロードしました"
041. 
042.' ***********************************************************
043.' FileZilla サーバー
044.' ***********************************************************
045.strDownloadPlace = "http://downloads.sourceforge.net/filezilla/FileZilla_Server-0_9_27.exe"
046.RunSync2(Dd(strHttp) & " " & strDownloadPlace & " " & Dd(TempDir & "\FileZilla_Server-0_9_27.exe") )
047.print "FileZilla サーバーをダウンロードしました"
048.' ***********************************************************
049.' FileZilla サーバー( 日本語化 )
050.' ***********************************************************
051.strDownloadPlace = "http://www.aconus.com/~oyaji/download/FileZilla_Server-0.9.27jp.lzh"
052.RunSync2(Dd(strHttp) & " " & strDownloadPlace & " " & Dd(TempDir & "\FileZilla_Server-0.9.27jp.lzh") )
053.print "FileZilla サーバー( 日本語化 )をダウンロードしました"
054.' ***********************************************************
055.' lhasa
056.' ***********************************************************
057.strDownloadPlace = "http://homepage2.nifty.com/lightbox/Lhasa.exe"
058.RunSync2(Dd(strHttp) & " " & strDownloadPlace & " " & Dd(TempDir & "\Lhasa.exe") )
059.print "lhasa をダウンロードしました"
060.RunSync2(Dd(TempDir & "\Lhasa.exe") & " -d- -a -q -f -e- " & Dd(TempDir & "\FileZilla_Server-0.9.27jp.lzh") )
061.print "FileZilla サーバー( 日本語化 )を解凍しました"
062. 
063.' ***********************************************************
064.' FileZilla サーバーをインストール
065.' ***********************************************************
066.RunSync2(Dd(TempDir & "\FileZilla_Server-0_9_27.exe"))
067. 
068. 
069.' ***********************************************************
070.' インストールの確認
071.' ***********************************************************
072.if not WMIRegGetStringValue( &H80000002, "SOFTWARE\FileZilla Server", "Install_Dir", strInstallDir ) then
073.    print ErrorMessage
074.    Wscript.Quit
075.end if
076.print strInstallDir
077.print "FileZilla サーバーのインストールが完了しました"
078. 
079.' ***********************************************************
080.' サービス用の設定ファイル作成
081.' ***********************************************************
082.TargetPath = strInstallDir & "\FileZilla Server.xml"
083.Call PutTextFile( TargetPath, Replace( GetInline( "FileZilla" ), "$DIR", TempDir ) )
084. 
085.' ***********************************************************
086.' サービスを手動に変更
087.' ***********************************************************
088.strService = "FileZilla Server"
089.Call WMIChangeStartMode( strService, 1 )
090.print "サービスを手動に変更しました"
091.WMIStopService( strService )
092.Wscript.Sleep(1000)
093.WMIStartService( strService )
094.print "サービスを再起動しました"
095. 
096.' ***********************************************************
097.' 自動起動を削除
098.' ***********************************************************
099.Call WMIRegDeleteValue( &H80000002, "SOFTWARE\Microsoft\Windows\CurrentVersion\Run", "FileZilla Server Interface" )
100.print "レジストリから自動起動を削除しました"
101. 
102.' ***********************************************************
103.' 日本語化ファイルをコピー
104.' ***********************************************************
105.GetFso
106.strFrom = TempDir & "\FileZilla_Server-0.9.27jp\FileZilla_Server-0.9.27jp.exe"
107.strTo = strInstallDir & "\FileZilla_Server-0.9.27jp.exe"
108.print strFrom
109.print strTo
110.Call Fso.CopyFile( strFrom, strTo , True )
111.print "日本語化ファイルをインストールディレクトリにコピーしました"
112. 
113.MsgOk("FileZilla Server Interface を終了させて下さい   ")
114. 
115.RunSync2(Dd(strTo))
116. 
117.' ***********************************************************
118.' テンポラリ削除
119.' ***********************************************************
120.Call Fso.DeleteFolder( TempDir & "\FileZilla_Server-0.9.27jp" )
121.Call Fso.DeleteFile( TempDir & "\http.exe" )
122.Call Fso.DeleteFile( TempDir & "\FileZilla_Server-0_9_27.exe" )
123.Call Fso.DeleteFile( TempDir & "\FileZilla_Server-0.9.27jp.lzh" )
124.Call Fso.DeleteFile( TempDir & "\Lhasa.exe" )
125. 
126. 
127.print "処理が終了しました"
128. 
129.</SCRIPT>
130. 
131.<RESOURCE id="FileZilla">
132.<![CDATA[
133.<FileZillaServer>
134.<Settings>
135.<Item name="Admin port" type="numeric">14147</Item>
136.</Settings>
137.<Groups/>
138.<Users>
139.<User Name="lightbox">
140.<Option Name="Pass">5f4dcc3b5aa765d61d8327deb882cf99</Option>
141.<Option Name="Group"/>
142.<Option Name="Bypass server userlimit">0</Option>
143.<Option Name="User Limit">0</Option>
144.<Option Name="IP Limit">0</Option>
145.<Option Name="Enabled">1</Option>
146.<Option Name="Comments"/>
147.<Option Name="ForceSsl">0</Option>
148.<IpFilter>
149.<Disallowed/>
150.<Allowed/>
151.</IpFilter>
152.<Permissions>
153.<Permission Dir="$DIR">
154.<Option Name="FileRead">1</Option>
155.<Option Name="FileWrite">1</Option>
156.<Option Name="FileDelete">1</Option>
157.<Option Name="FileAppend">0</Option>
158.<Option Name="DirCreate">1</Option>
159.<Option Name="DirDelete">1</Option>
160.<Option Name="DirList">1</Option>
161.<Option Name="DirSubdirs">1</Option>
162.<Option Name="IsHome">1</Option>
163.<Option Name="AutoCreate">0</Option>
164.</Permission>
165.</Permissions>
166.<SpeedLimits DlType="0" DlLimit="10" ServerDlLimitBypass="0" UlType="0" UlLimit="10" ServerUlLimitBypass="0">
167.<Download/>
168.<Upload/>
169.</SpeedLimits>
170.</User>
171.</Users>
172.</FileZillaServer>
173.]]>
174.</RESOURCE>
175. 
176.</JOB>
※ 使用している関数は WEB 上にあるライブラリを使用しています。
( インターネットに繋がっておれば、どこからでも利用可能です。)

このスクリプトはどのように起動してもコマンドプロンプトになるように作られています

極小ダウンローダ( http.exe )のダウンロードには、Msxml2.ServerXMLHTTP を使っていますが、
http.exe は、API(URLDownloadToFile) を使った 1 行のコンソールアプリです。
01.#include "stdafx.h"
02.#include <windows.h>
03.#include <urlmon.h>
04. 
05.#pragma comment( lib, "urlmon.lib" )
06. 
07.int _tmain(int argc, _TCHAR* argv[])
08.{
09.    URLDownloadToFile(NULL, argv[1], argv[2], 0, NULL);
10.    return 0;
11.}
12.</urlmon.h></windows.h>
WEB に置いているものには使用していませんが、試しに EXE の圧縮を行ってみました。
80% で、4608k までにはなっていますが、元々の大きさから言えば HTML ページのほうがはるかに大きいので特に圧縮する必要はありません。