'Copyright (C) 2006 NTT DATA Corporation.

'This program is free software; you can redistribute it and/or
'Modify it under the terms of the GNU General Public License
'as published by the Free Software Foundation, version 2.
'
'This program is distributed in the hope that it will be useful,
'but WITHOUT ANY WARRANTY; without even the implied warranty of
'MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
'GNU General Public License for more details

'         運用管理ソフトウェア Hinemos エージェント for Windows  
'                                        インストーラ   Ver 2.1
'                                                    2006/10/20


Dim objWshShell          ' WshShell オブジェクト
Dim objFSO               ' FileSystem オブジェクト
Dim objExec              ' コマンド実行オブジェクト
Dim regEx                ' 文字列置換用のオブジェクト
Dim strHinemosAgentSrc   ' Hinemosエージェントのsrcフォルダ
Dim strCmdLine           ' 実行するコマンド
Dim strCopyFolderAgent   ' エージェントコピー先フォルダ名
Dim strCopyFileSyslog    ' NTSyslogコピー対象ファイル
Dim strCopyFolderSyslog  ' NTSyslogコピー先フォルダ名
Dim strInstallFolderJRE  ' JREインストール先フォルダ
Dim strMsg               ' メッセージの確認
Dim strIP                ' マネージャのIPアドレス
Dim propertyFile         ' Agent.Propertiesファイル
Dim pf                   ' Textストリームオブジェクト


' インストール開始の確認
strMsg = MsgBox("Hinemosエージェントのインストールを開始します" & vbCrLf & "よろしいですか？", vbYesNo + vbQuestion, "Hinemosエージェントのインストール")
If strMsg = vbNo Then
    AbortInstall()
End If

' Shellオブジェクトの生成
Set objWshShell = WScript.CreateObject("WScript.Shell")

' FileSystemオブジェクトの生成
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")

' エージェントインストール先のフォルダを指定
strCopyFolderAgent = "C:\hinemos_agent"
ErrorDescript(Err)

' JREインストール先のフォルダを指定
strInstallFolderJRE = "C:\Program Files\Java\jre1.5.0_09"
ErrorDescript(Err)

' hinemos_agentフォルダが存在しないときは作成する
If objFSO.FolderExists(strCopyFolderAgent) = True Then
    strMsg = MsgBox ("C:\hinemos_agentフォルダは既に存在します" & vbCrLf & "上書きしてもよろしいですか？", vbYesNo + vbQuestion, "Hinemosエージェントのインストール")
    If strMsg = vbNo Then
        AbortInstall()
    End If
Else
    objFSO.CreateFolder(strCopyFolderAgent)
End If

' JREインストーラを実行
strCmdLine = objWshShell.CurrentDirectory & "\bin\jre-1_5_0_09-windows-i586-p.exe"
set objExec = objWshShell.Exec(strCmdLine)
ErrorDescript(Err)

' JREインストーラが終了するまで待つ
Do While objExec.Status = 0
    WScript.Sleep 100
Loop

' インストールダイアログの表示
strMsg = MsgBox ("Hinemosエージェントをインストールしています", vbQuestion, "Hinemosエージェントのインストール")

' カレントフォルダのパスを取得
strHinemosAgentSrc = objWshShell.CurrentDirectory

' Hinemosエージェントのsrcフォルダのパスを取得
strHinemosAgentSrc = strHinemosAgentSrc & "\src\"

' ファイルのコピー元とコピー先を指定
strCopyFileSyslog = strHinemosAgentSrc & "ntsyslog-1.13\ntsyslog*.exe"
strCopyFolderSyslog = "C:\WINDOWS\system32"
If Err.Number = 0 Then
    ' NTSyslogをコピー
    objFSO.CopyFile strCopyFileSyslog, strCopyFolderSyslog, True
    ErrorDescript(Err)
Else
    WScript.Echo "エラー: " & Err.Description
End If

' NTSyslogのインストール
strCmdLine = "cmd.exe /C ntsyslog -install"
objWshShell.Exec(strCmdLine)
ErrorDescript(Err)

' 既存のファイルの読み取り属性を解除
Set objFolder = objFSO.GetFolder(strCopyFolderAgent)
TurnOffReadOnly(objFolder)
ErrorDescript(Err)

' strCopyFolderAgentへファイルのコピー
objFSO.CopyFolder objWshShell.CurrentDirectory & "\*", strCopyFolderAgent, True
ErrorDescript(Err)

' srcフォルダの削除
objFSO.DeleteFolder strCopyFolderAgent & "\src", True
ErrorDescript(Err)

' sbinフォルダの作成
  If objFSO.FolderExists(strCopyFolderAgent & "\sbin") = True Then
Else
    objFSO.CreateFolder(strCopyFolderAgent & "\sbin")
    ErrorDescript(Err)
End If

' sbinフォルダへ agent_uninstaller.vbs のコピー
objFSO.CopyFile objWshShell.CurrentDirectory & "\agent_uninstaller*", strCopyFolderAgent & "\sbin", True
ErrorDescript(Err)

' README のコピー
objFSO.CopyFile objWshShell.CurrentDirectory & "\README*", strCopyFolderAgent , True
ErrorDescript(Err)

' LICENCE のコピー
objFSO.CopyFile objWshShell.CurrentDirectory & "\LICENSE*", strCopyFolderAgent , True
ErrorDescript(Err)

' _version のコピー
objFSO.CopyFile objWshShell.CurrentDirectory & "\_version*", strCopyFolderAgent , True
ErrorDescript(Err)

' JREインストーラの削除
objFSO.DeleteFile strCopyFolderAgent & "\bin\jre-1_5_0_09-windows-i586-p.exe*", True
ErrorDescript(Err)

' インストールしたJREをコピー
objFSO.CopyFile strInstallFolderJRE & "\*", strCopyFolderAgent & "\jre-1.5.0\", True
ErrorDescript(Err)

objFSO.CopyFolder strInstallFolderJRE & "\*", strCopyFolderAgent & "\jre-1.5.0\", True
ErrorDescript(Err)

' Agent.PropertiesにマネージャのIPアドレスを記入
strIP = InputBox("マネージャのIPアドレスを入力してください", "Hinemosエージェントのインストール")
' strMsg = MsgBox ("マネージャのIPアドレスは" & vbCrLf & strIP & " でよろしいですか？", vbYesNo + vbQuestion, "Hinemosエージェントのインストール")
Set propertyFile = objFSO.GetFile("C:\hinemos_agent\lib\agent\Agent.properties")
Set pf = propertyFile.OpenAsTextStream(8, 0)
pf.Write("java.naming.provider.url=jnp://" & strIP & ":1099")
ErrorDescript(Err)
pf.close
ErrorDescript(Err)

strTmp = MsgBox ("Hinemosエージェントをインストールしました", vbInformation, "Hinemosエージェントのインストール")
    
Set pf = Nothing
Set propertyFile = Nothing
Set objFSO = Nothing
Set regEx = Nothing
Set objFolder = Nothing
Set objWshShell = Nothing

' フォルダのreadonly属性を再帰的に解除
Sub TurnOffReadOnly(objFolder)
    ' フォルダ自体のreadonly属性を解除
    objFolder.Attributes = 0
    ' 直下のファイルのreadonly属性を解除
    For Each objFile In objFolder.Files
    objFile.Attributes = 0
    Next
    ' 再帰的にサブフォルダのreadonly属性を解除
    For Each objSubFolder In objFolder.SubFolders
        TurnOffReadOnly(objSubFolder)
    Next
End Sub

' エラーハンドリング
Sub ErrorDescript(Err)
    If Err.Number <> 0 Then
        WScript.Echo "エラー: " & Err.Description
    End If
End Sub

' インストールの中止
Sub AbortInstall()
    strMsg = MsgBox ("Hinemosエージェントのインストールを終了します", vbInformation, "Hinemosエージェントのインストール")
    WScript.Quit
End Sub


