--- trunk/installer/teraterm.iss 2010/08/01 00:06:19 3961 +++ trunk/installer/teraterm.iss 2011/03/03 11:17:20 4355 @@ -1,6 +1,6 @@ #define AppName "Tera Term" -#define AppVer "4.66" -#define snapshot GetDateTimeString('yyyymmdd_hhnnss', '', ''); +#define AppVer "4.69-RC3" +;#define snapshot GetDateTimeString('yyyymmdd_hhnnss', '', ''); [Setup] AppCopyright=TeraTerm Project @@ -16,7 +16,7 @@ ShowLanguageDialog=yes AllowNoIcons=true UninstallDisplayIcon={app}\ttermpro.exe -AppMutex=TeraTermProAppMutex, TeraTermProMacroAppMutex, TeraTermProKeycodeAppMutex, TeraTermMenuAppMutex, CygTermAppMutex +;AppMutex=TeraTermProAppMutex, TeraTermProMacroAppMutex, TeraTermProKeycodeAppMutex, TeraTermMenuAppMutex, CygTermAppMutex, Global\TeraTermProAppMutex, Global\TeraTermProMacroAppMutex, Global\TeraTermProKeycodeAppMutex, Global\TeraTermMenuAppMutex, Global\CygTermAppMutex #ifndef snapshot OutputBaseFilename=teraterm-{#AppVer} #else @@ -64,6 +64,7 @@ Source: release\screencapture.ttl; DestDir: {app}; Components: TeraTerm Source: release\ssh2login.ttl; DestDir: {app}; Components: TeraTerm Source: release\wait_regex.ttl; DestDir: {app}; Components: TeraTerm +Source: release\lang\Default.lng; DestDir: {app}\lang; Components: TeraTerm; Flags: onlyifdoesntexist uninsneveruninstall; Permissions: authusers-modify Source: release\lang\Japanese.lng; DestDir: {app}\lang; Components: TeraTerm; Attribs: readonly; Flags: uninsremovereadonly overwritereadonly Source: release\lang\German.lng; DestDir: {app}\lang; Components: TeraTerm; Attribs: readonly; Flags: uninsremovereadonly overwritereadonly Source: release\lang\French.lng; DestDir: {app}\lang; Components: TeraTerm; Attribs: readonly; Flags: uninsremovereadonly overwritereadonly @@ -73,7 +74,7 @@ Source: ..\cygterm\cygterm.cfg; DestDir: {app}; Components: cygterm; Flags: onlyifdoesntexist uninsneveruninstall; Permissions: authusers-modify Source: ..\cygterm\cyglaunch.exe; DestDir: {app}; Components: cygterm Source: ..\cygterm\cygterm+.tar.gz; DestDir: {app}; Components: cygterm -Source: ..\libs\logmett\Setup_LogMeTT_2_9_7.exe; DestDir: {tmp}; Components: LogMeTT; Flags: deleteafterinstall +Source: ..\libs\logmett\Setup_LogMeTT_2_9_8_1.exe; DestDir: {tmp}; Components: LogMeTT; Flags: deleteafterinstall Source: ..\libs\logmett\Setup_TTLEditor_1_2_1.exe; DestDir: {tmp}; Components: TTLEdit; Flags: deleteafterinstall Source: ..\ttpmenu\Release\ttpmenu.exe; DestDir: {app}; Components: TeraTerm_Menu; Flags: ignoreversion Source: release\ttmenu_readme-j.txt; DestDir: {app}; Components: TeraTerm_Menu @@ -207,7 +208,7 @@ [Run] Filename: {app}\ttermpro.exe; Flags: nowait postinstall skipifsilent unchecked; Description: {cm:launch_teraterm}; Components: TeraTerm -Filename: {tmp}\Setup_LogMeTT_2_9_7.exe; Components: LogMeTT +Filename: {tmp}\Setup_LogMeTT_2_9_8_1.exe; Components: LogMeTT Filename: {tmp}\Setup_TTLEditor_1_2_1.exe; Components: TTLEdit Filename: {app}\ttpmenu.exe; Flags: nowait postinstall skipifsilent unchecked; Description: {cm:launch_ttmenu}; Components: TeraTerm_Menu Filename: {app}\Collector\Collector.exe; Flags: nowait postinstall skipifsilent unchecked; Description: {cm:launch_collector}; Components: Collector @@ -281,6 +282,8 @@ ja.comp_TTXAlwaysOnTop=常に最前面に表示できるようにする en.comp_TTXRecurringCommand=Recurring Command can be used ja.comp_TTXRecurringCommand=定期的に文字列を送信する +en.msg_AppRunningError=Setup has detected that Tera Term is currently running.%n%nPlease close all instances of it now, then click Next to continue. +ja.msg_AppRunningError=セットアップは実行中の Tera Term を検出しました。%n%n開いているアプリケーションをすべて閉じてから「次へ」をクリックしてください。 [Code] const @@ -356,6 +359,73 @@ end; } +function CheckAppUsing(Filename:String) : integer; +var + TmpFileName : String; +begin + if FileExists(FileName) then + begin + TmpFileName := FileName + '.' + GetDateTimeString('yyyymmddhhnnss', #0, #0); // Tmp file ends with timestamp + if FileCopy(FileName, TmpFileName, True) then + if DeleteFile(FileName) then + if RenameFile(TmpFileName, FileName) then + Result := 0 + else + Result := -1 // permission? + else + begin + Result := 1; // failed to delete + DeleteFile(TmpFileName); + end + else + Result := -1 // permission? + end + else + Result := 0; +end; + +function CheckAppsUsing() : integer; +var + FileDir : String; + FileName : array[0..6] of String; + i : integer; + flag : boolean; +begin + FileDir := ExpandConstant('{app}'); + FileName[0] := FileDir + '\ttermpro.exe'; + FileName[1] := FileDir + '\ttpmacro.exe'; + FileName[2] := FileDir + '\keycode.exe'; + FileName[3] := FileDir + '\ttpmenu.exe'; + FileName[4] := FileDir + '\cygterm.exe'; + FileName[5] := FileDir + '\Collector.exe'; + FileName[6] := FileDir + '\Collector_org.exe'; + + flag := True; + for i := 0 to 6 do + begin + if flag = True then + begin + case CheckAppUsing(FileName[i]) of + 1: + // failed to delete. in use. + begin + Result := 1; + flag := False; + end; + -1: + // failed to copy/rename + begin + Result := -1; + flag := False; + end; + else + // OK + end; + end; + end; + +end; + function GetDefaultIniFilename : String; begin Result := ExpandConstant('{app}') + '\TERATERM.INI'; @@ -363,21 +433,24 @@ procedure SetIniFile(iniFile: String); var - Language : String; - Locale : String; - CodePage : integer; - VTFont : String; - TEKFont : String; - FileDir : String; - TCPPort : integer; + Language : String; + Locale : String; + CodePage : integer; + VTFont : String; + TEKFont : String; + FileDir : String; + TCPPort : integer; + ViewlogEditor : String; begin - Language := GetIniString('Tera Term', 'Language', '', iniFile); - Locale := GetIniString('Tera Term', 'Locale', '', iniFile); - CodePage := GetIniInt('Tera Term', 'CodePage', 0, 0, 0, iniFile); - VTFont := GetIniString('Tera Term', 'VTFont', '', iniFile); - TEKFont := GetIniString('Tera Term', 'TEKFont', '', iniFile); - FileDir := GetIniString('Tera Term', 'FileDir', '', iniFile); + Language := GetIniString('Tera Term', 'Language', '', iniFile); + Locale := GetIniString('Tera Term', 'Locale', '', iniFile); + CodePage := GetIniInt('Tera Term', 'CodePage', 0, 0, 0, iniFile); + VTFont := GetIniString('Tera Term', 'VTFont', '', iniFile); + TEKFont := GetIniString('Tera Term', 'TEKFont', '', iniFile); + FileDir := GetIniString('Tera Term', 'FileDir', '', iniFile); + FileDir := GetIniString('Tera Term', 'FileDir', '', iniFile); + ViewlogEditor := GetIniString('Tera Term', 'ViewlogEditor', '', iniFile); case GetUILanguage and $3FF of $04: // Chinese @@ -470,7 +543,7 @@ 3: SetIniString('Tera Term', 'UILanguageFile', 'lang\French.lng', iniFile); else - SetIniString('Tera Term', 'UILanguageFile', 'lang\English.lng', iniFile); + SetIniString('Tera Term', 'UILanguageFile', 'lang\Default.lng', iniFile); end; if Length(FileDir) = 0 then begin @@ -485,6 +558,11 @@ SetIniInt('Tera Term', 'TCPPort', 23, iniFile); end; + if ViewlogEditor = 'notepad.exe' then begin + ViewlogEditor := ExpandConstant('{win}') + '\' + 'notepad.exe'; + SetIniString('Tera Term', 'ViewlogEditor', ViewlogEditor, iniFile); + end; + end; procedure InitializeWizard; @@ -515,6 +593,7 @@ case ActiveLanguage of 'ja': UILangFilePage.SelectedValueIndex := 1; + // 他の言語は最新版に追従していないので、日本語だけ特別扱い else UILangFilePage.SelectedValueIndex := 0; end; @@ -527,6 +606,8 @@ ResultCode: Integer; iniFile : String; begin + Result := True; + case CurPageID of wpWelcome: @@ -560,22 +641,37 @@ end; + wpSelectDir: + begin + + ResultCode := CheckAppsUsing(); + if ResultCode = 1 then + begin + MsgBox(CustomMessage('msg_AppRunningError'), mbError, MB_OK); + Result := False; + end; + // if -1, goto next. turn over to Inno Setup. + + end; + wpSelectComponents: begin - iniFile := GetIniString('Tera Term', 'UILanguageFile', '', GetDefaultIniFilename()); - if iniFile = 'lang\Japanese.lng' then - UILangFilePage.SelectedValueIndex := 1 - else if iniFile = 'lang\German.lng' then - UILangFilePage.SelectedValueIndex := 2 - else if iniFile = 'lang\French.lng' then - UILangFilePage.SelectedValueIndex := 3 - else - UILangFilePage.SelectedValueIndex := 0; + if FileExists(GetDefaultIniFileName()) then + begin + iniFile := Lowercase(GetIniString('Tera Term', 'UILanguageFile', '', GetDefaultIniFilename())); + if iniFile = 'lang\japanese.lng' then + UILangFilePage.SelectedValueIndex := 1 + else if iniFile = 'lang\german.lng' then + UILangFilePage.SelectedValueIndex := 2 + else if iniFile = 'lang\french.lng' then + UILangFilePage.SelectedValueIndex := 3 + else + UILangFilePage.SelectedValueIndex := 0; + end; end; end; - Result := True; end; procedure CurStepChanged(CurStep: TSetupStep); @@ -694,7 +790,7 @@ Name: {app}\copyfont.pif; Type: files Name: {app}\libeay.txt; Type: files -[_ISToolPreCompile] -Name: makechm.bat -; Name: build.bat; Parameters: rebuild -Name: build.bat +[InnoIDE_PreCompile] +;Name: makechm.bat +;Name: build.bat; Parameters: rebuild +;Name: build.bat