1 |
#define AppName "Tera Term" |
#define AppName "Tera Term" |
2 |
#define AppVer "4.67" |
#define AppVer "4.71" |
3 |
#define snapshot GetDateTimeString('yyyymmdd_hhnnss', '', ''); |
#define snapshot GetDateTimeString('yyyymmdd_hhnnss', '', ''); |
4 |
|
|
5 |
[Setup] |
[Setup] |
16 |
ShowLanguageDialog=yes |
ShowLanguageDialog=yes |
17 |
AllowNoIcons=true |
AllowNoIcons=true |
18 |
UninstallDisplayIcon={app}\ttermpro.exe |
UninstallDisplayIcon={app}\ttermpro.exe |
|
AppMutex=TeraTermProAppMutex, TeraTermProMacroAppMutex, TeraTermProKeycodeAppMutex, TeraTermMenuAppMutex, CygTermAppMutex |
|
19 |
#ifndef snapshot |
#ifndef snapshot |
20 |
OutputBaseFilename=teraterm-{#AppVer} |
OutputBaseFilename=teraterm-{#AppVer} |
21 |
#else |
#else |
63 |
Source: release\screencapture.ttl; DestDir: {app}; Components: TeraTerm |
Source: release\screencapture.ttl; DestDir: {app}; Components: TeraTerm |
64 |
Source: release\ssh2login.ttl; DestDir: {app}; Components: TeraTerm |
Source: release\ssh2login.ttl; DestDir: {app}; Components: TeraTerm |
65 |
Source: release\wait_regex.ttl; DestDir: {app}; Components: TeraTerm |
Source: release\wait_regex.ttl; DestDir: {app}; Components: TeraTerm |
66 |
|
Source: release\lang\Default.lng; DestDir: {app}\lang; Components: TeraTerm; Flags: onlyifdoesntexist uninsneveruninstall; Permissions: authusers-modify |
67 |
Source: release\lang\Japanese.lng; DestDir: {app}\lang; Components: TeraTerm; Attribs: readonly; Flags: uninsremovereadonly overwritereadonly |
Source: release\lang\Japanese.lng; DestDir: {app}\lang; Components: TeraTerm; Attribs: readonly; Flags: uninsremovereadonly overwritereadonly |
68 |
Source: release\lang\German.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 |
69 |
Source: release\lang\French.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 |
Source: ..\cygterm\cygterm.cfg; DestDir: {app}; Components: cygterm; Flags: onlyifdoesntexist uninsneveruninstall; Permissions: authusers-modify |
Source: ..\cygterm\cygterm.cfg; DestDir: {app}; Components: cygterm; Flags: onlyifdoesntexist uninsneveruninstall; Permissions: authusers-modify |
74 |
Source: ..\cygterm\cyglaunch.exe; DestDir: {app}; Components: cygterm |
Source: ..\cygterm\cyglaunch.exe; DestDir: {app}; Components: cygterm |
75 |
Source: ..\cygterm\cygterm+.tar.gz; DestDir: {app}; Components: cygterm |
Source: ..\cygterm\cygterm+.tar.gz; DestDir: {app}; Components: cygterm |
76 |
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 |
77 |
Source: ..\libs\logmett\Setup_TTLEditor_1_2_1.exe; DestDir: {tmp}; Components: TTLEdit; Flags: deleteafterinstall |
Source: ..\libs\logmett\Setup_TTLEditor_1_3.exe; DestDir: {tmp}; Components: TTLEdit; Flags: deleteafterinstall |
78 |
Source: ..\ttpmenu\Release\ttpmenu.exe; DestDir: {app}; Components: TeraTerm_Menu; Flags: ignoreversion |
Source: ..\ttpmenu\Release\ttpmenu.exe; DestDir: {app}; Components: TeraTerm_Menu; Flags: ignoreversion |
79 |
Source: release\ttmenu_readme-j.txt; DestDir: {app}; Components: TeraTerm_Menu |
Source: release\ttmenu_readme-j.txt; DestDir: {app}; Components: TeraTerm_Menu |
80 |
Source: ..\TTProxy\Release\TTXProxy.dll; DestDir: {app}; Components: TTProxy; Flags: ignoreversion |
Source: ..\TTProxy\Release\TTXProxy.dll; DestDir: {app}; Components: TTProxy; Flags: ignoreversion |
144 |
[Registry] |
[Registry] |
145 |
; Cygterm Here |
; Cygterm Here |
146 |
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; ValueType: string; ValueData: Cy>erm Here; Flags: uninsdeletekey; Check: isWin2kOrLater; Components: cygterm; Tasks: cygtermhere |
147 |
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 |
148 |
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; ValueType: string; ValueData: Cy>erm Here; Flags: uninsdeletekey; Check: not isWin2kOrLater; Components: cygterm; Tasks: cygtermhere |
149 |
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 |
150 |
; Associate with .TTL |
; Associate with .TTL |
151 |
Root: HKCU; Subkey: Software\Classes\.ttl; ValueType: string; ValueData: TeraTerm.MacroFile; Flags: uninsdeletekey; Check: isWin2kOrLater; Components: TeraTerm; Tasks: macroassoc |
Root: HKCU; Subkey: Software\Classes\.ttl; ValueType: string; ValueData: TeraTerm.MacroFile; Flags: uninsdeletekey; Check: isWin2kOrLater; Components: TeraTerm; Tasks: macroassoc |
152 |
Root: HKCU; Subkey: Software\Classes\TeraTerm.MacroFile; ValueType: string; ValueData: Tera Term Macro File; 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 |
|
|
208 |
[Run] |
[Run] |
209 |
Filename: {app}\ttermpro.exe; Flags: nowait postinstall skipifsilent unchecked; Description: {cm:launch_teraterm}; Components: TeraTerm |
Filename: {app}\ttermpro.exe; Flags: nowait postinstall skipifsilent unchecked; Description: {cm:launch_teraterm}; Components: TeraTerm |
210 |
Filename: {tmp}\Setup_LogMeTT_2_9_7.exe; Components: LogMeTT |
Filename: {tmp}\Setup_LogMeTT_2_9_9_1.exe; Components: LogMeTT |
211 |
Filename: {tmp}\Setup_TTLEditor_1_2_1.exe; Components: TTLEdit |
Filename: {tmp}\Setup_TTLEditor_1_3.exe; Components: TTLEdit |
212 |
Filename: {app}\ttpmenu.exe; Flags: nowait postinstall skipifsilent unchecked; Description: {cm:launch_ttmenu}; Components: TeraTerm_Menu |
Filename: {app}\ttpmenu.exe; Flags: nowait postinstall skipifsilent unchecked; Description: {cm:launch_ttmenu}; Components: TeraTerm_Menu |
213 |
Filename: {app}\Collector\Collector.exe; Flags: nowait postinstall skipifsilent unchecked; Description: {cm:launch_collector}; Components: Collector |
Filename: {app}\Collector\Collector.exe; Flags: nowait postinstall skipifsilent unchecked; Description: {cm:launch_collector}; Components: Collector |
214 |
|
|
281 |
ja.comp_TTXAlwaysOnTop=常に最前面に表示できるようにする |
ja.comp_TTXAlwaysOnTop=常に最前面に表示できるようにする |
282 |
en.comp_TTXRecurringCommand=Recurring Command can be used |
en.comp_TTXRecurringCommand=Recurring Command can be used |
283 |
ja.comp_TTXRecurringCommand=定期的に文字列を送信する |
ja.comp_TTXRecurringCommand=定期的に文字列を送信する |
284 |
|
en.msg_AppRunningError=Setup has detected that %s is currently running.%n%nPlease close all instances of it now, then click Next to continue. |
285 |
|
ja.msg_AppRunningError=セットアップは実行中の %s を検出しました。%n%n開いているアプリケーションをすべて閉じてから「次へ」をクリックしてください。 |
286 |
|
|
287 |
[Code] |
[Code] |
288 |
const |
const |
358 |
end; |
end; |
359 |
} |
} |
360 |
|
|
361 |
|
function CheckFileUsing(Filename:String) : integer; |
362 |
|
var |
363 |
|
TmpFileName : String; |
364 |
|
begin |
365 |
|
if FileExists(FileName) then |
366 |
|
begin |
367 |
|
TmpFileName := FileName + '.' + GetDateTimeString('yyyymmddhhnnss', #0, #0); // Tmp file ends with timestamp |
368 |
|
if FileCopy(FileName, TmpFileName, True) then |
369 |
|
if DeleteFile(FileName) then |
370 |
|
if RenameFile(TmpFileName, FileName) then |
371 |
|
Result := 0 |
372 |
|
else |
373 |
|
Result := -1 // permission? |
374 |
|
else |
375 |
|
begin |
376 |
|
Result := 1; // failed to delete |
377 |
|
DeleteFile(TmpFileName); |
378 |
|
end |
379 |
|
else |
380 |
|
Result := -1 // permission? |
381 |
|
end |
382 |
|
else |
383 |
|
Result := 0; |
384 |
|
end; |
385 |
|
|
386 |
|
function CheckAppsUsing() : string; |
387 |
|
var |
388 |
|
FileDir : String; |
389 |
|
FileName : array[0..6] of String; |
390 |
|
FileDesc : array[0..6] of String; |
391 |
|
i : integer; |
392 |
|
begin |
393 |
|
FileDir := ExpandConstant('{app}'); |
394 |
|
FileName[0] := FileDir + '\ttermpro.exe'; |
395 |
|
FileName[1] := FileDir + '\ttpmacro.exe'; |
396 |
|
FileName[2] := FileDir + '\keycode.exe'; |
397 |
|
FileName[3] := FileDir + '\ttpmenu.exe'; |
398 |
|
FileName[4] := FileDir + '\cygterm.exe'; |
399 |
|
FileName[5] := FileDir + '\Collector.exe'; |
400 |
|
FileName[6] := FileDir + '\Collector_org.exe'; |
401 |
|
FileDesc[0] := 'Tera Term'; |
402 |
|
FileDesc[1] := 'Tera Term Macro'; |
403 |
|
FileDesc[2] := 'Keycode'; |
404 |
|
FileDesc[3] := 'TeraTerm Menu'; |
405 |
|
FileDesc[4] := 'CygTerm+'; |
406 |
|
FileDesc[5] := 'Collector'; |
407 |
|
FileDesc[6] := 'Collector'; |
408 |
|
|
409 |
|
for i := 0 to 6 do |
410 |
|
begin |
411 |
|
case CheckFileUsing(FileName[i]) of |
412 |
|
1: |
413 |
|
// Failed to delete. In use. |
414 |
|
begin |
415 |
|
if Length(Result) > 0 then |
416 |
|
Result := Result + ', ' + FileDesc[i] |
417 |
|
else |
418 |
|
Result := FileDesc[i] |
419 |
|
end; |
420 |
|
else |
421 |
|
// -1: Failed to copy/rename |
422 |
|
// 0: OK |
423 |
|
// NOP |
424 |
|
end; |
425 |
|
end; |
426 |
|
|
427 |
|
end; |
428 |
|
|
429 |
function GetDefaultIniFilename : String; |
function GetDefaultIniFilename : String; |
430 |
begin |
begin |
431 |
Result := ExpandConstant('{app}') + '\TERATERM.INI'; |
Result := ExpandConstant('{app}') + '\TERATERM.INI'; |
449 |
VTFont := GetIniString('Tera Term', 'VTFont', '', iniFile); |
VTFont := GetIniString('Tera Term', 'VTFont', '', iniFile); |
450 |
TEKFont := GetIniString('Tera Term', 'TEKFont', '', iniFile); |
TEKFont := GetIniString('Tera Term', 'TEKFont', '', iniFile); |
451 |
FileDir := GetIniString('Tera Term', 'FileDir', '', iniFile); |
FileDir := GetIniString('Tera Term', 'FileDir', '', iniFile); |
452 |
FileDir := GetIniString('Tera Term', 'FileDir', '', iniFile); |
TCPPort := GetIniInt('Tera Term', 'TCPPort', 0, 0, 65535, iniFile) |
453 |
ViewlogEditor := GetIniString('Tera Term', 'ViewlogEditor', '', iniFile); |
ViewlogEditor := GetIniString('Tera Term', 'ViewlogEditor', '', iniFile); |
454 |
|
|
455 |
case GetUILanguage and $3FF of |
case GetUILanguage and $3FF of |
543 |
3: |
3: |
544 |
SetIniString('Tera Term', 'UILanguageFile', 'lang\French.lng', iniFile); |
SetIniString('Tera Term', 'UILanguageFile', 'lang\French.lng', iniFile); |
545 |
else |
else |
546 |
SetIniString('Tera Term', 'UILanguageFile', 'lang\English.lng', iniFile); |
SetIniString('Tera Term', 'UILanguageFile', 'lang\Default.lng', iniFile); |
547 |
end; |
end; |
548 |
|
|
549 |
if Length(FileDir) = 0 then begin |
if Length(FileDir) = 0 then begin |
593 |
case ActiveLanguage of |
case ActiveLanguage of |
594 |
'ja': |
'ja': |
595 |
UILangFilePage.SelectedValueIndex := 1; |
UILangFilePage.SelectedValueIndex := 1; |
596 |
|
// 他の言語は最新版に追従していないので、日本語だけ特別扱い |
597 |
else |
else |
598 |
UILangFilePage.SelectedValueIndex := 0; |
UILangFilePage.SelectedValueIndex := 0; |
599 |
end; |
end; |
603 |
var |
var |
604 |
uninstaller : String; |
uninstaller : String; |
605 |
uninstaller2 : String; |
uninstaller2 : String; |
606 |
ResultCode: Integer; |
ResultCode : Integer; |
607 |
iniFile : String; |
iniFile : String; |
608 |
|
ErrMsg : String; |
609 |
begin |
begin |
610 |
|
Result := True; |
611 |
|
|
612 |
case CurPageID of |
case CurPageID of |
613 |
|
|
614 |
wpWelcome: |
wpWelcome: |
642 |
|
|
643 |
end; |
end; |
644 |
|
|
645 |
wpSelectComponents: |
wpSelectDir: |
646 |
begin |
begin |
647 |
|
|
648 |
iniFile := GetIniString('Tera Term', 'UILanguageFile', '', GetDefaultIniFilename()); |
ErrMsg := CheckAppsUsing(); |
649 |
if iniFile = 'lang\Japanese.lng' then |
if Length(ErrMsg) > 0 then |
650 |
UILangFilePage.SelectedValueIndex := 1 |
begin |
651 |
else if iniFile = 'lang\German.lng' then |
MsgBox(Format(CustomMessage('msg_AppRunningError'), [ErrMsg]), mbError, MB_OK); |
652 |
UILangFilePage.SelectedValueIndex := 2 |
Result := False; |
653 |
else if iniFile = 'lang\French.lng' then |
end |
|
UILangFilePage.SelectedValueIndex := 3 |
|
654 |
else |
else |
655 |
UILangFilePage.SelectedValueIndex := 0; |
// -1: goto next. Turn over to Inno Setup. |
656 |
|
// 0: goto next. No problem. |
657 |
|
// NOP |
658 |
|
end; |
659 |
|
|
660 |
|
wpSelectComponents: |
661 |
|
begin |
662 |
|
|
663 |
|
if FileExists(GetDefaultIniFileName()) then |
664 |
|
begin |
665 |
|
iniFile := Lowercase(GetIniString('Tera Term', 'UILanguageFile', '', GetDefaultIniFilename())); |
666 |
|
if iniFile = 'lang\japanese.lng' then |
667 |
|
UILangFilePage.SelectedValueIndex := 1 |
668 |
|
else if iniFile = 'lang\german.lng' then |
669 |
|
UILangFilePage.SelectedValueIndex := 2 |
670 |
|
else if iniFile = 'lang\french.lng' then |
671 |
|
UILangFilePage.SelectedValueIndex := 3 |
672 |
|
else |
673 |
|
UILangFilePage.SelectedValueIndex := 0; |
674 |
|
end; |
675 |
|
|
676 |
end; |
end; |
677 |
end; |
end; |
|
Result := True; |
|
678 |
end; |
end; |
679 |
|
|
680 |
procedure CurStepChanged(CurStep: TSetupStep); |
procedure CurStepChanged(CurStep: TSetupStep); |