インストーラー版を使って、プログラムフォルダ(デフォルト)にインストールすると、ポータブルインストールになる。config\simuconf.tabが、「singleuser_install = 1」になり、スタートアップに何も作成されない。
逆にインストーラー版を使って、プログラムフォルダ以外にインストールすると、マルチユーザーインストールになる。ポータブルインストールするかどうかをユーザーに問い合わせしない。スタートアップにメニューが作成される。
この動作は過去のバージョンと逆で、ユーザーが過去のバージョンからアップデートした場合、過去のゲームが保存されているsaveフォルダを認識しなくなる。
If I install simutrans to program folder (default), simutrans will be installed as portable.
If I install simutrans to out of program folder, simutrans will be installed as multiuser mode. Installer doesn't ask whether portable installing or not.
This behavior is quite the opposite to the older versions.
If user updated from older versions, previous 'save' folder will not be recognized by simutrans because of this problem.
older behavior was...
program dir ?
->yes: NonPortable
->no: show MessageBox
current behavior is...
program dir ?
->yes: Portable
->no: NonPortable
I'm not sure this fix below is correct or not.
Function CheckForPortableInstall
StrCpy $multiuserinstall "1"
StrLen $1 $PROGRAMFILES
StrCpy $0 $INSTDIR $1
StrCmp $0 $PROGRAMFILES +4
Goto NonPortable
; ask whether this is a protable installation
StrCmp $INSTDIR $PROGRAMFILES\Simutrans NonPortable
MessageBox MB_YESNO|MB_ICONINFORMATION "Should this be a portable installation?" IDYES Portable IDNO NonPortable
Portable:
StrCpy $multiuserinstall "0"
NonPortable:
↓
Function CheckForPortableInstall
StrCpy $multiuserinstall "1"
StrLen $1 $PROGRAMFILES
StrCpy $0 $INSTDIR $1
StrCmp $0 $PROGRAMFILES NonPortable
; ask whether this is a protable installation
MessageBox MB_YESNO|MB_ICONINFORMATION "Should this be a portable installation?" IDYES Portable IDNO NonPortable
Portable:
StrCpy $multiuserinstall "0"
NonPortable: