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 の日本語が化ける対処方法もあります )
<JOB>
<SCRIPT
	language="VBScript"
	src="http://homepage2.nifty.com/lightbox/laylaClass.vbs">
</SCRIPT>

<SCRIPT language=VBScript>
' ***********************************************************
' 処理開始
' ***********************************************************
Call laylaFunctionTarget( "http://homepage2.nifty.com/lightbox/" )
Call laylaLoadFunction( "baseFunction.vbs" )
Call laylaLoadFunction( "wmiReg.vbs" )
Call laylaLoadFunction( "wmiService.vbs" )
Call laylaLoadFunction( "toolFunction.vbs" )

Crun

' ***********************************************************
' アンインストール
' ***********************************************************
if WMIRegGetStringValue( &H80000002, "SOFTWARE\FileZilla Server", "Install_Dir", strInstallDir ) then
	strMessage = "既に FileZilla Server がインストールされています" & vbCrLf
	strMessage = strMessage & "アンイストーラを起動しますのでその後再度このスクリプトを起動して下さい"
	MsgOk(strMessage)
	RunSync2(Dd(strInstallDir & "\Uninstall.exe"))
	Wscript.Quit
end if

' ***********************************************************
' 極小ダウンローダ
' ***********************************************************
strDownloader = "http://homepage2.nifty.com/lightbox/http.exe"
strHttp = TempDir & "\http.exe"
ret = HTTPDownload( strDownloader, strHttp )
if not ret then
	Wscript.Echo ErrorMessage
	Wscript.Quit
end if
print "極小ダウンローダをダウンロードしました"

' ***********************************************************
' FileZilla サーバー
' ***********************************************************
strDownloadPlace = "http://downloads.sourceforge.net/filezilla/FileZilla_Server-0_9_27.exe"
RunSync2(Dd(strHttp) & " " & strDownloadPlace & " " & Dd(TempDir & "\FileZilla_Server-0_9_27.exe") )
print "FileZilla サーバーをダウンロードしました"
' ***********************************************************
' FileZilla サーバー( 日本語化 )
' ***********************************************************
strDownloadPlace = "http://www.aconus.com/~oyaji/download/FileZilla_Server-0.9.27jp.lzh"
RunSync2(Dd(strHttp) & " " & strDownloadPlace & " " & Dd(TempDir & "\FileZilla_Server-0.9.27jp.lzh") )
print "FileZilla サーバー( 日本語化 )をダウンロードしました"
' ***********************************************************
' lhasa
' ***********************************************************
strDownloadPlace = "http://homepage2.nifty.com/lightbox/Lhasa.exe"
RunSync2(Dd(strHttp) & " " & strDownloadPlace & " " & Dd(TempDir & "\Lhasa.exe") )
print "lhasa をダウンロードしました"
RunSync2(Dd(TempDir & "\Lhasa.exe") & " -d- -a -q -f -e- " & Dd(TempDir & "\FileZilla_Server-0.9.27jp.lzh") )
print "FileZilla サーバー( 日本語化 )を解凍しました"

' ***********************************************************
' FileZilla サーバーをインストール
' ***********************************************************
RunSync2(Dd(TempDir & "\FileZilla_Server-0_9_27.exe"))


' ***********************************************************
' インストールの確認
' ***********************************************************
if not WMIRegGetStringValue( &H80000002, "SOFTWARE\FileZilla Server", "Install_Dir", strInstallDir ) then
	print ErrorMessage
	Wscript.Quit
end if
print strInstallDir
print "FileZilla サーバーのインストールが完了しました"

' ***********************************************************
' サービス用の設定ファイル作成
' ***********************************************************
TargetPath = strInstallDir & "\FileZilla Server.xml"
Call PutTextFile( TargetPath, Replace( GetInline( "FileZilla" ), "$DIR", TempDir ) )

' ***********************************************************
' サービスを手動に変更
' ***********************************************************
strService = "FileZilla Server"
Call WMIChangeStartMode( strService, 1 )
print "サービスを手動に変更しました"
WMIStopService( strService )
Wscript.Sleep(1000) 
WMIStartService( strService )
print "サービスを再起動しました"

' ***********************************************************
' 自動起動を削除
' ***********************************************************
Call WMIRegDeleteValue( &H80000002, "SOFTWARE\Microsoft\Windows\CurrentVersion\Run", "FileZilla Server Interface" )
print "レジストリから自動起動を削除しました"

' ***********************************************************
' 日本語化ファイルをコピー
' ***********************************************************
GetFso
strFrom = TempDir & "\FileZilla_Server-0.9.27jp\FileZilla_Server-0.9.27jp.exe"
strTo = strInstallDir & "\FileZilla_Server-0.9.27jp.exe"
print strFrom
print strTo
Call Fso.CopyFile( strFrom, strTo , True )
print "日本語化ファイルをインストールディレクトリにコピーしました"

MsgOk("FileZilla Server Interface を終了させて下さい   ")

RunSync2(Dd(strTo))

' ***********************************************************
' テンポラリ削除
' ***********************************************************
Call Fso.DeleteFolder( TempDir & "\FileZilla_Server-0.9.27jp" )
Call Fso.DeleteFile( TempDir & "\http.exe" )
Call Fso.DeleteFile( TempDir & "\FileZilla_Server-0_9_27.exe" )
Call Fso.DeleteFile( TempDir & "\FileZilla_Server-0.9.27jp.lzh" )
Call Fso.DeleteFile( TempDir & "\Lhasa.exe" )


print "処理が終了しました"

</SCRIPT>

<RESOURCE id="FileZilla">
<![CDATA[
<FileZillaServer>
<Settings>
<Item name="Admin port" type="numeric">14147</Item>
</Settings>
<Groups/>
<Users>
<User Name="lightbox">
<Option Name="Pass">5f4dcc3b5aa765d61d8327deb882cf99</Option>
<Option Name="Group"/>
<Option Name="Bypass server userlimit">0</Option>
<Option Name="User Limit">0</Option>
<Option Name="IP Limit">0</Option>
<Option Name="Enabled">1</Option>
<Option Name="Comments"/>
<Option Name="ForceSsl">0</Option>
<IpFilter>
<Disallowed/>
<Allowed/>
</IpFilter>
<Permissions>
<Permission Dir="$DIR">
<Option Name="FileRead">1</Option>
<Option Name="FileWrite">1</Option>
<Option Name="FileDelete">1</Option>
<Option Name="FileAppend">0</Option>
<Option Name="DirCreate">1</Option>
<Option Name="DirDelete">1</Option>
<Option Name="DirList">1</Option>
<Option Name="DirSubdirs">1</Option>
<Option Name="IsHome">1</Option>
<Option Name="AutoCreate">0</Option>
</Permission>
</Permissions>
<SpeedLimits DlType="0" DlLimit="10" ServerDlLimitBypass="0" UlType="0" UlLimit="10" ServerUlLimitBypass="0">
<Download/>
<Upload/>
</SpeedLimits>
</User>
</Users>
</FileZillaServer>
]]>
</RESOURCE>

</JOB>
※ 使用している関数は WEB 上にあるライブラリを使用しています。
( インターネットに繋がっておれば、どこからでも利用可能です。)

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

極小ダウンローダ( http.exe )のダウンロードには、Msxml2.ServerXMLHTTP を使っていますが、
http.exe は、API(URLDownloadToFile) を使った 1 行のコンソールアプリです。
#include "stdafx.h"
#include 
#include 

#pragma comment( lib, "urlmon.lib" )

int _tmain(int argc, _TCHAR* argv[])
{
	URLDownloadToFile(NULL, argv[1], argv[2], 0, NULL);
	return 0;
}
WEB に置いているものには使用していませんが、試しに EXE の圧縮を行ってみました。
80% で、4608k までにはなっていますが、元々の大きさから言えば HTML ページのほうがはるかに大きいので特に圧縮する必要はありません。