--- trunk/installer/teraterm.iss 2010/08/01 00:06:19 3961 +++ trunk/installer/teraterm.iss 2011/06/21 15:39:22 4511 @@ -1,6 +1,6 @@ #define AppName "Tera Term" -#define AppVer "4.66" -#define snapshot GetDateTimeString('yyyymmdd_hhnnss', '', ''); +#define AppVer "4.70-RC1" +;#define snapshot GetDateTimeString('yyyymmdd_hhnnss', '', ''); [Setup] AppCopyright=TeraTerm Project @@ -16,7 +16,6 @@ ShowLanguageDialog=yes AllowNoIcons=true UninstallDisplayIcon={app}\ttermpro.exe -AppMutex=TeraTermProAppMutex, TeraTermProMacroAppMutex, TeraTermProKeycodeAppMutex, TeraTermMenuAppMutex, CygTermAppMutex #ifndef snapshot OutputBaseFilename=teraterm-{#AppVer} #else @@ -64,6 +63,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 +73,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_9_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 @@ -144,9 +144,9 @@ [Registry] ; Cygterm Here Root: HKCU; Subkey: Software\Classes\Folder\shell\cygterm; ValueType: string; ValueData: Cy>erm Here; Flags: uninsdeletekey; Check: isWin2kOrLater; Components: cygterm; Tasks: cygtermhere -Root: HKCU; Subkey: Software\Classes\Folder\shell\cygterm\command; ValueType: string; ValueData: """{app}\cyglaunch.exe"" -nocd -nols -d \""%L\"""; Flags: uninsdeletekey; Check: isWin2kOrLater; Components: cygterm; Tasks: cygtermhere +Root: HKCU; Subkey: Software\Classes\Folder\shell\cygterm\command; ValueType: string; ValueData: """{app}\cyglaunch.exe"" -nocd -nols -d ""\""%L\"""""; Flags: uninsdeletekey; Check: isWin2kOrLater; Components: cygterm; Tasks: cygtermhere Root: HKCR; Subkey: Folder\shell\cygterm; ValueType: string; ValueData: Cy>erm Here; Flags: uninsdeletekey; Check: not isWin2kOrLater; Components: cygterm; Tasks: cygtermhere -Root: HKCR; Subkey: Folder\shell\cygterm\command; ValueType: string; ValueData: """{app}\cyglaunch.exe"" -nocd -nols -d \""%L\"""; Flags: uninsdeletekey; Check: not isWin2kOrLater; Components: cygterm; Tasks: cygtermhere +Root: HKCR; Subkey: Folder\shell\cygterm\command; ValueType: string; ValueData: """{app}\cyglaunch.exe"" -nocd -nols -d ""\""%L\"""""; Flags: uninsdeletekey; Check: not isWin2kOrLater; Components: cygterm; Tasks: cygtermhere ; Associate with .TTL Root: HKCU; Subkey: Software\Classes\.ttl; ValueType: string; ValueData: TeraTerm.MacroFile; Flags: uninsdeletekey; Check: isWin2kOrLater; Components: TeraTerm; Tasks: macroassoc Root: HKCU; Subkey: Software\Classes\TeraTerm.MacroFile; ValueType: string; ValueData: Tera Term Macro File; Flags: uninsdeletekey; Check: isWin2kOrLater; Components: TeraTerm; Tasks: macroassoc @@ -207,7 +207,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_9_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 +281,8 @@ ja.comp_TTXAlwaysOnTop=常に最前面に表示できるようにする en.comp_TTXRecurringCommand=Recurring Command can be used ja.comp_TTXRecurringCommand=定期的に文字列を送信する +en.msg_AppRunningError=Setup has detected that %s is currently running.%n%nPlease close all instances of it now, then click Next to continue. +ja.msg_AppRunningError=セットアップは実行中の %s を検出しました。%n%n開いているアプリケーションをすべて閉じてから「次へ」をクリックしてください。 [Code] const @@ -356,6 +358,74 @@ end; } +function CheckFileUsing(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() : string; +var + FileDir : String; + FileName : array[0..6] of String; + FileDesc : array[0..6] of String; + i : integer; +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'; + FileDesc[0] := 'Tera Term'; + FileDesc[1] := 'Tera Term Macro'; + FileDesc[2] := 'Keycode'; + FileDesc[3] := 'TeraTerm Menu'; + FileDesc[4] := 'CygTerm+'; + FileDesc[5] := 'Collector'; + FileDesc[6] := 'Collector'; + + for i := 0 to 6 do + begin + case CheckFileUsing(FileName[i]) of + 1: + // Failed to delete. In use. + begin + if Length(Result) > 0 then + Result := Result + ', ' + FileDesc[i] + else + Result := FileDesc[i] + end; + else + // -1: Failed to copy/rename + // 0: OK + // NOP + 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); + TCPPort := GetIniInt('Tera Term', 'TCPPort', 0, 0, 65535, 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; @@ -524,9 +603,12 @@ var uninstaller : String; uninstaller2 : String; - ResultCode: Integer; - iniFile : String; + ResultCode : Integer; + iniFile : String; + ErrMsg : String; begin + Result := True; + case CurPageID of wpWelcome: @@ -560,22 +642,39 @@ end; - wpSelectComponents: + wpSelectDir: 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 + ErrMsg := CheckAppsUsing(); + if Length(ErrMsg) > 0 then + begin + MsgBox(Format(CustomMessage('msg_AppRunningError'), [ErrMsg]), mbError, MB_OK); + Result := False; + end else - UILangFilePage.SelectedValueIndex := 0; + // -1: goto next. Turn over to Inno Setup. + // 0: goto next. No problem. + // NOP + end; + + wpSelectComponents: + begin + + 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 +793,7 @@ Name: {app}\copyfont.pif; Type: files Name: {app}\libeay.txt; Type: files -[_ISToolPreCompile] +[InnoIDE_PreCompile] Name: makechm.bat -; Name: build.bat; Parameters: rebuild -Name: build.bat +Name: build.bat; Parameters: rebuild +;Name: build.bat