Zombie WinOS2 Program object Documentation

Description
The Zombie WinOS2 Program object fixes a long standing bug in eComStation, and OS/2, where some WinOS2 programs do not terminate completely when run in the Seamless mode. The bug manifests after a WinOS2 program is closed by the hatching of the WinOS2 program object not going away, and the program showing that it is still running in system monitor programs.

The Zombie WinOS2 Program object only runs WinOS2 programs, and it only runs those programs in 386 Enhanced, Seamless mode. Non WinOS2 programs, or WinOS2 programs which are run in a mode other than Seamless 386 Enhanced, should use a regular Program Object.

In addition to starting and completely terminating WinOS2 program, Zombie WinOS2 object provides the following optional enhancements:


 * 1) The ability to use data files with long names in WinOS2 applications.


 * 1) Saving extended attributes of data files used with WinOS2 application, with certain limitations.


 * 1) Clearing of read only attribute for data files, i.e. a bug fix for Improv.

Installing
The Zombie WinOS2 Program object comes as a WarpIn archive (Zombie.wpi).

Install using WarpIn
1.Double-click on Zombie.wpi, or drop Zombie.wpi on the WarpIn icon.

2.Add Startapp to the xCenter or eCenter Window List Filter, as described below.

Once you finish the installation you will have a template object titled Zombie WinOS2 Program in the Templates folder. Drag from the template and drop on the desktop or another folder to create an object for each WinOS2 application you want to run in seamless mode.

Add StartApp to xCenter/eCenter Window List Filter
1.Right click on the window list area of xCenter/eCenter, as shown below.



2.Type Startapp in the New entry field; click the Add button.



File List
The following files are included in the distribution

File NameDescription

WINZOMBE.DLLInstalled to C:\OS2\DLL. Contains the WINZOMBE WPS class.

WINZOMBE.EXEInstalled to C:\OS2\APPS. Starts WinOS2 session and StartApp.Win program.

STARTAPP.WINInstalled to C:\OS2\APPS. Starts WinOS2 application, monitors completion of application, sends notification to Winzombe.exe of termination of application.

WINZOMBE.ICOInstalled to C:\OS2\APPS. Icon for use with WINZOMBE WPS class.

Enhancements
In addition to fixing the bug in eComStation preventing some WinOS2 program from terminating completely (see Overview), the Zombie WinOS2 Program object provides the following enhancements.

Long file names

This allows WinOS2 programs to access files with names, or along paths, which do not conform to the FAT 8.3 name format.

Save / restore extended attributes

This option saves extended attributes of a data file across executions of the WinOS2 program.

Clear read only attribute

This option clears the read only attribute of the data file, to compensate for a bug in Improv.

Long file names
WinOS2 (Windows 3.1) applications can only see files the names that fit the FAT 8.3 naming format, and which reside on a path that also conforms to the FAT 8.3 format.

When using the Workplace Shell the Zombie WinOS2 object can overcome the FAT 8.3 naming restriction using one of two methods: 1) Rename/move or 2) Copy. Either method works regardless of whether the file is dropped on the Zombie WinOS2 Program object, or associated to the Zombie WinOS2 Program object.

Do nothing
Any file dropped on a Zombie WinOS2 Program object, or associated with the object, is passed to the WinOS2 program as is.

Rename/move file
If a data file name does not conformat to FAT 8.3 format, Rename/move will rename the file to a FAT 8.3 format name before passing the file to the WinOS2 program. Upon termination of the WinOS2 program the file is renamed back to its previous name.

If the file resides on a path with a directory that does not conform to the FAT 8.3 format, the file is moved to the root directory of the same drive, or to the directory specified in ZOMBIE_DIR, before the WinOS2 program is started. The file is moved back to its original location at termination of the WinOS2 application.

Rename is faster that copy.

Copy file
If a data file name does not conformat to FAT 8.3 format, the data file is copied to the same directory with a FAT 8.3 compatiable name. Upon termination of the WinOS2 application the file is copied back over the original file, keeping the original file's name.

If any of the directories along the path do not conform to FAT 8.3 naming, the file is copied to the root directory, or the directory specified in ZOMBIE_DIR, before the WinOS2 application is started. When the WinOS2 application terminates the file is copied back to its original location, overwriting the original file.

Note that renaming and/or moving a file is faster than copying a file.

Rename/move or copy file
When this button is selected, files are renamed and/or moved when possible, and copied when a rename or move is not possible. A rename and/or move is not possible in the following two situations:


 * When the file is in UNC format, i.e. the file resides on a remote machine and you access it with the File and Print Client Resource Browser - which is located in the Local Network folder.




 * Any directory along the path of the data file is not in FAT 8.3 format, and the path specified in ZOMBIE_DIR is on a different drive than the path containing the data file.

Do not copy back - read only
If the data file is copied, and you know that you will not be making changes to the data file, selecting this option saves the work of copying the file back to its original location and/or name.

You might want to use this option, for example, when you are running WordView.exe, which does not allow any changes to the MS Word document being viewed.

FrameMaker backup file
If the Automatic Backup on Save, or Automatic Save options are selected in Preferences, FrameMaker will create a backup file, and possibly an autosave file.

Selecting this option will insure those file(s) are moved or copied back to the original location of the data file when FrameMaker terminates. It will also insure the backup/autosave file(s) are renamed back to their original names, if the data file had to be renamed to a FAT 8.3 name.

Save / Restore Extended Attributes
Most WinOS2 applications destroy the extended attributes of any data files they open.

The Save/restore extended attributes option preserves extended attributes across the execution of a WinOS2 application; extended attributes of any data file passed to the WinOS2 application are saved before the application is started, and restored after the WinOS2 application terminates.

You should keep the following points in mind when using Save/restore extended attributes:


 * Extended attributes are only saved for files passed to the WinOS2 application by the Workplace Shell, (i.e. when you drop a file on the Zombie WinOS2 Program object or when you double click on a data file associated with a Zombie WinOS2 Program Object.) Files that are opened within the WinOS2 application, for example with the application's File - Open menu, do not have their extended attributes saved.


 * Most WinOS2 application do not lock extended attributes while they have a file open. If you change any extended attributes of a data file while it is open in a WinOS2 application, those changes will be overwritten with the saved attributes when the WinOS2 application terminates.

Tip: One way of preventing yourself from accidentally opening a file within a WinOS2 application and potentially losing the extended attributes is to only use long file names on data files. You can use the Long File Names feature of the Zombie WinOS2 Program object to use the file with the WinOS2 application, but the file will be invisible in the File - Open dialog of the WinOS2 application.

Clear Read-Only Attribute
When the Clear read only attribute option is selected the Zombie WinOS2 Program object will clear the read-only attribute for the data file after the WinOS2 application has terminated.

Some WinOS2 applications set the read-only attribute of a data file when they open that file, and clear the attribute when they close the data file. This is done to multiple users, or more than one application, from making changes to the file at the same time.

The Clear read only attribute option is for use with WinOS2 applications which do not clear the read-only attribute when closing the data file while running in WinOS2; Lotus Improv is one such application.

Note: Files have attributes, and extended attributes. Attributes are recognized and utilized by OS/2, WinOS2 and DOS applications. Extended attributes are only recognized and utilized by OS/2 applications.

There are always four attributes for each file, and they are: Archive, Read-only, Hidden, and System. Each attribute has only two possible values: clear or set.

Extended attributes are optional for a file, meaning there may be no extended attributes, or multiple extended attributes for a single file. See Extended Attributes for more information.

ZOMBIE_DIR
This environment variable determines where files are copied or moved for the duration of execution of the WinOS2 application. Data files are only copied or moved if a directory along the path of the data file does not meet the FAT 8.3 naming standard, and you have selected a Long File Names option.

It is not necessary to set ZOMBIE_DIR for the Zombie WinOS2 Program object to function correctly. You only need to set this environment variable if you want to alter the default behavior. The default behavior is: files are moved or copied to the root directory of the drive of the data file - UNC data files are copied to the root directory of the boot drive.

If you choose to set ZOMBIE_DIR, the ideal place is on the Environment page of the Zombie WinOS2 Program object, provided you have DragText installed. (One of the features of DragText is the addition of an Environment page to Program objects.) This allows you to set a different directory for each Zombie WinOS2 Program object, meaning each WinOS2 application, as shown in the figure below.



If you don't have DragText installed, or don't need the flexibility of specifying a different directory for each WinOS2 application, you should set ZOMBIE_DIR in your CONFIG.SYS file as shown in the example below.

SET ZOMBIE_DIR=C:\TEMP

Regardless of where you set ZOMBIE_DIR, all directories on the path in ZOMBIE_DIR must conform to the FAT 8.3 format.

The pound sign ( # ) can be used as a wild-card for the drive letter in ZOMBIE_DIR, as shown below.

ZOMBIE_DIR=#:\ADIR

When the wild-card is used, the Zombie WinOS2 Program object will place the data file in that path on the same drive as the original data file. This means you will have to create the path specified in ZOMBIE_DIR on each drive that may contain a data file.

If a path is specified in ZOMBIE_DIR, and the path does not exist, it is an error.

Usage Information
The Zombie WinOS2 Program object appears in the Templates folder.

You need to create a Zombie WinOS2 Program object for each WinOS2 program you want to run in seamless mode.

While a WinOS2 application is running the Window List will show two additional programs running: one with the title you enter in the Zombie WinOS2 Program object, the other called Startapp. In the example below the two addition programs show up as FrameMaker 5 and Startapp.

You may want to filter Startapp out of the Windowlist widget in eCenter/xCenter; you cannot filter Startapp out of the OS/2 Window List.

Setup Strings
These keyword=value strings can be used with the REXX functions SysCreateObject and SysSetObjectData to create and modify Zombie WinOS2 Program objects. They can also be used with xWorkplace Setup String objects.

Keyword Description

LONGNAMES Corresponds to settings in the Long Names box on the Enhancements page. The possible values are:

NO      Same as Do nothing.

RENAME Same as Rename/move file.

COPY    Same as Copy.

YES      Same as Rename/move or copy file.

READONLY Same as Do not copy back - read only on the Enhancements page. Possible values are YES and NO. YES means if the data file was copied before the WinOS2 application started, it will be deleted rather than copied back. NO means any data file that was copied by the Zombie WinOS2 Program object will be copied back to its original name and/or location.

FRAMEMAKER Same as FrameMaker backup file on the Enhancements page. YES means any backup or autosave files created by the WinOS2 application FrameMaker will be copied and/or renamed back to the original location (and/or name) of the data file.

SAVEEA Same as Save/restore extended attributes on the Enhancements page. YES means extended attributes of the data file are preserved across the execution of the WinOS2 application.

CLEARATR Same as Clear read only attribute on the Enhancements page. YES causes the read-only attribute of the data file to be cleared when the WinOS2 application terminates.

Lotus Improv
The following issues exist with Lotus Improv.


 * 1) You must use the executable IMP20W.EXE instead of IMPROV.EXE in the Zombie WinOS2 Program object. If you specify IMPROV.EXE as the program, Improv will start and then immediately terminate. IMP20W.EXE is located in the same directory as IMPROV.EXE.


 * 1) Improv has a tendency to not clear the read only attribute of the model file (data file) when it terminates. Check the Clear read only attribute checkbox on the Enhancement page to fix this issue.

Extended Attributed
Every file contains data in the file, and attributes attached to the file. Attributes fall into two categories regular attributes and extended attributes.

Regular attributes, or just attributes, always exist for every file. There four: Archive, Read only, System, and Hidden. Each attribute has only two possible values: set or clear. All applications, OS/2, WinOS2 and DOS, recognize and can use regular attributes.

Extended attributes are optional: a file may have no extended attributes or it may have many extended attributes. What can be stored in each extended attribute depends on the extended attribute. Only OS/2 applications recognize extended attributes.

There are 14 standard extended attributes, plus additional extended attributes which may be defined by any application. Five of those 14 standard extended attributes can be used by you to help identify the contents of a file, or what has happened to the file. Those attributes are:

Name   Description

.COMMENTS Any text you want to enter about the file or its contents.

.SUBJECT A brief description of the file or what it is about. This has a limit of 40 characters.

.KEYPHRASES One or more phrases you can use to help identify the file. Keyphrases can be especially useful when searching for files.

.HISTORY One or more entries identifying what has happened to the file. Each entry is in the form of

person action date

where action is: created, changed or printed. For example:

John created 2/10/2010 Peter changed 2/13/2010 Luke changed 3/1/2010 John printed 3/4/2010

.VERSION one or more entries identifying the version of the file, or data in the file.

If you have installed the extended desktop in eComStation (or are using xWorkplace) you can view the extended attributes on the File tab of the properties notebook for a file. You can also change some of the extended attributes here.



You can also search on the values in extended attributes when using the Find option on the popup menu on the desktop, or use filter the files shown in a folder using extended attributes, as shown below.



UNC File Names
Files located on remote systems can be accessed two ways:


 * 1) By mapping a drive or directory on the remote system to a drive letter.


 * 1) By referring to the file using Universal Naming Convention (UNC) syntax.

Mapping to a Drive Letter
Mapping a remote drive, or a directory on a remote drive, to a drive letter is the most common method of accessing files on remote systems. This is usually done with the NET USE command, e.g.

NET USE R: \\SERVERZ\DDRIVE.

(The above command maps the root directory of the DDRIVE on the remote machine SERVERZ as the local drive letter R: )

Once mapped, files on the remote system can be accessed as if they resided on a local drive; the Workplace Shell creates a Drive object in the Drives folder for the new drive letter. The networking software redirects requests for the file through the network to the remote machine automatically.

Most WinOS2 applications can only access remote files through redirection provided by mapping to a local drive letter.

Universal Naming Convention
The alternative to mapping a drive or directory on a remote system to a local drive letter, is to refer to the remote file by its UNC name. The convention is:

\\remote_machine\resource\path

where:

Part  Description

remote_machinename of the machine on which the file is located.

resourceThe drive or directory on the remote machine which has been shared to the network.

pathThe path and file name of the file.

In the Workplace Shell (WPS), when using UNC, you access files on remote machine through the File and Print Client Resource Browser object, located in the Local Network Folder.

+---      +---              +---



The file and Print Client Resource Browser shows all the machines accessible on the network. Double-clicking on a machine object opens a folder showing the resources available on that machine.



Double-clicking on a folder opens the equivalent of a Drive object for the remote machine. The difference is all the files in the object are referenced in UNC.



If you drop a file from the UNC Drive Object and the file is located in a path which has been mapped to a local drive letter, the WPS will convert the file name to the mapped drive letter syntax. Otherwise the file name is passed to the WPS object in UNC.

If you drop a file in UNC on a Zombie WinOS2 Program object, and that object has the Copy file option selected, the Zombie WinOS2 Program object will copy the file to a local drive and pass the name of the local file to the WinOS2 application - and then copy the file back to its original name and location upon terminate of the WinOS2 application.

XR_M014
The following text is from the readme of fixpack XR_M014 for OS/2 Warp v. 3. It explains the zombie thread bug issues partially addressed by the Zombie WinOS2 Program object.

4.0.6 Windows Printer Drivers Leave a Zombie Thread Running

A problem occurs with some Windows printer drivers where a zombie thread is left running after the program that loaded it is exited.

This does not occur when the program is run from a Seamless instance of PROGMAN or from a Full Screen session because when these are exited the whole WINOS2 Subsystem is exited.

This problem has been reported for the Adobe and Hewlett Packard Windows printer drivers. To correct this problem for people running with these drivers ONLY who have experienced symptoms such as:


 * exiting a program running seamlessly after printing, or


 * setting up a printer and seeing the icon not being unhatched, and/or

Add the following line in OS2\MDOS\WINOS2\SYSTEM.INI in the *boot* section:
 * not being able to start another copy of the program.

backgroundtasks=run_enum.exe,hpfbkg02.exe then restart WINOS2.

Note: There may be other drivers that have the same problem. If you experience a similar problem with other drivers, please report it so the correct SYSTEM.INI entry can be determined.

The Zombie WinOS2 Program object does not address the issue of setting up a printer and that icon not becoming unhatched; it does address the other two issues listed above.

From the Command Line
If the WinZombie WinOS2 Program object does not fit your needs you can run seamless WinOS2 programs from the command line.

Syntax
WinZombe.exe [-flags] [-option -option] WinOS2_program [arguments]

Flags
None, one or multiple flags can be specified. Flags can be grouped together (e.g. -RCA), or each flag can be specified separately, (e.g. -R -C -A)

Flag  Description

R Rename/move a data file whose name or path is not FAT 8.3 compatible.

C Copy a data file whose name or path is not FAT 8.3 compatible.

B Both rename/move or copy the data file. This is the same as specifying /RC.

A The data file is read-only; do not copy back data file when the WinOS2 application terminates.

F FrameMaker backup/autosave files. Rename or copy back any FrameMaker backup files associated with the data file.

E Save extended attributes of the data file.

i Clear read-only attribute on the data file.

n where n is a integer between 1 and 9. This identifies which argument is the data file name. It is only necessary if the data file name is not the last argument.

K Pass the environment of the process executing winzombe.exe to the WinOS2 program. This is mutually exclusive of the /S option. It is useful if the environment of the process already contains whatever DOS/Windows settings are needed as environment strings.

L Start WinOS2 application minimized.

M Start WinOS2 application maximized.

N Start WinOS2 application normally - this is the default.

Options
None, one or multiple options can be specified. Each option must be preceded with a dash and the option letter. Possible options are:

Option  Description

T Title for the program in the Window List. If the title contains spaces it must be enclosed in double quotes. Example:

-T"Lotus Improv"

D Startup directory for the WinOS2 program. Must be FAT 8.3 compatible. Example:

-DE:\IMPROV

S DOS / Windows settings. Only non-default settings must be specified. You can combine settings together, separated with the pipe character ( | ). For example:

-SDOS_HIGH=1|DOS_FILES=35

WinOS2_program
The program_name of the WinOS2 program to be run must be fully qualified, i.e. it must contain the drive and path.

Arguments
Any arguments specified after the WinOS2 program_name are passed to the WinOS2 program when it is started. If you are passing a file name as an argument to the WinOS2 program, and the file is not the last argument, the ordinal must be specified as a numeric flag.

Examples
winzombe e:\improv\imp20w.exe

Runs the program imp20w.exe.

winzombe e:\improv\imp20w.exe e:\docs\budget.imp

Runs the program imp20w.exe passing e:\docs\budget.imp as an argument to imp20w.exe

winzombe -re c:\wordview\wordview.exe "e:\docs\notes from the meeting.doc"

Runs the program wordview.exe, renames the file "notes from the meeting.doc" to a name in FAT 8.3 format, and passes that name to the program wordview.exe. When wordview.exe terminates the file is renamed back to "e:\docs\notes from the meeting.doc". Any extended attributes for the file "notes from the meeting.doc" are preserved.

winzombe.exe -i4 -t"My Application" c:\programs\editor.exe d:\code\test.txt /reformat

Runs the WinOS2 program editor.exe. Clears the read-only attribute for the file D:\CODE\TEST.TXT when editor.exe terminates. Specifies the data file is the fourth argument.

Uninstalling
The Zombie WinOS2 Program class is designed to be easily uninstalled.

To uninstall:

1.Double-click on the WarpIn object.

If you have trouble finding the WarpIn object, you can execute the file

C:\ECS\INSTALL\WARPIN\WARPIN.EXE

where C: is the drive where you installed eComStation.

2.Select the Zombie WinOS2 Program Object - WPS Class, right click and select De-install package from the pop-up menu.

3.You will be prompted by WarpIn to restart the desktop. Answer Yes to unlock files. Restart the desktop.

4.De-install Zombie WinOS2 Program Object - Executables package. You do not need to restart the Desktop.

5.De-install the Zombie WinOS2 Program Object - Help package. You do not need to restart the Desktop.

Author

 * Doug Clark