We are experiencing some problems with Client/Server BR on a Windows Server 2008 virtual machine running on a Linux server.
Problem 1:
An example of a shell call from our software:
execute “sy –M f:\pjc_apps\bcbs_mst.01\pjcbcb~1.exe”
does not work, because Linux removes the space between -M and the f:\pjc_apps\bcbs_mst.01\pjcbcb~1.exe.
Problem 2:
Linux doesn't like MS-DOS names such as pjcbcb~1.exe
Does anyone know any workarounds for this? It would suck to have to comb through hundreds of programs and check all our execute statements and MS-DOS names.
Problems with BR on Windows virtual machine running on Linux
Moderators: Susan Smith, admin, Gabriel
Re: Problems with BR on Windows virtual machine running on L
This sounds like a problem relating to the Windows emulator.
What emulator are you using?
Have you considered using WINE?
What emulator are you using?
Have you considered using WINE?
Re: Problems with BR on Windows virtual machine running on L
f:\pjc_apps\bcbs_mst.01\pjcbcb~1.exe
Start by shelling CTRL-] from BR, and try the command directly from the CMD prompt. That often helps to figure things out.
The second issue. pjcbcb~1.exe is the "8.3 Short Name" for the file. It is not actually the "Guaranteed Name", for example it might end up being pjcbcb~2.exe . This is particularly true when you start moving things around, renaming, etc.
The "Long term answer" is to use the "LONG NAME"
For example instead of C:\Progra~1, use C:\Program Files.
The good news is that BR is able to help with this type of task, so it doesn't have to be manual.
We export our source code to a folder on the network, and then using Notepad++, we can search for text in programs. In this case, a regular expression. Before we did this, we wrote BR scripts to perform similar tasks (Through every program).
Sounds to me you want something like List '~1' '.exe'
The "Regular Expression" for Notepad++ would be: .*~1.*\.exe
Basic Reference document for Regular Expressions http://www.aprelium.com/abyssws/article ... asics.html
The "Proc" in BR to fix something like this would be
Fix_Longname.prc
The you just load the program (In a proc if you like I think there is a RELOAD sample somewhere).
LOAD PROGRAM1
SUBPROC Fix_Longname.prc
LOAD PROGRAM2
SUBPROC Fix_Longname.prc
PS: I intentionally ignored "Quotes", and that might matter as long file names tend to use quotes.
We build a Library:
23120 DEF LIBRARY Fnexe(Exe_Parameters$*32,Exe_Name$*256;Exe_Filename$*256,Exe_Add_Parameters$*2048)
The we call the fnexe as appropriate.
using your example
FNEXE("-M QUOTES=NONE","execute “sy –M f:\pjc_apps\bcbs_mst.01\pjcbcb~1.exe”,"Optional_Filename_1","Optional Additional Parameters")
Quotes=None is an option the FNEXE recognizes, it tells it not to add quotes to the "EXE_FILENAME$"
By using a library, you can perform quite a bit of cleanup, trap for problems, etc. It is also a good way to prepare for Client Server.
Start by shelling CTRL-] from BR, and try the command directly from the CMD prompt. That often helps to figure things out.
The second issue. pjcbcb~1.exe is the "8.3 Short Name" for the file. It is not actually the "Guaranteed Name", for example it might end up being pjcbcb~2.exe . This is particularly true when you start moving things around, renaming, etc.
The "Long term answer" is to use the "LONG NAME"
For example instead of C:\Progra~1, use C:\Program Files.
The good news is that BR is able to help with this type of task, so it doesn't have to be manual.
We export our source code to a folder on the network, and then using Notepad++, we can search for text in programs. In this case, a regular expression. Before we did this, we wrote BR scripts to perform similar tasks (Through every program).
Sounds to me you want something like List '~1' '.exe'
The "Regular Expression" for Notepad++ would be: .*~1.*\.exe
Basic Reference document for Regular Expressions http://www.aprelium.com/abyssws/article ... asics.html
The "Proc" in BR to fix something like this would be
Fix_Longname.prc
Code: Select all
list 'pjcbcb~1.exe' rep 'pjcbcb long version.exe'
list 'pjcbcb~1.exe' rep 'pjcbcb long version.exe' >redir.[session]
subproc redir.[serssion]
list 'other~1.exe' rep 'otherlong version.exe'
list 'other~1.exe' rep 'otherlong version.exe' >redir.[session]
subproc redir.[serssion]
LOAD PROGRAM1
SUBPROC Fix_Longname.prc
LOAD PROGRAM2
SUBPROC Fix_Longname.prc
PS: I intentionally ignored "Quotes", and that might matter as long file names tend to use quotes.
We build a Library:
23120 DEF LIBRARY Fnexe(Exe_Parameters$*32,Exe_Name$*256;Exe_Filename$*256,Exe_Add_Parameters$*2048)
The we call the fnexe as appropriate.
using your example
FNEXE("-M QUOTES=NONE","execute “sy –M f:\pjc_apps\bcbs_mst.01\pjcbcb~1.exe”,"Optional_Filename_1","Optional Additional Parameters")
Quotes=None is an option the FNEXE recognizes, it tells it not to add quotes to the "EXE_FILENAME$"
By using a library, you can perform quite a bit of cleanup, trap for problems, etc. It is also a good way to prepare for Client Server.