1.

Solve : Error execution batch file from 16-bit aplication on Windows 32-bit?

Answer»

I have installation files creation in NullSoft system 2.46.
(*.EXE files are storage in http://www.zetrozet.com/index.php?load=downtbl&modul=ucto15)

At starting from Windows 32-bit location, from Windows 64-bit location or from 16-bit location application below DosBox in Windows 64-bit location working totally correct.

At initiation from 16-bit location application in Windows 32-bit location working incorrect:
1) proper are unpacking insertion files
2) proper is generating and initiation batch-file
3) UFAND.EXE, that is to be initiation batch file, yet initiation isn't. Instead write out report "type 'exit' to return to FAND". (FAND.EXE, UFAND.EXE is 16-bit location programming language Czech rise.)

For easier determination causes mistaken behaviour stoking NullSoft script, from that is of perceptible and way generation batch file
Code: [Select]!include MUI.nsh
; INST2015.nsi
; Tento skript nainstaluje INST2015.nsi do adresß°e, kterř si u×ivatel zvolÝ
;--------------------------------
!include MUI2.nsh
!define MUI_ABORTWARNING
!define Datum "27.07.2015"
!define DatumCas "27.07.2015 17:29"
!define Rok "2015"
!include MultiUser.nsh
!define MUI_UNICON "zetro20.ico"
!define MUI_WELCOMEFINISHPAGE_BITMAP "welcome6.bmp"
!define MUI_HEADERIMAGE_BITMAP "header1.bmp"
!define MULTIUSER_EXECUTIONLEVEL Highest
!insertmacro MUI_PAGE_WELCOME
  !define MUI_TEXT_WELCOME_INFO_TITLE "VÝtejte v pr¨vodci instalacÝ programu$\r$\n$\t$(^NameDA)"
  !define MUI_TEXT_WELCOME_INFO_TEXT  "$\tP°ed zaŔßtkem instalace se doporuŔuje ukonŔit vÜechny ostatnÝ programy. TÝm umo×nÝte aktualizaci systÚmovřch soubor¨ bez pot°eby restartovßnÝ vaÜeho poŔÝtaŔe.$\r$\n$\r$\n$_CLICK$\r$\n$\r$\n$\r$\n$\r$\n$\r$\n$\r$\nVytvo°eno dne ${DatumCas}$\r$\n$\r$\nę Zdenýk TrunýŔek, Zet-Ro-Zet, BeneÜov nad PlouŔnicÝ"
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH
!define MUI_FINISHPAGE_CANCEL_ENABLED true
!define MUI_FINISHPAGE_CANCEL_ENABLED_VARIABLES true
!insertmacro MUI_UNPAGE_WELCOME
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES
!define MUI_FINISHUNPAGE_CANCEL_ENABLED true
!define MUI_FINISHUNPAGE_CANCEL_ENABLED_VARIABLES true
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_LANGUAGE "Czech_www"
!include FileFunc.nsh
!include WordFunc.nsh
!include WinMessages.nsh
!insertmacro WordReplace
!insertmacro Un.WordReplace
var /GLOBAL outfile
BGGradient 0088FF 663366 notext
BrandingText /TRIMRIGHT "ę Zdenýk TrunýŔek Zet-Ro-Zet, BeneÜov nad PlouŔnicÝ"
RequestExecutionLevel highest
XPStyle on
AllowRootDirInstall false
Icon "G:\I_U2015\{tisk}\zetro20.ico"
OutFile KURZY32.EXE
Function .onGUIInit2
${GetExeName} $R0
${GetExePath} $R1
StrLen $R3 $R1
StrCpy $R1 $R0 -$R3
StrCpy $outfile $R1 "" 1
StrLen $1 $outfile
StrCpy $0 $EXEPATH -$1
StrCpy $0 $0 -1
StrCpy $2 $0 "" -6
StrCmp $2 "{wwww}" wwww nowwww
 wwww:
  StrCpy $InstDir $0 -7
  GetFullPathName /SHORT $0 $INSTDIR
  StrCpy $INSTDIR $0
  goto wwwwend
nowwww:
  GetFullPathName /SHORT $0 $INSTDIR
  StrCpy $INSTDIR $0
wwwwend:
StrLen $3 $TEMP
StrCpy $4 $EXEPATH $3
StrCmp $4 $TEMP 0 +3
 StrCpy $InstDir "C:\UCTO2015"
  GoTo instend
StrLen $3 $DESKTOP
StrCpy $4 $EXEPATH $3
StrCmp $4 $DESKTOP 0 +3
 StrCpy $InstDir "C:\UCTO2015"
  GoTo instend
StrLen $3 $WINDIR
StrCpy $4 $EXEPATH $3
StrCmp $4 $WINDIR 0 +3
 StrCpy $InstDir "C:\UCTO2015"
  GoTo instend
StrLen $3 $INTERNET_CACHE
StrCpy $4 $EXEPATH $3
StrCmp $4 $INTERNET_CACHE 0 +3
 StrCpy $InstDir "C:\UCTO2015"
  GoTo instend
StrLen $3 $PROFILE
StrCpy $4 $EXEPATH $3
StrCmp $4 $PROFILE 0 +3
 StrCpy $InstDir "C:\UCTO2015"
  GoTo instend
GetFullPathName /SHORT $3 $INSTDIR
GetFullPathName $4 $INSTDIR
StrCmp $4 $3 +2
 StrCpy $InstDir "C:\UCTO2015"
instend:
 GetFullPathName /SHORT $0 $INSTDIR
 StrCpy $INSTDIR $0
StrCpy $R9 "Instalace byla zruÜena u×ivatelem."
FunctionEnd
Name "$\"32 - Kurzy, prßce s cizÝmi mýnami$\""
Function .onVerifyInstDir
!insertmacro MUI_HEADER_TEXT "$\"32-Kurzy, prßce s cizÝmi mýnami$\" - vytvo°en dne 27.07.2015" "ę Zdenýk TrunýŔek - modul pro -Ŕto2015 firmy Tichř && spol. Novř Bor"
IfFileExists $INSTDIR\UFAND.EXE +1 ErrPathName
IfFileExists $INSTDIR\UCTO2015.CAT +1 ErrPathName
GetFullPathName /SHORT $9 $INSTDIR
GetFullPathName $8 $INSTDIR
StrCmp $9 $8 OkPathName
MessageBox MB_Ok "Vybranř adresß° obsahuje komponenty programu -Ŕto2015.$\n$\nToto -Ŕto ale nenÝ mo×no spouÜtýt, proto×e nßzev adresß°e nespl˛uje kriteria nezbytnß pro 16-bitovÚ systÚmy DOS."
ErrPathName:
Abort
OkPathName:
FunctionEnd
Page Directory
DirText "Nainstaluje modul $\"32 - Kurzy-cizÝ mýny$\" a spustÝ napojovßnÝ modulu na -Ŕto2015$\n$\nNenÝ-li p°ÝstupnÚ tlaŔÝtko $\"Instalovat$\", vyhledejte adresß°, kde se nachßzÝ -Ŕto  2015.$\nPro instalaci nelze vybrat adresß° nespl˛ujÝcÝ kriteria DOSu. (-Ŕto umÝstýnÚ v takovÚm adresß°i nelze spouÜtýt.)" "K vyhledßnÝ adresß°e pro instalaci pou×ijte tlaŔÝtko $\"Prochßzet$\""
Function .onInit
var /GLOBAL Ok64
Push "0"
Pop $Ok64
${if} $COMMONFILES64 != $COMMONFILES
Push "1"
Pop $Ok64
${endif}
 call .onGUIInit2
!insertmacro MULTIUSER_INIT
FunctionEnd
InstallDir $INSTDIR
Function StartMenuGroupSelect
!insertmacro MUI_HEADER_TEXT "$\"32-Kurzy, prßce s cizÝmi mýnami$\" - vytvo°en dne 27.07.2015" "ę Zdenýk TrunýŔek - modul pro -Ŕto2015 firmy Tichř && spol. Novř Bor"
MessageBox MB_YESNO "PokraŔovat instalacÝ modulu $\"32 - Kurzy-cizÝ mýny$\"" IDNO done IDYES success # use default
success:
        GoTo konec

done:
        Abort "Instalace byla p°edŔasný ukonŔena u×ivatelem"
Konec:
FunctionEnd

Function SpusteneUcto
IfFileExists $INSTDIR\FANDWORK.??? +1 +2
Delete $INSTDIR\FANDWORK.???
IfFileExists $INSTDIR\FANDWORK.??? +1 pokracuj3
MessageBox MB_RETRYCANCEL "-cto je asi spuÜtýno. $\n$\nPro pokraŔovßnÝ instalace je t°eba ukonŔit -Ŕto a pak pokraŔovat v instalaci" IDRETRY Cekej IDCANCEL Konci
Cekej:
  call SpusteneUcto
  GoTo pokracuj3
Konci:
      Abort "-Ŕto bylo spuÜtýno - instalace ukonŔena u×ivatelem"
pokracuj3:
FunctionEnd
Function .OnGUIEnd
 MessageBox MB_OK $R9
FunctionEnd

Page instfiles
VIProductVersion "2015.07.27.0"
VIAddVersionKey /LANG=${LANG_CZECH_WWW} "ProductName" "KURZY32.EXE "
VIAddVersionKey /LANG=${LANG_CZECH_WWW} "ProductVersion" "modul pro -Ŕto 2015"
VIAddVersionKey /LANG=${LANG_CZECH_WWW} "Comments" "modul pro -Ŕto 2015"
VIAddVersionKey /LANG=${LANG_CZECH_WWW} "CompanyName" "Zdenýk TrunýŔek"
VIAddVersionKey /LANG=${LANG_CZECH_WWW} "Autor" "Zdenýk TrunýŔek"
VIAddVersionKey /LANG=${LANG_CZECH_WWW} "Publisher" "Zdenýk TrunýŔek"
VIAddVersionKey /LANG=${LANG_CZECH_WWW} "LegalTrademarks" "ę Zet-Ro-Zet"
VIAddVersionKey /LANG=${LANG_CZECH_WWW} "LegalCopyright" "ę Zdenýk TrunýŔek, Zet-Ro-Zet"
VIAddVersionKey /LANG=${LANG_CZECH_WWW} "FileDescription" "$\"32 - Kurzy-cizÝ mýny$\" pro -Ŕto 2015"
VIAddVersionKey /LANG=${LANG_CZECH_WWW} "FileVersion" "27.07.2015"
Section
 call StartMenuGroupSelect
        ifAbort skip pokracuj2
pokracuj2:
SetOutPath $INSTDIR
Call SpusteneUcto
ifAbort Skip
File /r "G:\I_U2015\INST_ZET\*.*"
${if} $Ok64 = "1"
GetFullPathName /SHORT $R9 $INSTDIR
FileOpen $0 $INSTDIR\{DBX1}\NSISZET.CFG w
FileWrite $0 "echo off"
FileClose $0
FileOpen $0 $INSTDIR\{DBX1}\NSISZET.CFG a
FileWrite $0 "echo off"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "CLS"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "IF EXIST $INSTDIR\{DBX1}\FANDWORK.$$$$$$ DEL $INSTDIR\{DBX1}\FANDWORK.$$$$$$"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "IF NOT EXIST $INSTDIR\{DBX1}\FANDWORK.$$$$$$ GOTO RUN"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "CLS"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "ECHO."
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "ECHO PROGRAM UCTO JIZ BEZI!"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "ECHO."
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "PAUSE"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "GOTO END"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "cls"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 ":RUN"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "set instdbox=on"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "set fandovrb=80"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "set fandwork=$R9\{dbx1}\"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "set fandcfg=$R9\{dbx1}\"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "$R9\{dbx1}\numlock.exe"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "set fandres=$R9\"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "rescan /all"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
StrCpy $1 $R9 3
FileWrite $0 "cd $1"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
StrCpy $1 $R9 20 2
FileWrite $0 "cd $1"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "$R9\ufand.exe $R9\inst_zet.rdb"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "set fandovrb="
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "set fandwork="
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "set fandcfg="
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "set fandres="
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 ":END"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "EXIT"
FileClose $0
FileOpen $0 $INSTDIR\INST_Z64.BAT w
FileWrite $0 "echo off"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileClose $0
FileOpen $0 $INSTDIR\INST_Z64.BAT a
FileWrite $0 "echo off"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "if not exist STOP32.TXT GOTO NOSTOP"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "del STOP32.TXT > nul"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 ":NOSTOP"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "call {dbx1}\setdsk_i.bat"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "if exist {dbx2}\stop del {dbx2}\stop"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "if not exist {tisk}\winprc64.exe goto ubox"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "if not exist INST_ZET.BAT goto noinstbat"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "del INST_ZET.BAT > nul"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 ":noinstbat"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 ".\{tisk}\winprc64 -S=$\"{DBX1}\DOSBOX.EXE -exit -noconsole -conf {DBX1}\dosbox_z.cfg$\""
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "if not exist {DBX1}\NSISZET.CFG GOTO NONSISZET"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "del {DBX1}\NSISZET.CFG > nul"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 ":NONSISZET"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "if not exist INST_ZET.RDB GOTO NOINST_ZET"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "del INST_ZET.??? > nul"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "NOINST_ZET"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "GOTO END"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 ":UBOX"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "{tisk}\caller {tisk}\ubox $$ {dbx2} 1000 500 utisk04.exe"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "{tisk}\caller {dbx1}\dosbox.exe -noconsole -conf {dbx1}\dosbox_z.cfg"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 ":END"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileClose $0
FileWriteByte $0 "13"
FileWriteByte $0 "10"
ExecWait "$R9\INST_Z64.BAT"
${endif}
${if} $Ok64 = "0"
ClearErrors
GetFullPathName /SHORT $R9 $INSTDIR
FileOpen $0 $R9\INST_ZET.BAT w
FileClose $0
FileOpen $0 $R9\INST_ZET.BAT a
FileWrite $0 "mode con: cols=80 lines=25"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "set fandovrb=80"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
StrCpy $1 $R9 3
FileWrite $0 "cd $1"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
StrCpy $1 $R9 20 3
FileWrite $0 "cd $1"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "$R9\UFAND.EXE $R9\INST_ZET.RDB"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "pause"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "set fandovrb="
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "set fandwork="
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "set fandcfg="
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "set fandres="
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileClose $0
IfFileExists $WINDIR\system32\cmd.exe +4 +1
Nop
ExecWait "$R9\INST_ZET.BAT"
GoTo +3
Nop
ExecWait "$R9\INST_ZET.BAT"
Nop
${endif}
IfFileExists $R9\STOP32.TXT 0 +3
StrCpy $R9 "Instalace modulu $\n$\"32-Kurzy, prßce s cizÝmi mýnami$\" (vytvo°enÚho dne 27.07.2015)$\n byla zruÜena u×ivatelem."
GoTo skip
Nop
${if} $Ok64 = "0"
IfFileExists $R9\INST_ZET.BAT 0 +3
StrCpy $R9 "[64] Instalace modulu $\n$\"32-Kurzy, prßce s cizÝmi mýnami$\" (vytvo°enÚho dne 27.07.2015)$\nse nezda°ila."
GoTo skip
Nop
${endif}
${if} $Ok64 = "1"
IfFileExists $INSTDIR\{DBX1}\FANDWORK.$$$$$$ 0 +3
StrCpy $R9 "[64] Instalace modulu $\n$\"32-Kurzy, prßce s cizÝmi mýnami$\" (vytvo°enÚho dne 27.07.2015)$\nse nezda°ila."
GoTo skip
Nop
${endif}
Nop
StrCpy $R9 "Instalace modulu $\n$\"32-Kurzy, prßce s cizÝmi mýnami$\" (vytvo°enÚho dne 27.07.2015)$\nbyla dokonŔena."
Delete $INSTDIR\INST_Z??.???
SetAutoClose true
skip:
quit
SectionEnd
What is the actual question that you have, and would like an answer for? Quote from: trikolka on July 27, 2015, 02:49:45 PM

I have installation files creation in NullSoft system 2.46.
(*.EXE files are storage in http://www.zetrozet.com/index.php?load=downtbl&modul=ucto15)

At starting from Windows 32-bit location, from Windows 64-bit location or from 16-bit location application below DosBox in Windows 64-bit location working totally correct.

At initiation from 16-bit location application in Windows 32-bit location working incorrect:
1) proper are unpacking insertion files
2) proper is generating and initiation batch-file
3) UFAND.EXE, that is to be initiation batch file, yet initiation isn't. Instead write out report "type 'exit' to return to FAND". (FAND.EXE, UFAND.EXE is 16-bit location programming language Czech rise.)

Last testing - if you run the setup * .exe from 16-bit applications running on 32-bit Windows under DOSBox will the entire installation correctly. Because * .EXE installer detects the 32-bit Windows from Windows 64-bit, 16-bit triggers application (UFAND.EXE) outside DOSBox.

Menu, from which the 16-bit application installation starts * .EXE (or downloaded from the web and then triggers):


For easier determination causes mistaken behaviour stoking NullSoft script, from that is of perceptible and way generation batch file
Code: [Select]!include MUI.nsh
; INST2015.nsi
; Tento skript nainstaluje INST2015.nsi do adresß°e, kterř si u×ivatel zvolÝ
;--------------------------------
!include MUI2.nsh
!define MUI_ABORTWARNING
!define Datum "27.07.2015"
!define DatumCas "27.07.2015 17:29"
!define Rok "2015"
!include MultiUser.nsh
!define MUI_UNICON "zetro20.ico"
!define MUI_WELCOMEFINISHPAGE_BITMAP "welcome6.bmp"
!define MUI_HEADERIMAGE_BITMAP "header1.bmp"
!define MULTIUSER_EXECUTIONLEVEL Highest
!insertmacro MUI_PAGE_WELCOME
  !define MUI_TEXT_WELCOME_INFO_TITLE "VÝtejte v pr¨vodci instalacÝ programu$\r$\n$\t$(^NameDA)"
  !define MUI_TEXT_WELCOME_INFO_TEXT  "$\tP°ed zaŔßtkem instalace se doporuŔuje ukonŔit vÜechny ostatnÝ programy. TÝm umo×nÝte aktualizaci systÚmovřch soubor¨ bez pot°eby restartovßnÝ vaÜeho poŔÝtaŔe.$\r$\n$\r$\n$_CLICK$\r$\n$\r$\n$\r$\n$\r$\n$\r$\n$\r$\nVytvo°eno dne ${DatumCas}$\r$\n$\r$\nę Zdenýk TrunýŔek, Zet-Ro-Zet, BeneÜov nad PlouŔnicÝ"
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH
!define MUI_FINISHPAGE_CANCEL_ENABLED true
!define MUI_FINISHPAGE_CANCEL_ENABLED_VARIABLES true
!insertmacro MUI_UNPAGE_WELCOME
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES
!define MUI_FINISHUNPAGE_CANCEL_ENABLED true
!define MUI_FINISHUNPAGE_CANCEL_ENABLED_VARIABLES true
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_LANGUAGE "Czech_www"
!include FileFunc.nsh
!include WordFunc.nsh
!include WinMessages.nsh
!insertmacro WordReplace
!insertmacro Un.WordReplace
var /GLOBAL outfile
BGGradient 0088FF 663366 notext
BrandingText /TRIMRIGHT "ę Zdenýk TrunýŔek Zet-Ro-Zet, BeneÜov nad PlouŔnicÝ"
RequestExecutionLevel highest
XPStyle on
AllowRootDirInstall false
Icon "G:\I_U2015\{tisk}\zetro20.ico"
OutFile KURZY32.EXE
Function .onGUIInit2
${GetExeName} $R0
${GetExePath} $R1
StrLen $R3 $R1
StrCpy $R1 $R0 -$R3
StrCpy $outfile $R1 "" 1
StrLen $1 $outfile
StrCpy $0 $EXEPATH -$1
StrCpy $0 $0 -1
StrCpy $2 $0 "" -6
StrCmp $2 "{wwww}" wwww nowwww
 wwww:
  StrCpy $InstDir $0 -7
  GetFullPathName /SHORT $0 $INSTDIR
  StrCpy $INSTDIR $0
  goto wwwwend
nowwww:
  GetFullPathName /SHORT $0 $INSTDIR
  StrCpy $INSTDIR $0
wwwwend:
StrLen $3 $TEMP
StrCpy $4 $EXEPATH $3
StrCmp $4 $TEMP 0 +3
 StrCpy $InstDir "C:\UCTO2015"
  GoTo instend
StrLen $3 $DESKTOP
StrCpy $4 $EXEPATH $3
StrCmp $4 $DESKTOP 0 +3
 StrCpy $InstDir "C:\UCTO2015"
  GoTo instend
StrLen $3 $WINDIR
StrCpy $4 $EXEPATH $3
StrCmp $4 $WINDIR 0 +3
 StrCpy $InstDir "C:\UCTO2015"
  GoTo instend
StrLen $3 $INTERNET_CACHE
StrCpy $4 $EXEPATH $3
StrCmp $4 $INTERNET_CACHE 0 +3
 StrCpy $InstDir "C:\UCTO2015"
  GoTo instend
StrLen $3 $PROFILE
StrCpy $4 $EXEPATH $3
StrCmp $4 $PROFILE 0 +3
 StrCpy $InstDir "C:\UCTO2015"
  GoTo instend
GetFullPathName /SHORT $3 $INSTDIR
GetFullPathName $4 $INSTDIR
StrCmp $4 $3 +2
 StrCpy $InstDir "C:\UCTO2015"
instend:
 GetFullPathName /SHORT $0 $INSTDIR
 StrCpy $INSTDIR $0
StrCpy $R9 "Instalace byla zruÜena u×ivatelem."
FunctionEnd
Name "$\"32 - Kurzy, prßce s cizÝmi mýnami$\""
Function .onVerifyInstDir
!insertmacro MUI_HEADER_TEXT "$\"32-Kurzy, prßce s cizÝmi mýnami$\" - vytvo°en dne 27.07.2015" "ę Zdenýk TrunýŔek - modul pro -Ŕto2015 firmy Tichř && spol. Novř Bor"
IfFileExists $INSTDIR\UFAND.EXE +1 ErrPathName
IfFileExists $INSTDIR\UCTO2015.CAT +1 ErrPathName
GetFullPathName /SHORT $9 $INSTDIR
GetFullPathName $8 $INSTDIR
StrCmp $9 $8 OkPathName
MessageBox MB_Ok "Vybranř adresß° obsahuje komponenty programu -Ŕto2015.$\n$\nToto -Ŕto ale nenÝ mo×no spouÜtýt, proto×e nßzev adresß°e nespl˛uje kriteria nezbytnß pro 16-bitovÚ systÚmy DOS."
ErrPathName:
Abort
OkPathName:
FunctionEnd
Page Directory
DirText "Nainstaluje modul $\"32 - Kurzy-cizÝ mýny$\" a spustÝ napojovßnÝ modulu na -Ŕto2015$\n$\nNenÝ-li p°ÝstupnÚ tlaŔÝtko $\"Instalovat$\", vyhledejte adresß°, kde se nachßzÝ -Ŕto  2015.$\nPro instalaci nelze vybrat adresß° nespl˛ujÝcÝ kriteria DOSu. (-Ŕto umÝstýnÚ v takovÚm adresß°i nelze spouÜtýt.)" "K vyhledßnÝ adresß°e pro instalaci pou×ijte tlaŔÝtko $\"Prochßzet$\""
Function .onInit
var /GLOBAL Ok64
Push "0"
Pop $Ok64
${if} $COMMONFILES64 != $COMMONFILES
Push "1"
Pop $Ok64
${endif}
 call .onGUIInit2
!insertmacro MULTIUSER_INIT
FunctionEnd
InstallDir $INSTDIR
Function StartMenuGroupSelect
!insertmacro MUI_HEADER_TEXT "$\"32-Kurzy, prßce s cizÝmi mýnami$\" - vytvo°en dne 27.07.2015" "ę Zdenýk TrunýŔek - modul pro -Ŕto2015 firmy Tichř && spol. Novř Bor"
MessageBox MB_YESNO "PokraŔovat instalacÝ modulu $\"32 - Kurzy-cizÝ mýny$\"" IDNO done IDYES success # use default
success:
        GoTo konec

done:
        Abort "Instalace byla p°edŔasný ukonŔena u×ivatelem"
Konec:
FunctionEnd

Function SpusteneUcto
IfFileExists $INSTDIR\FANDWORK.??? +1 +2
Delete $INSTDIR\FANDWORK.???
IfFileExists $INSTDIR\FANDWORK.??? +1 pokracuj3
MessageBox MB_RETRYCANCEL "-cto je asi spuÜtýno. $\n$\nPro pokraŔovßnÝ instalace je t°eba ukonŔit -Ŕto a pak pokraŔovat v instalaci" IDRETRY Cekej IDCANCEL Konci
Cekej:
  call SpusteneUcto
  GoTo pokracuj3
Konci:
      Abort "-Ŕto bylo spuÜtýno - instalace ukonŔena u×ivatelem"
pokracuj3:
FunctionEnd
Function .OnGUIEnd
 MessageBox MB_OK $R9
FunctionEnd

Page instfiles
VIProductVersion "2015.07.27.0"
VIAddVersionKey /LANG=${LANG_CZECH_WWW} "ProductName" "KURZY32.EXE "
VIAddVersionKey /LANG=${LANG_CZECH_WWW} "ProductVersion" "modul pro -Ŕto 2015"
VIAddVersionKey /LANG=${LANG_CZECH_WWW} "Comments" "modul pro -Ŕto 2015"
VIAddVersionKey /LANG=${LANG_CZECH_WWW} "CompanyName" "Zdenýk TrunýŔek"
VIAddVersionKey /LANG=${LANG_CZECH_WWW} "Autor" "Zdenýk TrunýŔek"
VIAddVersionKey /LANG=${LANG_CZECH_WWW} "Publisher" "Zdenýk TrunýŔek"
VIAddVersionKey /LANG=${LANG_CZECH_WWW} "LegalTrademarks" "ę Zet-Ro-Zet"
VIAddVersionKey /LANG=${LANG_CZECH_WWW} "LegalCopyright" "ę Zdenýk TrunýŔek, Zet-Ro-Zet"
VIAddVersionKey /LANG=${LANG_CZECH_WWW} "FileDescription" "$\"32 - Kurzy-cizÝ mýny$\" pro -Ŕto 2015"
VIAddVersionKey /LANG=${LANG_CZECH_WWW} "FileVersion" "27.07.2015"
Section
 call StartMenuGroupSelect
        ifAbort skip pokracuj2
pokracuj2:
SetOutPath $INSTDIR
Call SpusteneUcto
ifAbort Skip
File /r "G:\I_U2015\INST_ZET\*.*"
${if} $Ok64 = "1"
GetFullPathName /SHORT $R9 $INSTDIR
FileOpen $0 $INSTDIR\{DBX1}\NSISZET.CFG w
FileWrite $0 "echo off"
FileClose $0
FileOpen $0 $INSTDIR\{DBX1}\NSISZET.CFG a
FileWrite $0 "echo off"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "cls"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "IF EXIST $INSTDIR\{DBX1}\FANDWORK.$$$$$$ DEL $INSTDIR\{DBX1}\FANDWORK.$$$$$$"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "IF NOT EXIST $INSTDIR\{DBX1}\FANDWORK.$$$$$$ GOTO RUN"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "CLS"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "ECHO."
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "ECHO PROGRAM UCTO JIZ BEZI!"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "ECHO."
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "PAUSE"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "GOTO END"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "cls"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 ":RUN"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "set instdbox=on"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "set fandovrb=80"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "set fandwork=$R9\{dbx1}\"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "set fandcfg=$R9\{dbx1}\"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "$R9\{dbx1}\numlock.exe"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "set fandres=$R9\"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "rescan /all"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
StrCpy $1 $R9 3
FileWrite $0 "cd $1"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
StrCpy $1 $R9 20 2
FileWrite $0 "cd $1"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "$R9\ufand.exe $R9\inst_zet.rdb"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "set fandovrb="
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "set fandwork="
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "set fandcfg="
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "set fandres="
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 ":END"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "EXIT"
FileClose $0
FileOpen $0 $INSTDIR\INST_Z64.BAT w
FileWrite $0 "echo off"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileClose $0
FileOpen $0 $INSTDIR\INST_Z64.BAT a
FileWrite $0 "echo off"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "if not exist STOP32.TXT GOTO NOSTOP"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "del STOP32.TXT > nul"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 ":NOSTOP"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "call {dbx1}\setdsk_i.bat"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "if exist {dbx2}\stop del {dbx2}\stop"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "if not exist {tisk}\winprc64.exe goto ubox"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "if not exist INST_ZET.BAT goto noinstbat"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "del INST_ZET.BAT > nul"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 ":noinstbat"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 ".\{tisk}\winprc64 -S=$\"{DBX1}\DOSBOX.EXE -exit -noconsole -conf {DBX1}\dosbox_z.cfg$\""
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "if not exist {DBX1}\NSISZET.CFG GOTO NONSISZET"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "del {DBX1}\NSISZET.CFG > nul"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 ":NONSISZET"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "if not exist INST_ZET.RDB GOTO NOINST_ZET"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "del INST_ZET.??? > nul"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "NOINST_ZET"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "GOTO END"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 ":UBOX"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "{tisk}\caller {tisk}\ubox $$ {dbx2} 1000 500 utisk04.exe"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "{tisk}\caller {dbx1}\dosbox.exe -noconsole -conf {dbx1}\dosbox_z.cfg"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 ":END"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileClose $0
FileWriteByte $0 "13"
FileWriteByte $0 "10"
ExecWait "$R9\INST_Z64.BAT"
${endif}
${if} $Ok64 = "0"
ClearErrors
GetFullPathName /SHORT $R9 $INSTDIR
FileOpen $0 $R9\INST_ZET.BAT w
FileClose $0
FileOpen $0 $R9\INST_ZET.BAT a
FileWrite $0 "mode con: cols=80 lines=25"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "set fandovrb=80"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
StrCpy $1 $R9 3
FileWrite $0 "cd $1"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
StrCpy $1 $R9 20 3
FileWrite $0 "cd $1"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "$R9\UFAND.EXE $R9\INST_ZET.RDB"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "pause"
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "set fandovrb="
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "set fandwork="
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "set fandcfg="
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileWrite $0 "set fandres="
FileWriteByte $0 "13"
FileWriteByte $0 "10"
FileClose $0
IfFileExists $WINDIR\system32\cmd.exe +4 +1
Nop
ExecWait "$R9\INST_ZET.BAT"
GoTo +3
Nop
ExecWait "$R9\INST_ZET.BAT"
Nop
${endif}
IfFileExists $R9\STOP32.TXT 0 +3
StrCpy $R9 "Instalace modulu $\n$\"32-Kurzy, prßce s cizÝmi mýnami$\" (vytvo°enÚho dne 27.07.2015)$\n byla zruÜena u×ivatelem."
GoTo skip
Nop
${if} $Ok64 = "0"
IfFileExists $R9\INST_ZET.BAT 0 +3
StrCpy $R9 "[64] Instalace modulu $\n$\"32-Kurzy, prßce s cizÝmi mýnami$\" (vytvo°enÚho dne 27.07.2015)$\nse nezda°ila."
GoTo skip
Nop
${endif}
${if} $Ok64 = "1"
IfFileExists $INSTDIR\{DBX1}\FANDWORK.$$$$$$ 0 +3
StrCpy $R9 "[64] Instalace modulu $\n$\"32-Kurzy, prßce s cizÝmi mýnami$\" (vytvo°enÚho dne 27.07.2015)$\nse nezda°ila."
GoTo skip
Nop
${endif}
Nop
StrCpy $R9 "Instalace modulu $\n$\"32-Kurzy, prßce s cizÝmi mýnami$\" (vytvo°enÚho dne 27.07.2015)$\nbyla dokonŔena."
Delete $INSTDIR\INST_Z??.???
SetAutoClose true
skip:
quit
SectionEnd

[attachment deleted by admin to conserve space] Quote from: foxidrive on July 28, 2015, 01:14:25 AM
What is the actual question that you have, and would like an answer for?
Question - why when you start the installation of 16-bit applications running on Windows 32-bit installation does not correctly. Quote from: trikolka on July 28, 2015, 01:31:06 AM
Question - why when you start the installation of 16-bit applications running on Windows 32-bit installation does not correctly.

To repeat the problem, you have a 16 bit application and it is not installing properly on a 32 bit version of windows.

What happens that is wrong when you install it in a 32 bit Windows? 
You SAID that there is a prompt on the screen - is a batch file running and the batch file is not doing the right thing?

Or is the problem in the NullSoft script?

In your screenshot you are showing Dosbox, and I don't see how that ties in with the question.1) When the update * .EXE running on 32-bit Windows, from Windows 64-bit or 16-bit application under DOSBox is working quite correctly. (When you start a Windows 64-bit, you start a 16-bit installer under DOSBox)

2) When the update * .EXE running on the same 16-bit applications under Windows 32-bit, will be a correct unpack the attached file is executed correctly generated * .BAT file, but instead run the 16-bit update program (UFAND.EXE) batch issues souvor message "type 'exit' to return to Fand".

3) NullSoft script is included because it includes creating batch files to run under DOSBox or outside of DOSBox.

4) Picture illustrates that the choice of 16-bit applications update file is called and executed. Is the same if 16-bit applications running under DOSBox or under Ntvdm Windows 32-bit.














1) When the update * .EXE running on 32-bit Windows, from Windows 64-bit or 16-bit application under DOSBox is working quite correctly. (When you start a Windows 64-bit, you start a 16-bit installer under DOSBox)

2) When the update * .EXE running on the same 16-bit applications under Windows 32-bit, will be a correct unpack the attached file is executed correctly generated * .BAT file, but instead run the 16-bit update program (UFAND.EXE) batch issues souvor message "type 'exit' to return to Fand".

3) NullSoft script is included because it includes creating batch files to run under DOSBox or outside of DOSBox.

4) Picture illustrates that the choice of 16-bit applications update file is called and executed. Is the same if 16-bit applications running under DOSBox or under Ntvdm Windows 32-bit.

5) If you want to test the behavior of the program is:
   a) the need to install software from u15_cd.exe www.ucto2000.cz/download.htm (as a demo without requiring a license).
   b) install the program from an external MODULE www.zetrozet.com/index.php?load=downtbl&modul=ucto15 example KURZY32.EXE (license data must be filled, you can enter any nonsense).
   c) then you can try the difference behavior when updating an external module running KURZY32.EXE of Windows 32-bit or by calling the open program option according to the previously inserted picture.
   d) If the program runs with U64.BAT place U.BAT, will be in 32-bit Windows running under DOSBox. In this case, the updated external module is updated correctly.
   (The program is designed to tax records according to Czech law, because it is only in Czech.) Quote from: trikolka on July 28, 2015, 06:46:14 AM
2) When the update * .EXE running on the same 16-bit applications under Windows 32-bit, will be a correct unpack the attached file is executed correctly generated * .BAT file, but instead run the 16-bit update program (UFAND.EXE) batch issues souvor message "type 'exit' to return to Fand".

I understand that your mother tongue is not English, but you have included several things that confuse the question.


  • You are using Dosbox somehow and not just Windows 32 bit
  • You're including some kind of file manager by the look of it, as the message type 'exit' to return to Fand usually indicates that a file manager shell is running.
  • There is the Nullsoft aspect and a batch script, and we'd need to see the batch script.
1) The error occurs only when you run the update file from 16-bit applications on 32-bit Windows.

2) batch file for Windows 32-bit attach, it generates an installer according to user-selected directory. Because of the search for the cause was tried, the error manifests itself in exactly the same way, even if the row triggering UFAND.EXE not specify parameter. The procedure of generating the batch file is written line by line in the previously attached NullSoft script.

Code: [Select]mode con: cols=80 lines=25
set fandovrb=80
set fandwork=D:\OVER2015\
set fandcfg=D:\OVER2015\
set fandres=D:\OVER2015\
cd D:\
cd OVER2015
D:\OVER2015\UFAND.EXE D:\OVER2015\INST_ZET.RDB
set fandovrb=
set fandwork=
set fandcfg=
set fandres=

3) Users installer sets accounting program run under DOSBox only in 64-bit Windows. Use DOSBox in Windows 32-bit installer program does not adjust. I myself run a program under DOSBox used solely for the purpose of testing the conditions under which the error occurs.

I apologize for the English, I learned it only half a year in 1968, so now I use different compiler.This will solve a problem when the target folder contains a space or an & character etc and simplifies it a little
but if you are using non-latin characters then that can be an issue as the codepage may need to be changed.

It assumes that UFAND.EXE is capable of using long filenames

Code: [Select]mode con: cols=80 lines=25
set "fandovrb=80"
set "folder=D:\OVER2015\"
for %%a in (fandwork fandcfg fandres) do set "%%a=%folder%"
cd /d "%folder%"
UFAND.EXE "%folder%\INST_ZET.RDB"
for %%a in (fandwork fandcfg fandres fandovrb) do set "%%a="

Your problem can be in the Nullsoft script, which is not short and simple and I'm not familiar with the scripting language so somebody else may check that for you,

Or it could be in the UFAND.EXE program and it fails in some way, when used in the way you are using it.

and your use of Dosbox is complicating this - as the exact environment this is task is being run in is not clear.
Quote
1) When the update * .EXE running on 32-bit Windows, from Windows 64-bit or 16-bit application under DOSBox is working quite correctly. (When you start a Windows 64-bit, you start a 16-bit installer under DOSBox)
I do not think the above e is w an accurate statement,  nor does it represent areal problem in the real world.

It is not just my opinion, but the advice if many others that 16 bit program should not run on a MODERN computer if it can be avoided.

Commercial and Industrial users who depend on 16 bit programs buy older equipment and maintain it for use on their in-house projects. This is more cost-effective.

To illustrate. An experienced tech can assembly a legacy computer for old or surplus materials inside of a week.  But a good programmer could spend weeks trying to GET  an legacy 16 bit program to work  a modern computer. 
legacy computers:
http://www.makeuseof.com/tag/3-online-sources-finding-buying-computer-parts/
1) I can not pick and choose which computer users will run the accounting program, the ten million Czech Republic it is still used by tens of thousands of accounts. I just am creating this program, additional modules and the authors of that accounting software to interact leave.

2) The attached NullSoft script contains the installation in Windows 32-bit control directories and convert them to DOS-names.

3) When searching for the cause of the error has been tested as a batch file, which contained the single word "UFAND". The result was the same - when starting from the choice of accounting software in Windows 32-bit error, when other methods of lowering correct commissioning.There is a massive language barrier that I doubt will be particularly easy to permeate here.Your proposed text batch file was successful.

[attachment deleted by admin to conserve space]If choosing the 16-bit program, download the installer from the web-site and choosing the 16-bit program, then run crashes shown attached picture.
If the setup option in 16-bit only download a program, but run from explorer or Totalcommnder held the entire installation correctly.
The batch file generated NullSoft script in both cases is absolutely identical.
NullSoft script checks the 16-bit program and batch file starts to generate up if the program is ended.


Discussion

No Comment Found