Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

3244 lines
165 KiB

Darwin Setup Development Notes through 12/31/96
-----------------------------
Release 0.10.00.2431
-----------------------------
96-12-30 bench ExecuteFinalize now commits (or rolls back or deletes)
the database, rather than Engine.Terminate doing so. By
commiting the database in this action, we can ensure that if any
actions after ExecuteFinalize (starting the app, starting
help, etc.) fail for whatever reason, the database will
still be commited (and remain in sync with the config
database). This would not occur if Terminate did the
database commitment.
As such, Engine.Terminate no longer takes the boolean
indicating whether to commit the database or not. Any
clients that relied on Terminate to commit the database
should now commit the database before calling Terminate.
Note, Engine.Sequence properly handles the commitment of the
database during an install, so any clients using the engine
to do an install (by calling DoAction("Install") for
instance) do not need to explicetely commit the database.
96-12-27 davidmck Checked in code to allow us to track reference
counting bugs down a bit more easily. This code is in the
debug version, but only is turned on for those
objects that are explicitly turned on.
Turn on reference tracking for an object by setting
the TRACK_OBJECTS environment variable to a list of
comma separated iids you want to keep information on.
This code is currently only in the services DLL.
-----------------------------
Release 0.10.00.2415
-----------------------------
96-12-14 malcolmh Security for our server when running as a service is
now set automatically by the service. There is no
need to use dcomcnfg anymore.
-----------------------------
Release 0.10.00.2414
-----------------------------
96-12-14 mattwe MsiUtil: Turned off building debug launchers by
default. From VB, call
util.LinkerDebugOn to set them on.
-----------------------------
Release 0.10.00.2413
-----------------------------
96-12-12 bench The ixoReg* operations have been updated to allow
modification of the HKEY_CURRENT_USER hive when running
as a service. Entries have been added to the
Registry and RemoveRegistry tables in the testdb to modify
this hive. Note: this does not yet work on Win95.
96-12-12 alanr MSIGEN: MakeTables SourceDirectory and SourceFile
table generation now use true Sysdiff directory names
instead of Darwin property names. Short filenames
have also been added for Default names of directories
specified by predefined properties.
-----------------------------
Release 0.10.00.2412
-----------------------------
96-12-11 malcolmh The server can now be run as an local server or a
Win32 Service.
Use /regserver to register as a local server
Use /regservice to register as a service if possible.
Currently this registers as a service on NT and
local server on Win95.
Use /unregister to unregister the server (local
server and service)
When the service is registered and unregistered it
is installed and uninstalled from the system.
The server can only be registered either as a local
server or as a service. All previous registration is
removed each time the server is registered.
You can use the Services Control Panel to view the
status of the service, or to stop it.
96-12-11 bench MsiPatch: BuildAcmePatch populates a Component table
rather than a Selection table. The Selection table
in patship.msi has been replaced with a Component
table. Note: patch application will not work correctly
until that is updated also. Stay tuned.
96-12-11 johndelo Added new SummaryInformation property:
PID_MSISOURCE, Source Type, which specifies the source file image
type, short or long filenames, and tree(Directory
table) or cabinet&file(Media table). See SummaryInfo
help topic.
Engine mode flags iefNoSourceLFN and iefCabinet are
set from this summary property. SumInfo.Exe has been
updated as well (testdb is currently set to 1, short
names in tree). File copy will need to be updated to
use these flags.
96-12-11 bench MsiPatch: input to BuildAcmePatch changed to include
unique product keys for each app. See help for more
info.
96-12-11 mattwe MSIGEN: Update sysdiff INF parsing to use
feature/components
Known Issues: Registry table gets the Uninstall keys
points at Acme.
Will replace this with a call to msiexec /m
96-12-11 alanr MSIGEN: MakeTables updated to handle ityDif, NT Sysdiff ($OEM$),
directory, generating the following tables: File, Directory, Component,
Feature, FeatureComponents, SelfReg, SourceFile, and SourceDirectory.
-----------------------------
Release 0.10.00.2411
-----------------------------
96-12-10 bench Moved script opening out of Engine::Initialize.
Scripts should only be created if an operation other
than ixoActionStart, ixoHeader or ixoEnd is executed
when running as a client or when running stand-alone and
the SCRIPTFILE property is set. Help is on the way.
-----------------------------
Release 0.10.00.2410
-----------------------------
96-12-09 bench Fixed some errors in the database from the
Selection->Component/Feature changeover,
added an ActionData message to ixoShortcutCreate, and
changed the InstallFiles and RemoveFiles actions to only do
ixoProgressTotal if the progress total is > 0, all in hopes
of fixing the progess and logging of the various
actions. If any actions don't dispatch progress or log
entries that should, write strange log entries, etc.,
bugs should be posted. Note: an Action shouldn't be logged
or be in the script if it doesn't do anything (i.e. doesn't
use operations or dispatch progress).
96-12-09 thussey The launcher now copies over the server along with
the darwin dlls, but does not register it.
96-12-09 tracyf Updated the helpfile to match the new
Feature/Component table architecture.
-----------------------------
Release 0.10.00.2409
-----------------------------
96-12-07 ivanw Changed the handler to match the changes in the
SelectionManager
96-12-06 mattwe dbview: Forced ivcFetch intent on Selects, took out error when it
wasn't set. See ChetanP.
96-12-06 mattwe MSIGEN: Integrated Sysdiff INF parsing into MakeTables.
Updated the properties used from the obsolete ones.
Marked most of the locations that we need to do feature\component
work in the code with //!! FEATURE/COMPONENT comments.
96-12-05 tracyf I've checked in all the changes that split the
Selection table in the Feature, Component, and
FeatureComponents tables. However, there's still work to be
done in the Handler before the TestDB can be executed
properly. I'll be fixing the help files as soon as
possible.
96-12-03 malcolmh - Changed Conman::Add/RemoveProduct to
Register/UnregisterProduct.
- Added Conman::Register User. RegisterProduct now
registers only product-specific info. The user info is
registered via RegisterUser, perhaps at an app's
first run.
-----------------------------
Release 0.10.00.2329
-----------------------------
96-11-27 johndelo The ConfigurationManager property has been exposed
to automation from MsiEngine.
The SelectLanguage method has been moved to MsiEngine
from MsiHandler.
96-11-26 johndelo MsiEngine.Initialize no longer takes services and
handler pointers. The objects are obtained as needed by
CreateInstance or from the config manager.
MsiEngine.Initialize takes an enum, iuiEnum type in
engine.h, that specifies the UI level desired, from
iuiFull to iuiNone.
The value iuiBasic uses the IMsiMessage
implementation in the engine default UI handler instead of loading
A new property, "UI", is now recognized by the launcher,
which sets the iuiEnum value as follows:
UI=Full iuiFull (default, if not present)
UI=Reduced iuiReduced (no modeless dialogs)
UI=Basic iuiBasic (used engine message handler)
UI=None iuiNone (no UI displayed)
Only the first letter is examined, case insensitive.
The engine object now always has a valid services and
configuration manager, so no tests against 0 should
be made.
96-11-26 bench Renamed almost all folder properties from *Dir to
*Folder. Old properties are still being set. Added
some new folder properties. See help for more info.
96-11-26 ivanw Changed the way progress messages handled in the
handler. The Handler stores the name of the Action from
the ActionStart message. Therefore it does not have
to be included in the third field of the Progress
messages anymore. Also if an action consists of equal
size steps, it can use the ActionData messages to drive
the progress indicators. In this case it sends one
Progress message with the number of the total steps and
NULL as the current progress. This signals that the
Handler has to count the ActionData messages and
treat them as Progress messages.
96-11-26 ivanw Implemented the ActionDone message in the
Handler::Message method
-----------------------------
Release 0.10.00.2326
-----------------------------
96-11-25 johndelo Log is now fixed. Temporarily, if no handler is
specified (handler="") the default, simple UI will be
used instead.
In the next build, the UI level will specifyable on
the command line and passed to MsiEngine::Initialize.
It will no longer be possible to specify DLL names on
the command line (components must be registered).
Necessitated by operation as a server/service.
96-11-22 malcolmh Added Register/Unregister folder to conman. Fixed
bug 686.
-----------------------------
Release 0.10.00.2322
-----------------------------
96-11-21 johndelo MsiRecord as a new "Data" property typed as variant,
that will transfer any MsiRecord type--see help.
This greatly simplifies record object management by VB
scripts.
96-11-21 johndelo The enumerations for input and return from the Message
functions have changed, necessitated by the remote execution model.
At the same time, missing message types were added.
Message type: OLD: icmt NEW: imt
Message status: OLD: icms NEW: ims
Note that the message type is store in the high byte;
the other bits are used to specify the buttons and icon desired. See engine.h
Most callers currently specify imtError, which shows only an Ok button.
Most of these uses within the actions need something else.
You now must OR in the message box button set (if not simply Ok)
and the default button (if not the first).
When using a switch on the return value of Message,
specify cases only for the non-default buttons.
The default: case will catch the default button as well as imsNone
(if running silently), assuming the default for quiet is the same.
There is no longer a need to Assert in all the Message returns,
as bad returns can be caught further upstream now.
The use of a {buttons} list in error messages is no longer supported.
The message attributes are defined identically to Win32.
The defines in msiauto typelib Constants have been updated.
96-11-21 johndelo ODBC databases, including .MDB files, now require a
valid _SummaryInformation table. Properties are read
from this table in the same way as the summary info
is read from MSI _SummaryInformation stream. ODBC
databases will always be opened read-only by
Engine::Initialize, and they can be used to generate a
maintenance mode database.
96-11-21 ivanw Handler::Break is implemented.
96-11-21 chetanp provided execute functions for the progman item
creation/ deletion actions
96-11-21 chetanp provided execute functions for the configuration
manager interface
96-11-20 malcolmh The configuration manager no longer gives an error
when trying to run an installation after aborting an
installation (i.e. killing the installer process) .
96-11-20 malcolmh The C++ version of GetProductInfo now takes an
rpiRecord for the product information, allowing it to
return errors if necessary.
96-11-20 ivanw Changed the Handler so it uses the message box
enums. Also changed the error messages in the Handler that
used non default buttons.
96-11-20 ivanw Added screenreader accessibility to the popup menues
in the SelectionTree. We detect when a screenreader
is running and modify the UI so it uses only controls
that the screenreader can read. This requires no
extra effort on the autrhors side! With this addition,
Darwin Window UI is completely blind accessible.
96-11-20 johndelo MsiEngine::Initialize now determines database type
by content, rather than by file extension (bug 545).
The logic is: 1. If it is a storage file or resource
marked as MSI by SummaryInformation, then it is MSI.
2. If it has the Access DB signature, then it is MDB.
3. If it is UNC without a 3-char extension then it
will be attempted to open as SQL Server DB. 4. Else it
will be opened as an ODBC data source.
96-11-19 malcolmh mkerrtbl now generates an RTF file for inclusion in
the help file
-----------------------------
Release 0.10.00.2319
-----------------------------
96-11-18 bench UpdateResource action defers execution
96-11-17 ivanw Implemented defered execution in Register/Unregister
Fonts
96-11-16 davidmck Added a DebugLog capability to the IMsiDebug object
and implemented it in the Services DLL. Writes a
debug log when the normal log is not available.
96-11-16 davidmck Added Memory object tracking the CMsiCursor,
CMsiTable, CMsiRegKey. Also added routines to give a list of
leaked objects by type and number.
Modified AllocObject to handle the fact that RTTI
information does not transfer across DLLs.
96-11-16 mattwe MsiGen: Added ImportINF that reads a SysDiff
INF (AddReg, DelReg and UpdateInis sections)
Known Issues: The registry value column from an INF
is generally too long to import into Access.
The Directory_ column of the IniFile is currently
the path from the INF, not looked up/added to the
Directory table. This needs integration with AlanR's
forthcoming work.
96-11-15 ivanw Implemented defered execution in Create/Delete
Shortcuts
96-11-15 bench Removed the Selection_ column from the Resource
table in the testdb. This column prevented the
UpdateResources action from working on the testdb.
96-11-15 chetanp The CMsiView object now supports INSERT DELETE and
UPDATE
SQL stmts. Please see help on MsiView object for the
sytax
96-11-15 davidfer MsiUtilities: Updated column names for compatibility
with latest Darwin database format (KeyFile ->
Cabinet & DiskLabel -> VolumeLabel)
-----------------------------
Release 0.10.00.2315
-----------------------------
96-11-14 mattwe MsiLocalize: Added volumecost and scrollabletext support
Known issues: billboards no longer generate errors, but
also don't generate to the RC file. Still to determine
if this fixes the overall issue since billboards are
custom controls in Darwin, and don't map to windows
controls easily.
96-11-14 johndelo TestDB test database will only be released as an
.MSI file. There are too many problems associated with
various flavors of ODBC.
We are phasing out MDB files as we cannot support
full functionality without an excessive amount of work.
These can still be built
using MsiTable.EXE or the makefile with explicit
targets, testdbmdb and tdbmacmdb.
96-11-14 bench Re-wrote SelfRegModules, SelfUnregModules,
WriteIniValues and RemoveIniValues actions to defer execution.
The description string for WriteIniValues changed
slightly and the testdb has been updated to reflect
this.
96-11-14 tracyf Thanks to the new deferred execution model for
actions, a new attribute is needed for files in the File
table - if a file in a cabinet is split across disks,
the 'Split' attribute bit must be set. See the File
table topic in the helpfile for more info.
96-11-14 malcolmh The storage object now correctly handles
DeleteOnRelease on Windows 95. Previously if a database was
persisted with idpPersist on Win95 the database was not
actually deleted. This fix fixes a number of bugs
(604, 622, 606, 648, to name a few).
96-11-13 tracyf Re-wrote the InstallFiles and RemoveFiles actions to support
deferred execution.
-----------------------------
Release 0.10.00.2312
-----------------------------
96-11-11 malcolmh Modules can once again be compiled as EXEs. Multiple
CLSIDs in each module are now handled.
96-11-11 thussey MAC: Some minor changes to the files copied to the
release point. RegMsi is now copied instead of the
defunct RegAuto. The test database (tdbmac.msi) is now
copied. The proper creator signatures are now used.
Also, we no longer try to copy the non-existent loader.
96-11-10 bench Re-wrote the WriteRegistryValues and RemoveRegistryValues
actions to use the ixo* operations. Also, the
messages logged and displayed by these actions are now
of the type "Key [1], Name [2], Value [3]" rather than
"Root [1], Key [2], Name [3], Value [4]" and
Key includes the root name (such as
HKEY_LOCAL_MACHINE\Software\Microsoft).
The InstallSequence table in the testdb has been
changed to reflect this.
96-11-08 thussey Darwin was inconsistent about how it named methods
which returned enumerations. The OLE automation
standard specifies that property names that return
a collection are named the plural of the object in
the collection. Also, the C++ names have been
changed to be consistent. We should all adopt this
standard in the future.
Old Name OLE name C++ name
msiPath
GetSubFoldersEnum SubFolders GetSubFolderEnumerator
msiRegKey
GetValuesEnum Values GetValueEnumerator
GetSubKeyEnum SubKeys GetSubKeyEnumerator
msiStorage
EnumerateStreams Streams GetStreamEnumerator
EnumerateStorages Storages GetStorageEnumerator
msiConfigurationManager
EnumerateApplications << gone from project >>
EnumerateComponents Components GetComponentEnumerator
EnumerateComponentClients ComponentClients GetComponentClientEnumerator
96-11-08 bench Added MsiRegKey::Key method, which returns the full
path of the key, including the root name. See help
for more info.
96-11-08 chetanp Further explanation of my comments below -
The IMsiView object (SQL query handler) now flags
any attempt
to modify a persistent column (via
insert/update/delete) in a table,
as an error, IF the database is NOT in the idsWrite
mode.
96-11-08 chetanp put correct check on database writability in
CMsiView object.
Need to remove the "State" column from the "File"
table.
-----------------------------
Release 0.10.00.2308
-----------------------------
96-11-08 malcolmh Fixed a bug requiring that an automation user create
a services object prior to using the configuration
manager.
96-11-08 ivanw If the user enters a new volume in the PathTailEdit
control, the volume is added to the list in the
DirectoryCombo control.
96-11-08 ivanw Changed the strings shown on the SelectionSize
controlaction. The string and the size is different if the
selected item is expanded or colapsed in the tree.
96-11-08 ivanw Directory combo shows the UNC path for remote
volumes.
96-11-07 chetanp A note to the testers that SelfReg action has now
changed to SelfRegModules
and SelfUnreg to SelfUnregModules. Please see more in
the help.
96-11-07 bench Changed the MsiMalloc function LcbOfBlock to
GetSizeOfBlock. The code and doc differed, and
GetSizeOfBlock sounds better, so all instances of LcbOfBlock were
changed to GetSizeOfBlock. Any tests previously
calling LcbOfBlock must be updated.
96-11-07 ivanw Removed the ErrorString DialogAttribute. (it was
used for error dialogs only)
96-11-06 chetanp added shared files support in shared.cpp. Needs the
Component, and the
KeyFile tables and the PrepareSharedFiles and the
ProcessSharedFiles
actions. More on these in the help.
96-11-06 chetanp changed the ivcEnum flag values for
IMsiDatabase::OpenView function.
The values are now suitable for future UPDATE, INSERT
and DELETE
SQL support.
96-11-06 chetanp shifted Shortcut creation/ deletion to Services.
need to still implement the automation wrappers.
96-11-06 thussey Deleted regauto.cpp, regauto.r, regauto.rc from the
project since they are no longer used.
96-11-06 ivanw Replaced all the icons used by the selection tree
control. These smaller icons will make possible to show
more items in the same window.
96-11-06 ivanw Added keyboard navigation to the SelectionTree (on
Windows). To open the menu for a selection item one
can hit F4, or Alt-Up or Alt-Down. To close it keeping
the changes hit Return, to close it canceling the
changes hit Escape. With these changes I hope all the
controls are completely accessible from the keyboard.
Also all controls should be visible for the screen
readers. Let me know if I missed something.
96-11-06 malcolmh Fixed bug 398 -- crash when the engine is
initialized with a temp. db. and then the db is persisted
96-11-05 malcolmh Error strings returned via automation are now
formatted regardless of whether an MsiServices object has
been created. See bug 569 for more info.
96-11-05 mattwe AcmeConvert: Forced all Directory table primary keys to lowercase to
avoid bogus duplicates
96-11-05 mattwe acmedb.cpp, AcmeParse, AcmeConvert: Added gfForceLower
for column definitions to force the column to lower case.
Used this on the section and item selections in the INF table,
to facilitate tracking sections/items between installs of
differing versions of the same app, if they change the
capitalization
Also fixed a bug from the intern's code that creates
a non-valid primary key on the last line of parsing the
INF.
96-11-05 mattwe AcmeConvert: Removed SummaryInput, fixes build hose
(see: JohnDelo 96-11-04, removing summary input)
-----------------------------
Release 0.10.00.2305
-----------------------------
96-11-04 thussey MAC: The 10/21 build of the componetized Mac OLE is
checked into darwin. Also, a new OLE Automation DLL
has been checked in to allow typelib calls. IMPORTANT:
Everyone running MacDarwin needs to run
"\darwin\tools\macole\putmole debug" again to get the new ole
build. Also, to get the automation dll to the correct
place, you need to first add and environment variable
on your NT machine. The name is "MacSystemFolder" and
the value should be something like ":Macintosh
HD:System Folder". Details are in Step II Section 3 and
Step III Section 8 of the tedious but complete
macsetup.txt.
96-11-04 thussey MAC: Added Apple's standard SystemSevenOrLater
define to the makefile-- this allows us to use the system
7 definitions in darwin resource scripts. It also
will prevent code from the old APIs from compiling,
which is a good thing since the old APIs won't work on
the PowerMac.
96-11-04 thussey MAC: RegMsiD now works on the mac. It registers all
4 darwin components. It takes no cmd line args, it
just registers. Or hold down the option key when
launching RegMsiD to unregister.
96-11-04 thussey MAC: The typelib file is now built into a resource
in the automation dll just like on windows.
96-11-04 thussey MAC: The automation DLL now registers/unregisters
its type library.
96-11-04 johndelo MsiSummaryInput and MsiSummaryOutput have finally
been removed. Replace any test with MsiSummaryInfo,
which combines the two. See help or previous relnotes.
96-11-04 ivanw Changed the VolumeCost control, so it is is fully
accessible for screen readers.
96-11-02 ivanw Added DirectoryListOpen control event. This makes
possible to put an open button on a browse dialog. With
this the browse dialog is completely keyboard
accesible.
96-11-01 mattwe AcmeConvert added three columns to the stf object
table, to facilitate debugging. DarwinDirectory,
ParentObjID, and DarwinSelection. They contain
the most recent references during tree-walking
All selections, hidden and visible are generated
along with appropriate display values based on
Acme logic. Their "checked" state is picked up
from batch information. The Directory table is
also populated with every directory reachable
along the root.
The Root object, and custom dialog choice are still
hard coded. We'll update the automation and the
docs when we get this updated.
Known issues: leaks memory like a sieve.
the properties for roots in the
directory table need to be verified
No app-search parsing yet, so the
root selection is hard-coded
96-11-01 ivanw The VolumeCostList now shows the total size of the
volume.
96-11-01 ivanw Added tooltips to Windows controls. Tooltips are
used with buttons that display a picture instead of a
text. The tooltip text is used by screenreaders for
static pictures, although this text does never show up
on a regular user's screen. To support tooltips and
context sensitive help for radio buttons, I had to add
a help field to the RadioButton table. The code will
run with the old tables, that miss this column, but
will generate a warning in the log. This is just a
reminder, that all existing radiobutton tables should be
updated.
The syntax for the help string in the Control table
and the RadioButton table:
[ToolTip text]|[ContextSensitive help text]. The
separating "|" is required even if only one of the two
kinds of help strings is present.
-----------------------------
Release 0.10.00.2301
-----------------------------
96-10-31 tracyf The "TotalSpaceK" function has been added to
MsiVolume, as a complement to the existing "FreeSpaceK".
96-10-31 malcolmh Added more specific error messages to the SQL query
engine.
96-10-31 tracyf The handling of files-in-use has been enhanced
considerably. The InstallValidate action now detects
whether file costing has identified any files in use, and
will put up a dialog if appropriate listing the
processes "using" the file(s). The InstallFiles and
RemoveFiles actions now also check for files in use, and
if the user hasn't shut down the offending processes,
will schedule the file(s) for replacement or removal
at reboot time (note: Darwin doesn't handle
automatic reboots yet). See the InstallValidate help topic
for all the new details.
96-10-30 ivanw Added two new possible arguments to the EndDialog
control event: Retry and Ignore. Both of these remove
the present dialog, return control to the engine and
return IDRETRY and IDIGNORE values respectively.
96-10-30 chetanp the msi query engine now supports the DISTINCT
clause
96-10-30 ivanw The syntax of the error messages changed slightly.
The header text and the error messages has been
swapped. This was necessary so when the Engine appends
the error number to the front of the text, it will became
part of the error text and not the header.
The new syntax for an error message is:
Error text{button list}Header text
Most error messages that we have at this point specify only
the error text. These are not effected by this change.
96-10-30 ivanw Changed how the error dialog works. Now the dialog
is created when needed. As a result, the
MsiErrorDialog class has been removed. The ErrorDialog property
determines which dialog is used. The dialog has to have
the ErrorDialog stylebit set. It also has to have an
ErrorText text control (this has not changed). The
author has to specify the action of the buttons in the
ControlEvent table.
-----------------------------
Release 0.10.00.2229
-----------------------------
96-10-28 ivanw Included logic that takes into account the taskbars
on the Windows screen. Sizes of large dialogs and
positions of new dialogs use only the rest of the
screen.
96-10-25 tracyf The "second half" of the RemoveFiles action has been
completed. In addition to uninstalling (when
appropriate) files installed by the InstallFiles action,
RemoveFiles now also reads a new RemoveFile table (if
present), and tries to remove the files specified
there. See the helpfile for info.
96-10-25 chetanp added DISTINCT support in SQL support for .MSI
databases
-----------------------------
Release 0.10.00.2225
-----------------------------
96-10-24 ivanw There is a large number of control and dialog
attributes that are used only from automation, but the code
itself never calls them. I put all of these into
#ifdef ATTRIBUTES. This flag is automatically turned on
in DEBUG. In the future, if needed, we can turn it on
or off independently. This cuts the handler ship
size by 15K.
96-10-24 ivanw Wizard sequence allows different size dialogs
(untill now all had to be the same size). The next dialog's
center will be at the same point as the center of
the old one was. If this puts the new dialog off the
screen we pull it back so a little is on the screen,
so the user can grab it with the mouse.
96-10-23 thussey makefile change: DllCanUnloadNow is now exported for
engine, handler, and services (this change affects
both win and mac).
96-10-23 tracyf Progress bar callbacks have been added to the
RemoveFiles action - you should now see a rapid progress
bar when uninstalling files during maintenance mode.
96-10-22 ivanw When a control (say a button) triggers an event in
an other control it is described in the ControlEvent
table. When that control wants to enable and disable
the button depending on some condition, it had to be
describen in the EventMapping table. The same control
had to be listed in two tables with the same event.
To remove this duplication, the Dialog::EventAction
now looks in both tables, therefore if the control is
listed in the ControlEvent table, it does not have to
be repeated in the EventMapping table.
96-10-22 ivanw Split the Handler interface in two. The methods
needed by the Engine are in the MsiHandler interface.
Methods related to creating and destroying dialogs are
in the new MsiDialogHandler interface. This split makes it
easier to implement an object that supports the basic
methods of the handler without supporting the methods that
are used only by the automation.
96-10-22 tracyf File version handling has been upgraded in several
ways: first, the Version column of the file table (and
at a lower level, the CheckFileVersion Path
function) now accepts one of three formats: a version, a
date, or an 'overwrite directive'. See the File Table
and CheckFileVersion topics in the helpfile for more
info (note that the version column can no longer be
left blank; you'll get an error if you do). In
addition, the Version column also now accepts a 'companion
file' reference to another file in the File table,
instead of a version or date (again, see the File table
docs for more info). Full support for proper costing
of companion files (like when the directory of the
companion parent changes) is included.
-----------------------------
Release 0.10.00.2222
-----------------------------
96-10-18 thussey Added IStrCat to istring.h. Changed all occurrences
of strcat to IStrCat. If you have any code which
calls ANSI string functions, e.g. strlen, strcat, etc,
you should use the corresponding IStr* function
instead. If there is no corresponding IStr* function you
should add one. _c2pstr and _ptocstr can be replaced
with CtoPstr and PtoCstr.
96-10-18 thussey Added /OPT:REF to the linker options for both WIN
and MAC ship builds. The default compiler and linker
options in msdev are different in places between the
win and ppcmac compilers. Because of this more default
options will probably be explicitly set in the
future.
96-10-18 thussey makefile change: LIBC is no longer linked into the
Install.exe ship builds on both WIN and MAC. The
runtime code has been completely eliminated from the
launcher. You will get a link error in the ship build if
you add code which requires libc.
96-10-18 thussey MAC: Due to the changes to the way uncompressed
files work, you need to rearrange the files on your mac
to run the mac test database. The files "Month.jan",
"Month.feb", "Month.mar", "Month.apr", and
"testdb1.cab" should now be in your Darwin folder, not a
subfolder. The "Cab2Mac" batch file and the macsetup
instructions have been updated to reflect this.
96-10-18 thussey Change to common.h: the symbols "OLE" and "REG" now
always defined for both win and mac.
96-10-18 thussey MAC: Creator types have been added for all the
darwin components. These have not been registered with
apple yet and may change.
96-10-18 thussey MAC: makefile change: mac automation dependencies
have been updated.
96-10-18 thussey MAC: String handling has been centralized. A file
macstr.cpp has been created to hold all the string
implementations. CopyPascalString,
CopyCStringToPascalString, and CopyPascalStringToCString have been moved
from macutil.cpp to macstr.cpp. The inline string
functions in macstr.h have been moved to macutil.cpp and
are no longer inlined. All occurences of _c2pstr and
_p2cstr have been replaced with CtoPstr and PtoCstr to
allow elimination of the mac runtime.
96-10-18 thussey MAC: Added environment variable to toggle between
using the shipping and componetized OLE Dlls:
"COMPONENT_OLE={yes,no}".
96-10-18 thussey MAC: Changed mac GetEnvironmentVariable
implementation to make environment settings universal. Instead of
putting environment variables into the install.r
file, they are now in a file in the preferences folder.
To create environment variables on the mac, use
Resourcerer or ResEdit to create a resource file named
"MSIEnv" in the "Preferences" folder in the system
folder. Each preference is a resource of type "STR ". The
resource name is the name of the environment
variable, and the resource data is the value. Note:
environment variables are only implemented in the mac DEBUG
builds. You cannot use environment variables in
strings passed to FormatText because there is no equivalent
on the Macintosh.
96-10-18 thussey MAC: The files mautostb.cpp and mautostb.h have been
added to the Automation Dll. These stubs allow us to
switch back and forth between the shipping OLE and
the componetized OLE.
96-10-18 thussey MAC: Assert code has been centralized in files
macassrt.cpp, macassrt.h. The mac MessageBox
implementation has been moved from macutil.cpp to macassrt.cpp.
96-10-18 thussey MAC: Apple's "morefiles" library of file utility
routines has been checked into darwin. These routines
should be used whenever you have to deal with the mac
file system.
96-10-18 thussey MAC: Changes to the installer. The installer now
correctly copies new Darwin components over the way the
windows version does. Also, the
CoCreateInstance/DllRegisterServer tangle has been implemented. All
runtime dependencies have been removed.
-----------------------------
Release 0.10.00.2218
-----------------------------
96-10-17 ivanw Added a new "ImageHandle" style bit to controls.
This is applicable to all controls that normaly get some
image from the Binary table. If this stylebit is
set, the image is not fetched from the binary table,
instead the text field of the control contains the
handle to an already loaded icon or bitmap. This image
must be loaded by some other action previously and the
handle is put in the table at runtime. This can be
used to create a list of all running applications with
their icons.
96-10-17 ivanw Added a listview control to the Windows code. This
control displays a single column of values with an
icon next to each one.
-----------------------------
Release 0.10.00.2215
-----------------------------
96-10-14 johndelo In preparation for supporting temporary database
table rows, some API functions have changed slightly.
CreateTable and LoadTable no longer take a boolean
indicating whether the table can be linked as a
tree--no longer needed. (extra arg ignored by automation)
CreateOutputDatabase takes an additional optional
boolean argument: True to persist temporary rows, False
to drop temporary rows.
MsiSummaryInput and MsiSummaryOutput will be removed
from the next build--use MsiSummaryInfo instead.
The new MsiTable property: RowState (C++
SetRowState/GetRowState) is defined, but not implemented yet.
96-10-14 tracyf Prompting for the next removable install disk has
been implemented, for both Win and Mac. If the InstallFiles
action detects that SOURCEDIR references a removable (floppy or
CD-ROM) volume, it will verify that the required disk is
present in the drive. If not, the user will be prompted to
insert the proper disk (on the Mac, if the wrong disk is in
the drive, it will be ejected to allow the user to put the
right disk in). The InstallFiles and MediaTable helpfile
topics have been updated to explain this in more detail.
96-10-14 tracyf The DirectoryInitialize action now determines the
state of a new internal Engine mode flag: iefCabinet.
This flag is set if the cabinet file specified in the
first Media Table record can be located in the
SOURCEDIR directory. If no cabinet file name is specified
(or if the 'Cabinet' column is omitted from the
table), or if the specified file cannot be located, all
source files are assumed to be uncompressed and
located in the appropriate positions in the source
directory tree. See the Media table help topic for more
information.
96-10-14 tracyf Services has a new CreateVolumeFromLabel function,
which searches for a mounted volume with a specified
label and creates an MsiVolume object if it finds a
match. This is needed for disk switching during
InstallFiles, and will soon be used by the
ConfigurationManager.
96-10-14 tracyf Added a SetVolume function to MsiPath, which allows
the MsiVolume object of MsiPath to be replaced
on-the-fly. This is also used during InstallFiles
disk switching.
-----------------------------
Release 0.10.00.2211
-----------------------------
96-10-10 johndelo MsiSummaryInfo object is now finished and being used
in the engine and tools.
This encompasses the functionality of MsiSummaryInput
and MsiSummaryOutput, which will be removed soon.
Please update any code and tests.
Note that by default, existing property values in the
SummaryInformation stream are retained, unless
deleted or replaced.
96-10-10 thussey Note: because of the Mac database fix, if you have
run MacDarwin recently then before you can run the
fixed MacDarwin you will need to throw out the old
"Config.Msi" file in the MSI subfolder of your Preferences
folder.
96-10-10 malcolmh Fixed bug in Get/Set Int16/32 on the Mac. Databases
can now be written to and read from on the Mac.
96-10-10 ivanw The Windows code for ScrollableText is checked in.
This is the control used to display the license
agreement. Right now it displays a hardwired text. As soon
as the database is able to handle long strings, it
will read it from the tables like other controls.
96-10-08 thussey GetEnvironmentVariable is now implemented for the
Mac. Removed all the #ifdefs around it in the code. To
add an environment variable on the mac add a resource
of type 'ENV ' whose name is the variable you want
to set, and whose value is a string containing the
environment variable's value. See install.r for
examples.
96-10-08 tracyf A new "VolumeLabel" function has been added to the
MsiVolume object. See the updated help file for info.
96-10-08 tracyf The SelectionManager's FreeSelectionTable function
has been upgraded so that it appropriately updates the
"Installed" column of the Selection table, based on
the action taken during the current install. This
function also now returns a Bool indicating whether
there are any selections remaining in the installed
state.
96-10-08 tracyf The Action table has been replaced by two (and
possibly more later) new tables: InstallSequence and
AdminSequence. Note that these columns correspond to the
"sequence" columns that existed in the Action table.
Also note that the concept of a "RemoveSequence" has
been eliminated - the InstallSequence actions are
responsible for installation AND removal operations.
-----------------------------
Release 0.10.00.2208
-----------------------------
96-10-07 thussey Mac test database now writes a "MacDarwin" registry
key.
96-10-07 ivanw Windows dialogs are created with the close button
and the close option in the system menu enabled or
disabled depending if a cancel button is defined in the
Dialog table. The close button, close from the sysmenu
and ALT+F4 are all equivalent to hitting Escape on a
dialog: it activates the designated cancel button.
96-10-07 johndelo Maintenance mode handling has been implemented in
the engine and configuration manager. The selection
manager does not yet save the installed state.
Databases are generated and stored in an MSI folder
under the Windows directory (Preferences for MAC).
The configuration database name is config.msi, the
product database uses the product key with extension
.msi. For now, to cleanup, simply delete everything
in the MSI folder. A property is set to indicate
maintenance mode: "Installed" which is set to the
date of the original install, format: YYYY/MM/DD HH:MM:SS.
This may be used to conditionalize the UI: e.g. NOT INSTALLED.
Also there is a mode bit in the engine that actions
can check if they absolutely must: iefMaintenance.
Most of the actions and processing shouldn't behave
differently for initial install or maintenance mode.
96-10-07 johndelo New actions are added to deal with product registration.
"ProcessUserInfo" action obtains the user name and org name
from various registry locations and preprocesses the PID.
The must be called prior to the main UI wizard sequence.
The PID processing handles only CD and floppy modes, and
will be fully implemented and documented in a later release.
"RegisterProduct" action initialized generation of the
maintenance mode database and the registration of the product
with the configuration manager. Eventually it will stamp
the user info back onto the floppy. This action need not be
called by products that don't support maintenance mode.
New summary stream properties have been defined for PID and
other user info. For new databases, property 31, PID must be
defined to be a valid PID for these actions to succeed.
Help on PID is forthcoming. See _summary.idt in testdb for now.
96-10-07 johndelo The MsiDatabase methods Commit and Rollback have been removed.
It their place is a single function that takes an extended
set of options: idpCommit, idpRollback, idpSave and idpDelete.
See the help topic MsiDatabase_Persist for documentation.
96-10-07 johndelo Warning of upcoming change: MsiSummaryInput and MsiSummaryOutput
are being merged into a new object: MsiSummaryInfo,
which will allow selective updates of individual properties.
Both the new and old objects will be supported for a few releases.
96-10-07 johndelo Error codes were added to the return from MsiEngine.Initialize.
See engine.h for these and for new methods of MsiEngine:
RegisterProduct and GetProductKey. Some new properties were added.
96-10-05 ivanw Changed both ListBox and ComboBox such that there is
an optional Text field. If the text entry is missing
or the entire column is missing, the value is used
for the text as well. Rewrote the combobox code so it
is now derived from the listbox, saving some code.
96-10-04 thussey Change to the makefile: The mac debug build now
builds the mac test database.
-----------------------------
Release 0.10.00.2204
-----------------------------
96-10-03 ivanw Added Value_Next column to the RadioButton table.
This column is required, if missing you will get an
error message! The values in this column define the tab
order within a radiobutton group.
96-10-03 ivanw Added Control_Cancel column to the Dialog table. The
control named in this field gets activated, if the
Escape button is hit. The value is optional, if empty,
nothing happen on Escape. If the entire column is
missing, the database still funtional, but the escape
will not do anything on any dialog.
96-10-03 tracyf Fixed a bug in the Handler, in which negative file
cost was being treated as an unsigned, and therefore
huge, space requirement. This bug would show up if
your install is overwriting a file that is larger than
the new file being installed (according to the size
given in the File table), resulting in the out of disk
space dialog popping up.
96-10-02 tracyf Checked in a bunch of Mac fixes. We can now do complete
Mac setups, installing both compressed and uncompressed
files. Fixes include changes in the InstallFiles action,
the FDIServer module, the MsiFileCopy and MsiCabinetCopy
objects, and the MsiStringSBCS::AppendString function.
Also fixed all the Mac memory leaks. In addition, a new
Mac TestDB has been created, and the .idt and .idb files
checked in. Instructions on configuring your Mac to
run this TestDB before checkins will be ready soon.
96-10-01 ivanw Added an Escape method to the Event interface. The
controls call this method when they notice that the
Escape button is pressed. The notification part is
ready, the Escape method is not complete yet.
96-10-01 ivanw Added keyboard navigation to scrollbars. The Home,
End, PageUp and PageDown buttons are used for vertical
movement. Same buttons with a Shift or Control for
horizontal. (I did not find any better guidelines for
this)
-----------------------------
Release 0.10.00.2201
-----------------------------
96-09-27 tracyf Exposed through automation these IMsiSelectionManager
functions that were previously missing: GetVolumeCostTable,
AddFixedCost, RecostDirectory. Also added a bunch 'o new
help topics: IMsiCostAdjuster interface, GetDynamicCost,
GetVolumeCostTable, AddFixedCost, InitializeDynamicCost,
RegisterCostAdjuster, RecostDirectory.
-----------------------------
Release 0.10.00.2127
-----------------------------
96-09-26 ivanw Changed the Windows UI, so that the system handles
tabbing, accelerator keys and hitting the default
button. As part of this change, I removed the
JumpToNextFocus and JumpToPreviousFocus methods from the Event
public interface and the Accelerator and IsButton
methods from the Control interface. As a consequence of
this change, the accelerators are defined in the
standard Windows manner. If a text control defines the
accelerator key to a control placed next to it, one
should take care to place the text control right before
the other control in the Next-order in the Control
table.
96-09-26 ivanw Added support for large dialogs on Windows. If the
specified dialog size is larger than the screen size,
we create a smaller window and add scrollbar(s) on
one or both sides. Also added mouse interaction with
the scrollbars. Keyboard interaction with the
scrollbars is not complete. yet. In connection with this
added a FullSize dialogattribute. This read only
attribute describes the size of the entire dialog, not just
the window we see.
96-09-25 tracyf Internal MsiVolume caching has been modified, to
avoid problems that arise when creating MsiVolumes that
refer to the same network share using the UNC path
one time, and by mapped drive letter another time.
96-09-25 tracyf Added the DiskNotInDrive method to MsiVolume, to
assist when creating volume objects that refer to floppy
disks or CDROMs.
-----------------------------
Release 0.10.00.2124
-----------------------------
96-09-23 tracyf Updated the File Table topic in the helpfile to
include information about the Mac-only columns.
-----------------------------
Release 0.10.00.2120
-----------------------------
96-09-18 ivanw Modified the Initialize and Terminate methods of the
Handler, so that if the initialization fails (for
any other reason than being already initialized), the
Handler is returned to a clean state, just like it was
created, but never tuched. Terminate returns the
object to this same clean state.
96-09-17 ivanw Changed the SelectionTree, PathTailEdit and
DirectoryList controls such that they can be displayed even
if the DirectoryManager and/or the SelectionManager is
not initialized. Added DoNotCallManager stylebit to
PathTailEdit, and DirectoryList controls. This style
means that the controls only set a path, but do not
call the DirectoyManager to set a TargetPath. In
order to keep the existing databases running, the default
is to call the manager and one has to set this new
style bit if this is not desired.
96-09-17 chetanp fixed bugs 420 and 421 reagrding inserting null
integer columns using CMsiView and the incorrect error
message 1213.
96-09-17 chetanp Fixed incorrect "current row" state of the
CMsiCursor when Insert, Delete, Update or Assign functions
failed the first time. Used to cause the CMsiDatabase to
assert the second time around.
-----------------------------
Release 0.10.00.2117
-----------------------------
96-09-16 t-robbae MsiGenerate:
Added support for Macintosh files in the MakeTables
Method. Now, if you are working with files in an NTFS
Macintosh volume, set the property MacFiles to True.
When the file table is generated, four new columns
will be added: ResourceForkSize, FileFlags, Creator
and Type. These table entries will be filled with the
appropriate information for Mac files. In addition,
the appropriate Macintosh Version data is placed in
the File table's Version column.
96-09-16 chetanp Added help topices for AppSearch CCPSearch,
RMCCPSearch and PISearch actions
96-09-16 chetanp enhanced the APPSearch, CCPSearch and PISearch
actions so that now they allow for properties in the
RegLocator, IniLocator and DrLocator tables.
96-09-16 johndelo A relative database path passed to
MsiEngine.Initialize will now be appended to the folder from which the
launcher was run (actually it uses the module whose
resource handle was passed in). Leading dot is not
supported.
Memory management for the engine, storage, and
summary stream objects were cleaned up to prevent leaks.
96-09-16 tracyf Now that property handling has been moved out of
MsiServices, MsiPath and MsiVolume objects no longer
know anything about the SHORTFILENAMES property. To
ameliorate this situation, the CreatePath services
method now takes an additional parameter to allow
suppression of long filenames. I've updated the helpfile in
a number of places to not only reflect the change,
but to better explain Darwin's usage of long and short
file names (check out the updated MsiPath object
overview, which now details (finally!) the
"shortname|longname" syntax, and the SHORTFILENAMES property
topic).
96-09-16 chetanp Added table definitions for ProgMan and Shortcut
tables (.idt files) in darwin\data\testdb.
96-09-16 chetanp Added tables Shortcut and ProgMan. Note that the
structure of the ProgMan table has changed to be
consistent with the Shortcut table. Added documentation for
the ProgMan and Shortcut tables and for the
CreateShortcuts, DeleteShortcuts, CreateProgManItems,
DeleteProgManItems actions.
96-09-16 chetanp Added CreateShortcuts, DeleteShortcuts,
CreateProgManItems, DeleteProgManItems actions.
96-09-16 malcolmh GenerateTransform now creates a summary info stream,
and the engine now validates that stream. See help
on GenerateTransform for the details.
96-09-13 ivanw Checked in the common and Windows code for the
VolumeCostList control. This control is used on an Out of
disk space dialog. Testdb is modified to show the use
of this control.
96-09-13 chetanp Added IniFile and RemoveIniFile table definitions
(idt files) and corresponding help.
96-09-13 chetanp Changed WriteIniValues, RemoveIniValues actions.
The WriteIniValues action now works on the IniFile
table only for the "install" mode. The RemoveIniValues
action works on both the IniFile table (during
"uninstall" mode) and the RemoveIniFile table (during
"install" mode).
96-09-13 chetanp Corrected and added documentation of the Registry,
RemoveRegistry tables and the WriteRegistryValues,
RemoveRegistryValues actions in the action.rtf,
tabledef.rtf files
96-09-13 chetanp Corrected the Registry and RemoveRegistry table
structures (.idt files) in darwin\data\testdb.
96-09-13 chetanp Changed WriteRegistryValues and RemoveRegistryValues
actions. The WriteRegistryValues action now works on
the Registry table only for the "install" mode. The
RemoveRegistryValues action works on both the
Registry table (during "uninstall" mode) and the
RemoveRegistry table (during "install" mode"). Also
made changes to remove the redundant GetExpandedString
function in the Engine.
-----------------------------
Release 0.10.00.2113
-----------------------------
96-09-12 thussey Minor changes to the makefile/dependencies (these
actually occurred yesterday, I forgot to document
1) Removed _handler.h from the engine deps
2) build now imports the freshly built error.idt
into the testdb
3) allow a separate set of ship compiler
optimizations for mac and windows
4) common.h supresses bogus warnings in mac ship
build
96-09-12 thussey Checked in new diamond.exe which can correctly build
mac cabinets. This new diamond.exe is also synched
to the current diamond slm tree.
96-09-12 johndelo The type library for Darwin automation is now stored
as a resource in the automation DLL, MsiAuto.DLL or
MsiAutoD.DLL, and is registered by the DLL when it is
self-reg'd, either by install.exe or regmsi.exe.
Unregistration of the type library when the DLL is
unregistered is commented out, as the OLEAUT32 in NT
3.51 does not support UnregisterTypeLib. This will be
enabled when NT ServicePack 5 is released, which
updates that DLL.
The SampleTool makefile has been fixed to do the
same, and the one line added to the .CPP file: "#define
REGISTER_TYPELIB GUID_IID_IMsiSampleToolLib". Other
tools need to be updated.
With Excel95, you still need to go to
Tools/References, but the typelib should always be ready to be
checked on.
Note that if a new version of MSI is required it will
be installed to you system directory. To debug from
you build, run "REGMSI D" from your build directory
to reregister those components.
96-09-12 tracyf "Selection_Shares" functionality has been added to
the SelectionManager. See the updated Selection Table
topic in the helpfile for all the details.
96-09-12 chetanp Added IMsiServices::GetModuleUsage functionality
96-09-11 johndelo Property handling is now in MsiEngine and has been
removed from MsiServides, except for
SetPlatformProperties which now requires a table object. The FormatLog
and CreateDefaultPropertyTable are obsolete and have
been removed.
Text string formatting is now done in two stages:
MsiRecord.FormatText formats its template string,
substituting numeric parameters with record field values.
MsiEngine.FormatText formats any string, substituting
property values and environment variables.
EvaluateCondition, which uses property values, had to
move from services to MsiEngine.
96-09-10 ivanw Changed the controls and dialogs such that if their
caption contains some property, the text updates when
the property changes. In order to receive the
update message the control has to specify some property in
the Control table. This may change when we redesign
the Control table.
The limit of the text size for the edit fields and
comboboxes has to be defined using {}. I.e. if you
had [40] for the limit in the text field of the Control
table, it has to be changed to {40}. This is
necessary because of the way Record::FormatText works.
96-09-10 t-robbae MsiUtilities:
- For future code compatibility, removed all direct
reference to 'Darwin' in the code, replacing it with
the text 'MSI'. This extends all the way up to the
Automation layer, so any test scripts out there which
previous included calls to DarwinComponent or
IncludeDarwin should now be changed to MSIComponent and
IncludeMSI.
96-09-10 t-robbae MsiUtilities:
-The Launcher Linker portion of the tool has been
added. This enables the linking of a virgin
launcher.obj with an RC file and various CustomActions into one
finished executable. See help for more info.
-Both LoadProp and the LauncherRc File Creator now
support the storing of MSI Component files within the
launcher.
-The code for LoadProp has undergone a major
overhaul. Watch out for any new bugs that may have cropped
up in this code change.
-----------------------------
Release 0.10.00.2110
-----------------------------
96-09-09 johndelo Darwin version bumpted to 0.11 (property stream
changes). Engine will reject databases of version 0.10.
96-09-09 johndelo The launcher now recognizes a property called
INSTALLER, that indicates the path to the folder containing
the Darwin components. Its value may be either a
subpath beneath the launcher's folder or a
fullyl-qualified path. If not present the launcher looks for
components in its own folder.
96-09-06 tracyf HelpFile documentation has been updated for the
Condition Table and for the ProcessConditionTable method.
96-09-06 tracyf The IMsiSelectionManager::ResolveSelections method
is obsolete and has been removed from the COM and
automation interfaces.
96-09-06 ivanw Added FormatText function to the Engine interface.
This new method combined with MsiRecord::FormatText
provides the same functionality as the old
MsiServices::FormatText. Changed all calls to FormatText to use
the new one, except in Services::FormatLog. As soon as
FormatLog is migrated from the Services to the
Engine, we will be able to remove FormatText from the
Services and with it all the methods getting and setting
properties. The new Engine::FormatText is
significantly smaller than the old one. In case of correct
syntax it should produce the same output (if combined
with Record::FormatText). If there is a syntax error in
the string the unmatched square bracker or curly
brace is left in the text.
-----------------------------
Release 0.10.00.2106
-----------------------------
96-09-05 johndelo The automation dll, MSIAUTO.DLL or MSIAUTOD.DLL will
be installed along with the other components by the
loader if present in the same folder. No error will
be generated if not present (error will be generated
if copy error).
The Darwin components that are to be installed may be
optionally LZ compressed.
96-09-05 johndelo The default database name used by the
launcher/loader is now INSTALL.MSI, not TESTDB.MSI. Either rename
your database, set the resource, or use command line
DATABASE=...
96-09-05 johndelo The launcher/loader, INSTALL.EXE or INSTALLD.EXE,
now will install Darwin, ship or debug respectively,
if needed.
The logic sequence is as follows:
1. Explicitly specified components are loaded.
Install fails if any of them fails.
2. Remaining components are attempted to be created
by CoCreateInstance
3. If all not created, components residing in the
system directory are re-registered.
4. If still not all created, all components are
copied to the system directory, registered, and created.
5. If any of the components return version mismatch
with database, all are installed if not already done.
Prefix the action name, normally "Install" with an at
sign, '@' forces Darwin to install.
A null action name, or "@", will install Darwin as
necessary, but will not commence any install.
This particular launcher expects to find the Darwin
components in the same folder as the launcher.
Separate launcher will be built for internet and other
needs.
Does not yet install Darwin on the Mac. Help topics
are forthcoming.
The DEBUG launcher, INSTALLD.EXE will install and use
the DEBUG components.
The SHIP launcher, INSTALL.EXE will use whichever
components are registered most recently.
96-09-04 malcolmh - The summary information stream has changed. See
"What is the summary info property set?" in the help
file for specifics.
- The engine now validates information in the summary
information stream. Note that the _summary.idt file
for the testdb has been updated to reflect these
changes, and will pass all validation tests. If you have
created other databases you can import the new
_summary.idt into your database to make things work.
The following engine does the following validation:
The MSI Tag field must contain the correct tag (e.g.
"MSI Product" for a product database).
The MSI database and engine versions must be
compatible.
The platform specified in the Template property must
be correct.
One of the languages specified in the Template
property must exactly match an available language on the
system (usually English). In future releases more
multi-language support will be added.
96-09-04 tracyf The InstallFiles action has been fixed up so that
proper progress messages are once again being sent
during file copying (i.e. progress bars are working
again).
96-09-04 thussey Modified make.bat and the makefile to allow mac
builds on machines without otools. OTools contains alpha
versions of MacOLE 2.10 while VC4.2 has the shipping
MacOLE 2.06 headers. Added the file oldole.h which
enabled the shipping MacOLE headers to work with
Darwin.
96-09-03 ivanw Removed the following methods from the Handler
public interface:
GetEngine
GetServices
GetDatabase
CursorCreate
TreeCursorCreate
GetUIText
Added a GetEngine method to the Event public
interface.
-----------------------------
Release 0.10.00.2103
-----------------------------
96-08-30 tracyf Helpfile documentation has been updated for the
CostInitialize, FileCost, and CostFinalize actions, and
for the 'File' table.
96-08-30 tracyf To avoid potential confusion, the new
InstallInitialize action has been renamed to InstallValidate (the
testdb and docs have been updated).
-----------------------------
Release 0.10.00.2030
-----------------------------
96-08-29 mattwe Acme2Msi (aka Beagle)
No more rollback or commit
Convert now requires a database reference, rather than a filename
Exposed C++ interface for AcmeConvert to simply parse STFs/INFs
into named tables. This will allow you to do several passes
with different STFs/INFs and get the results in different tables
It's a quick hack that'll get cleaned up and exposed to VB after
I get back. (9/8)
Known problems:
Memory leak, and calling SelectionsPass is short-circuited to NYI.
Checked in intermediate files that I wasn't ready to release to help BenCh.
-----------------------------
Release 0.10.00.2027
-----------------------------
96-08-26 t-robbae Utilities:
Launcher RC file creator now fully implemented. See
help for full details on use.
96-08-26 johndelo SOURCEDIR now defaults to the location of the
launcher (actually to the folder of the HINSTANCE passed to
MsiEngine.Initialize). Relative paths are supported,
as long as they don't begin with the dot notation. A
new MsiEngine method, ResolveFolderProperty, was
added to handle source properties. See help.
96-08-26 johndelo The default database open mode for
MsiEngine.Initialize is read-only if the PID_SECURITY is not set. This
summaryinfo property, 19, needs to be 0 to open
read-write.
96-08-26 thussey Changed handler code to get properties from engine
instead of services.
96-08-26 johndelo The MsiServices Set/Get property methods and the
Property automation method have been moved from the
services class to the engine class. All source modules in
the engine have been updated. For a SHORT time the
methods remain in services to allow other code and
tests to be transitioned. See the help and engine.h for
details.
96-08-25 tracyf Dynamic file costing has been implemented. This
involves changes in the CostInitialize and CostFinalize
actions, and the addition of the FileCost and
InstallInitialize actions. The CostInitialize documentation
gives an overview of using the costing actions, and
more documentation will be added soon.
96-08-23 bench Removed argument to MsiDirectoryManager.LoadDirectoryTable
that specified whether to create a column for
source paths or not. That column is now always
created.
96-08-23 thussey Added inline bottlenecks to UI objects to make it
easier to move the Get/SetProperty interface from the
services to the engine.
96-08-23 thussey -- Turned on -Gy (dead code stripping) and -Os
(optimize for size) in the makefile for both Windows and
Mac builds.
-- Partial implementations of Mac list box and icon
controls. Only enough to support the demo that ended
up not showing the Mac version. It isn't worth
bothering to test them yet.
-- Added STRICT_CONTROLS, STRICT_WINDOWS,
STRICT_MENUS, and STRICT_LISTS definitions to the Mac builds.
These are helpfull for sorting out Copland/System 7
issues.
-- macutil2.c & h have been removed from the
project. The window management routines are now in the
handler code, and the rest is folded into macutil.cpp
-- An odd macutil.h/cfile.h header dependency has
been sorted out.
-- Added some new files to the project. These are
relevant only to the Mac. All these extra files are
needed to give a layer of abstraction necessary to
support the eventual Copland OS. Due to my total lack of
creativity, they have icky names: macdarc.cpp & h
contain defprocs specific to Darwin. macdproc.cpp & h
contain the defproc base classes. macdpint.h contains
internal definitions used by the defprocs.
-----------------------------
Release 0.10.00.2023
-----------------------------
96-08-20 t-robbae Utilities:
Added LogFile property to object. Now LogFile is
only generated when set to a full path where it is to be
generated. See Help for more details.
Added Documentation for future SLM Database
operations. These don't work yet, and shouldn't be attempted,
but their basic skeletons are there, both in
automation and Help file information.
96-08-20 malcolmh - Added support for specifying how errors are
handling during transforming. A parameter should now be
passed to SetTransform to indicate which conditions are
treated as errors and which as warnings. See the help
file for SetTransform for more information.
-----------------------------
Release 0.10.00.2020
-----------------------------
96-08-19 t-robbae Utilities Object:
(some information reentered here after SLM error ate
my last update of the release notes).
Fixed error in OpenDatabase. Now the Summary
Information stream is properly copied to the new database
when an output database is specified, (note that the
method now only supports MSI and Access databases).
Eliminated the idtRoot and idtShare enumerations
once used in setting directories. Now the idtSource
should be the parent directory of all the source files
in the Admin Image (which can now be generated by the
generate tool).
Modified "Attribute" in the automation layer.
Attribute is now a property which accepts either strings
or integers on the rhs of the assignment operator.
These it converts automatically to their appropriate
value. The set and record arguments have been
eliminated from this automation layer property. They are
now controlled by the assignment operator like all
properties. See help for more details.
96-08-18 davidmck Added FCheckBlock and GetSizeOfBlock functions to
ole automation to allow testing to get more information
from blocks.
Also checked in code to warn when freed objects are
being called rather than crashing.
-----------------------------
Release 0.10.00.2016
-----------------------------
96-08-14 bench Many changes to MsiDirectoryManager. First,
CreateSourcePaths is now implemented, and the creation
of the source paths is removed from CreateTargetPaths.
Also, SetTargetPath has been modified so that when a
path is changed, all children or duplicates of that path
are updated appropriately.
Also, changes to the way the directory table is interpreted
when creating source paths have been made. Before, the
source paths for each entry were just set to SOURCEDIR.
Now, the source is assumed to have the directory structure
defined by the Directory Table. When resolving non-root
source paths, the values of the Directory_Parent and
DefaultDir fields are used and no properties are checked
like they are when resolving target paths. When resolving
root source paths (those records in the Directory Table
with null parents or parented to themselves), the full
path of the directory is assumed to be the value of the
property given in the DefaultDir field. For example,
the following records resolve to the following source and
target paths (assuming the ROOTDIR property = C:\ and the
SOURCEDIR property = C:\SOURCE):
DIRECTORY PARENT DEFAULTDIR TARGET SOURCE
ROOTDIR SOURCEDIR C:\ C:\SOURCE
excel ROOTDIR Excel C:\Excel C:\SOURCE\Excel
Resolving the source directories this way allows multiple
roots for the source, where different parts of the source
may even be located on different servers.
The \darwin\data\testdb\director.idt file has been updated
and the location of the test source files has moved from
\darwin\data to \darwin\data\test\months so that an install
using testdb will work with these changes.
96-08-13 johndelo The message headers have been removed from the error
messages defined
by the IError(...) macro in the header files, i.e.
Error [1]. The appropriate header
is applied by IMsiEngine::Message when the message if
formatted. The actual
header is determined by the message type specified in
the call, and references
reserved, low-numbered messages in the Error table.
See Error table help.
The DEBUG builds still do not use the error table;
they use the strings from
the IError(...) definitions (the DEBUG build still
makes sure that the table exists).
Note that the build produces a listing of all ship
and debug errors in a
file called MSIERROR.TXT (produced by the
mkerrtbl.exe tool.
-----------------------------
Release 0.10.00.2013
-----------------------------
96-08-09 t-robbae LoadProp in the Utilities tool has been modified to
be more flexible
in its operation. Now if no cabinet files are listed
in the prop file,
it is not necessary to set a WorkDirectory and Open a
database.
An error will be raised if the prop file does include
cabinets and these
two preparation items are not performed. Note that
this means
that the path given for a database in the prop file
is now used
in all cases except when Cabinets are to be stored in
the resources.
When cabinets are stored, the path in the prop file
is ignored as
before and the open database is stored instead.
These changes are
all outlined in the help file.
96-08-09 malcolmh Changed CreateStorageFromMemory in the services
object. It now takes the size of the memory block as its
second parameter and only supports read-only
storages.
96-08-09 malcolmh - Added the GenerateTransform and SetTransform
members to the Database object.
- Added support for extracting a database stored as a
resource in the launcher
-----------------------------
Release 0.10.00.2009
-----------------------------
96-08-09 t-robbae Numerous changes to the utilities tool:
LoadProp now works correctly. Note that currently
a workdirectory
and a database must be opened before the propfile can
be loaded.
LoadProp now accepts TRANSFORM files as well as
Databases and
cabinets to store as resources.
PassType now accepts enumerated values of iptRough
and iptFine
instead of its old string values.
OpenDatabase now as a second argument accepts the
full path
to a new file in which to write an output database.
If this string path
is left out, OpenDatabase attempts to open the first
file argument as
read/write. OpenDatabase may now open other database
types
besides .MSI databases so long as the second argument
is included
so that a new .MSI database is eventually created.
(Can't successfully
deal with an Access database opened as read/write).
Note that with David Gonzalez's permission, the
utiliteis tool
DOES NOT support a setable Database property in which
utilites can be passed a database object itself.
This is because
utilites must have exclusive control over its
databases to open and
close them as needed, and this cannot be done if a
client is holding
onto a reference to the database object. This still
works because
utilities should always come at the end of the tools
process and
no one should be modifying the database after this
tool anyway.
96-08-09 ivanw Modified the selection tree such that it uses one
large icon next to each item (instead of two smaller
ones) This one icon shows information both about the
present state and the future state of the item. Changed
the icons and the text sucht that no distinction is
made between different kind of source media except in
the icon on the path line. Changed such that if an
item is unselected, the children are collapsed and
hidden, the user can not expand it. The control
remembers the previous state, and if the item is selected
again, it expands the same way it was before. The name
of the items whose selection state will change is
displayed in bold. If the user does not change the
selection the text is plain.
96-08-08 tracyf The IMsiFileCopy interface now supports
decompression of files from cabinets stored as Launcher resources
(not supported through automation yet). See the
Media Table and MsiFileCopy.ChangeMedia help topics for
details.
96-08-08 tracyf The MsiFileCopy object has changed significantly!
First, the CreateCopier interface has moved from
MsiPath to MsiServices. Also, the
MsiFileCopy::ChangeSource interface is now called ChangeMedia, and has new
arguments. The MsiFileCopy::CopyTo object takes a new
argument (to specify the source path object), and
finally, CopyTo now allows the specification of
separate source and destination file names for uncompressed
files. All of these changes are documented in the
updated help file.
96-08-07 johndelo The Darwin loader DLL is GONE, msildr.dll and
msildrd.dll. The 7K launcher and 27K loader
are combined into a single 11K install.exe, ship
build. (this arithmetic baffles me).
This module did not self-register, was not a COM
component and was not version-safe,
and it was not viable for use with an Internet
installer. It wasn't used by automation either.
96-08-07 t-robbae I've made some changes to the way LoadProp and
OpenDatabase behave.
OpenDatabase not accepts a new file value stating
the name for a
new file to be created in the work directory. The
old one argument
OpenDatabase still works as before. See Help for
more details.
LoadProp must now have the WorkDirectory set and a
database opened
in order to operate. There are more structural
changes inside the
method, but these should not affect its use on the
surface except
in the way property files are written. See Help for
more details.
... Also note the changes to the Attribute method I
forgot to mention
on the last release. Attribute now take enumerated
constants to
specify the attribute type. See Help for more
details.
-----------------------------
Release 0.10.00.2006
-----------------------------
96-08-05 johndelo Error handlling has been alterered for core Darwin
components:
Debug modules set the error templates directly and do
not use the database Error table.
Ship modules still lookup error codes in the Error
table, which now has only Error and Message columns.
Debug messages, idbgXXX are not in the Error table
and receive a generic message in Ship builds.
Most of the messages should be converted from imsg to
idbg debug messages, as they can only occurs
due to authoring or coding errors. This will be an
ongoing process.
This does not affect tools, since their error
templates are in their resources.
Things will be cleaned up a bit more when the engine
error handling is finished.
96-08-03 ivanw Added code and changed the testdb such that the
Browse dialog can be triggered from the Selection dialog
to modifiy the path of an item. The name of the
browse dialog is authorable, thus if we have more than one
selection dialog they can use differently authored
browse dialogs.
96-08-03 ivanw Added HandleEvent method the MsiDialog and the
MsiEvent classes. A control uses this method to notify
the publisher of an event that it is time to trigger
the event.
96-08-03 ivanw Added a one-icon option to the SelectionTree. By
setting a stylebit the author can choose to show only
one icon. This might be preferred in a first instal
when all the first icons would show the absent state.
96-08-03 ivanw Added controlevents to SelectionTree control. As the
sample shows in testdb information about the
selected item is displayed in several controls subscribing
to events published by the selectiontree.
96-08-02 mattwe Rollback/Commit now remove the copied file
Parses the STF and INF into tables: Acme-HDR (stf
header) Acme-OBJ (stf objects) Acme-INF (inf files),
and Acme-SMD (source media descriptor).
What's Broke: running "Convert" twice in a row without
a new AcmeConvert object asserts. Parsing mangled
stfs/infs isn't handled at all.
Long File Names column in Acme-INF doesn't include path
from ShortFileName MsiTable has been wobbly importing/
exporting really large (OfficePro '95) tables. Still
investigating. Works fine with Works' files from
\\products.
DEBUG has all memory tracking on, so is really slow.
SHIP handles Office in ~8 seconds on my p6-200.
Localized stfs/infs with multibyte chars is broken.
96-08-02 johndelo MsiString object has two new methods: UpperCase and
LowerCase. See help.
These are optimized to convert inplace when only one
reference exists.
-----------------------------
Release 0.10.00.2002
-----------------------------
96-07-31 ivanw Changed PublishEvent so the argument is a record not
a string. Since this argument gets passed to a
Control::Attribute function, that takes a record, this is
more general this way. Also changed the SetText and
SetProgress control attributes.
96-07-31 ivanw Added UIText table. This table contains the
localized text strings used by the UI that have no home in
some other table. Added a GetUIText method to the
handler to get these strings.
-----------------------------
Release 0.10.00.1930
-----------------------------
96-07-29 johndelo LEGO builds are now using LIBCMT.LIB for runtime
library, insteal of
LIBCMTD.LIB which has no codeview info. In fact, only
the LIBCMT in
OTOOLS has codeview info. not that from VC4.0 or
VC4.2.
96-07-29 ivanw Changed the ProgressBar so it can take different
range values. The default is still 1024, if none is
specified. The progress message can also specify the name
of the action, this way we can have more than one
ProgressBar on the same dialog showing the progress of
different actions.
96-07-28 ivanw Changed the way icons are loaded. With two style
bits the author can specify what size image of the icon
should be loaded. Also added a static icon control
type. With these modifications the bitmaps and icons on
different kind of buttons should be complete except
graying the images on disabled buttons on NT3.51.
96-07-26 ivanw Rewrote the Bitmap class such that it uses a static
control on Win95 and NT4. Also added the fixedsize
option to bitmaps on all Windows systems.
96-07-26 ivanw Fixed the accelerator keys in the Windows UI. You
can put an accelerator key in the text of a control,
even if the text is not shown on the screen.
Accelerator keys in static text are displayed (as underlined)
but not functional, since the text control can not
take focus. Using these two facts you can assign an
accelerator key to an edit field (whose corresponding
text from the table is not visible) and to show it to
the user you can put the same accelerator in the
associated text control. If this sounds too complicated,
look at the first dialog of testdb, and it will be
clear. One can put accelerator keys to the text field of
any control except the bitmap and the (not yet
implemented) icon control. The text field in those is the
name of the binary data. This is not a real
limitation, since these two controls can not take focus anyway.
-----------------------------
Release 0.10.00.1926
-----------------------------
96-07-25 ivanw Added a Reset method to dialog, that resets all the
properties and controls to their state at the
creation of the dialog. Added reset buttons to the dialog in
testdb, to show how this works. Also added Undo to
indirect controls.
96-07-25 ivanw Modified all controls such that indirect properties
get updated on the same dialog. Added two new dialog
to testdb to show and test some of the cool things
that can be done with this. (based on Tim's idea)
96-07-25 ivanw Modified the ListBox, ComboBox and RadioButtonGroup
classes such that they can be created with a property
that has no initial value. The controls come up with
nothing selected initialy. After the user selected
something, there is no way of going back to unselect.
If the control is tied to an indirect property, that
property must have an initial value!
96-07-25 ivanw Added a new stylebit to the ComboBox control,
creating a control with not edit field. This way the user
can select from a list of predefined values, but can
not add a new one.
96-07-24 ivanw Since many found calling AddControl with Null
strange, I added a new method, FinishCreate to the Dialog
interface. One should call this when all the controls
are added. In order to keep the old scripts alive
calling AddControl with Null will still do the same.
-----------------------------
Release 0.10.00.1923
-----------------------------
96-07-22 ivanw Changed all the handler classes (except the Mac
specific ones) such that they use PComPointers as member
data. If I done this correctly, it should result in
no visible difference in the way things work. Since
every object was changed in the process, it needs
testing.
96-07-20 ivanw Changed the testdb such that to run AppSearch one
has to set the APPS_TEST property. To run CCPSearch one
has to set the CCP_TEST property. This way the rest
of us don't have to sit through these actions every
time we run testdb.
96-07-19 johndelo Commit MUST be called on MsiDatabase objects before
their destruction in order
for changes to be preserved. Else, the default
behavior on destruction is to
Rollback the database. Previously it would Commit on
destruction which led
to an abundance of corrupt databases. Note that the
engine will call
Commit or Rollback on its Terminate method, depending
upon the arg passed.
MsiDatabase.CreateOutputDatabase now transfers binary
streams from both
MSI and MDB databases, thus generating an installable
database.
-----------------------------
Release 0.10.00.1919
-----------------------------
96-07-18 johndelo Engine.Terminates now takes a required boolean
argument: True to Commit, False to Rollback the database,
and Terminate now writes SummaryInformation
properties to the database file created by
CreateOutputDatabase. Note that CreateOutputDatabase
does not yet transfer binary streams (bitmaps).
The Database.Storage property was added for use by
the MsiEngine to access the output storage object.
-----------------------------
Release 0.10.00.1916
-----------------------------
96-07-15 johndelo Error handling added to SampleTool, need to do the
same for other tools.
Worked around ODBC shutdown bug which caused random
crashes and app exits.
96-07-14 ivanw Added PropertyChanged to MsiDialog interface. It is
called when a child dialog is destroyed and control
returns to the parent dialog. This way we can update
the controls in case the child window changed the
value of some property.
96-07-14 ivanw Completely rewritten Services:FormatText using
MsiString functions instead of buffers. Also added some
new functionality. See help page for details. Also
checked in format.xls a small script to test the
function. Considering the large number of cases that can go
wrong in this function, it needs more testing.
-----------------------------
Release 0.10.00.1912
-----------------------------
96-07-11 ivanw Added a large number of new pages under the new
"User Interface Topics" heading describing all the dialog
types, control types, style bits, attributes, and
controlevents.
96-07-11 johndelo If MsiEngine.Initialize is given an empty string for
a database path, it will construct
a temporary database with an empty Property table.
This functionality is for
testing purposes, replaced the previous method of
using CreateDefaultPropertyTable (or whatever it is
called)
96-07-09 ivanw msihndlr.xls and the text version of the same file
msihndlr.bas, are modified to use the new engine
initialization method. They are intended to show the
correct sequence of initialization and termination of the
objects needed to use the Handler object.
-----------------------------
Release 0.10.00.1909
-----------------------------
96-07-08 johndelo The CreateDestinations action is obsolete, use
DirectoryInitialize instead.
The old action is temporarily supported by simply
calling the new one.
MsiServices.CreateDatabaseFromStorage has been
exposed to automation.
It has been used internally, and requires that the
storage object contain valid database data.
96-07-05 johndelo MsiEngine::Initialize now takes services, handler,
database, and propertyfile
properties formerly passed as parameters. Check the
Help topic. Note that the
database path is passed in, not the object. The
engine now validates the file
before creating the database object. MSI databases
now must have a
summary info property stream with the PID_TITLE
property set to
"Installation Database 0.10" in order to work with
this version of Darwin.
For ODBC databases, the information is put in the
_SummaryInfo table, but
that table is not checked in this release--will be
added soon.
96-07-05 ivanw To avoid further confusion, removed the Initialize
and Terminate methods for Handler from automation. The
Handler object has to be initialized and terminated
through the appropriate methods of the engine.
96-07-05 davidmck Changed code in CMsiMalloc to give information on
IMsiRecord object.
96-07-03 johndelo OpenView intent flag ivcTableAll has been removed
and is no longer supported.
Child MsiStorage objects now keep a reference to
their parent objects to prevent their premature release.
96-07-03 thussey The file controls.h has been deleted from the
project since it is no longer used anywhere and contains
obsolete definitions which get in the way of global
searching.
96-07-02 ivanw Since we don't build the old UI anymore, the
previous file name conflicts are removed. Hence _control.h
is renamed to control.h and ccontrol.cpp is renamed
control.cpp.
96-07-02 thussey Added two files: mactool.cpp and mactool.h. These
files implement stack-based wrapper classes for Mac
Toolbox data structures.
-----------------------------
Release 0.10.00.1902
-----------------------------
96-07-01 johndelo RegMsi.Exe tool has been fixed an extended to
register all Darwin and tool DLLs.
Type regmsi ? to get help. The debug version
regmsid.exe works identically except
that it contains debugging symbols. Both can register
modules of all builds.
The module.h and tools.h headers have been cleaned up
a bit, requiring minor
changes in the include sections of all module files
(all checked in).
96-07-01 tracyf Alert: significant changes have been made to the
File and Media tables. In the Media table, the
'Noncabinet' and 'Split' columns have been eliminated
(doesn't hurt anything if they still exist in your table).
Files are now marked as uncompressed by setting an
Attribute bit in the file table (until you mark your
uncompressed files, if you've got any, you'll get
errors saying this file or that can't be found in a
cabinet). See the updated docs for these tables in the
HelpFile.
96-06-29 davidmck Added code to step back two additional callers in
the memory debugger for a bit more information.
Added code to check all memory blocks for corruption.
-----------------------------
Release 0.10.00.1828
-----------------------------
96-06-27 ivanw The DirectoryCombo and VolumeSelectCombo controls
display the
volumes whose type is specified in the stylebits. For
now the removable
and the floppy are the same. So if you set both bits
at the same time
you are asking for trouble. In the future the
path/volume object
will distinguish between the two kinds of volumes.
96-06-26 ivanw ControlEvent table modified so the push of a button
(or other control)
can trigger more than one event. Their order is
determined by the new
Ordering column at the end of the table. This column
is REQUIRED.
If the column is missing the UI will fail. Leaving
the column empty is OK, if a
button triggers only one event or you don't care for
the order.
-----------------------------
Release 0.10.00.1825
-----------------------------
96-06-24 ivanw Browse dialog completed, except some cosmetic issues
on NT3.51.
The dialog involves three new controls.
The PathTailEdit control is an edit control that is
design to modify the last
segment of the path. If a complete path is entered,
it recognizes that and
sets the entire path. Also if several segments of the
path are entered, it
accepts it as long as the whole path makes sense.
The DirectoryCombo and DirectoryList controls are
designed to select the
path except its last segment. They also deal with
phantom pathes and
creating/renaming folders.
All the above controls verify if the selected path is
valid.
The VolumeSelectCombo is a combobox showing all
volumes.
Added a new style to the progress bar, so it can be
displayed in the
solid, continuous form as before or the chunky stile
of Win95.
If there is a text specified in the Control table
for a progress bar, the
control will publish a controlevent of this name.
When the progress bar
is complete (gets to 100%) it enables all controls
subscribing to this
controlevent.
The Handler::Message function in case of a progress
message checks
the record if there is an action name in the third
field. If there is, it
publishes a progress event by that name. If there is
no name there, it
publishes a default event. This way we can have more
than one
progress bar at the same time, tracking the progress
of different actions.
-----------------------------
Release 0.10.00.1821
-----------------------------
96-06-19 tracyf Made several fixes to bring the Mac MsiPath and
MsiCopyFile objects back up to approximate par with the
Windows versions: fixed several MsiCopyFile::CopyTo
bugs (cabinet version), updated the docs, and fixed a
Mac bug in MsiServices::GetLocalPath. I also checked
in a new version of MsiPath.bas (in the Darwin\tools
directory) which now tests all MsiPath/MsiFileCopy
interface functions, both the Mac and Win.
-----------------------------
Release 0.10.00.1807
-----------------------------
96-06-07 johndelo SumInfo.Exe is now in the build, a simple tool that
loads Services via OLE
and displays the SummaryInformation stream
properties.
-----------------------------
Release 0.10.00.1804
-----------------------------
96-06-04 tracyf Fixed bug 164 (allowing the MsiPath::GetLocalPath
function to treat its parameter as optional).
96-06-04 tracyf Last build, in response to bug 170, I erroneously
changed the MsiPath::CopyTo function to use field 1 of
the passed in record as the source file name for
uncompressed file copying. For this build, I've changed
it back so that both the source and destination file
names are taken from field 2.
96-06-02 tracyf Fixed the following bugs: 157, 167, 170, 173, 182,
186, all dealing with MsiPath functionality or
documentation.
96-06-02 tracyf A new function, ReadResource, has been added to the
MsiPath interface. This allows for automated testing
in conjunction with the UpdateResource function, and
also may prove useful in the future for various
install actions. The helpfile has been updated to
include ReadResource documentation.
96-06-02 tracyf The MsiPath::UpdateResource function has been fixed
so that it now works with both 16 and 32 bit
executables (previously it was badly broken for 32 bit
files). The docs in the helpfile have also been updated.
-----------------------------
Release 0.10.00.1731
-----------------------------
96-05-23 johndelo MsiServices::CreateMsiStorage has been renamed to
MsiServices::CreateStorage, fixing misnaming in help/tlb.
AUTOCOM.H has been moved to the common INC directory,
and can be used for any automated module.
All common module code is now contained in the headers:
module.h, autocom.h, and _assert.h. See file header comments.
Initial sample tool code checked in to SRC\TOOLS\SAMPTOOL.
96-05-30 tracyf The following bugs have been resolved (most all
involving MsiPath or related services functions): 187,
188, 191, 192, 193, 199, 202, 203, 204, 212, 213, 218,
219
96-05-30 tracyf Added support to the InstallFiles action for
handling files in use: if a file to be replaced is in use,
it now gets added to the restart list (in the registry
on NT, or in WININIT.INI on Windows 95), to be
replaced at restart time. Of course, Darwin does not yet
support automatic restart at the end of setup, so
you'll have to reboot manually to see the effect.
96-05-28 davidmck Added GetDebugFlags routine to the debug allocator
so you can check on what flags are set.
-----------------------------
Release 1.0.1724
-----------------------------
96-05-23 johndelo Version numbers have been changed for all Darwin
components to 0.10.0.<build>.
This number will be bumped (minor version) each time
we break database compatibility.
We we RTM Darwin the first time, the version will
then be bumped to 1.0.
Following the ACME convention, the version numbers
reported as properties by the various components
will contain only 2 fields for SHIP build,
e.g."0.10", and 4 fields for DEBUG builds, e.g."0.10.0.1724".
96-05-22 johndelo All of the Darwin DLLs now support the standard OLE
entry points and will
self-register to allow them to be created with
CoCreateInstance. A new tool
is available, RegMsi.EXE, to register any or all of
the components See help file.
(RegMsiD.EXE and REgMsiL.EXE to register DEBUG and
LEGO build components).
The services, handler, and engine all set their
version properties: VersionServices, etc.
Asserts have been reworked to avoid inline expansion,
which was bloating debug builds.
96-05-22 ivanw Icons are working on pushbuttons, radiobuttons and
checkboxes.
testdb is expanded by several dialogs to test these
new styles.
The additional dialogs show up only if the property
UITEST is set.
The checked in code and testdb contain some yet
unfinished code for
MsiBrowseCombo, but it should not hurt anything else.
-----------------------------
Release 1.0.1717
-----------------------------
96-05-16 johndelo For creating summary streams on newly built MSI
databases, importing a table
named "_SummaryInformation" will stream its data
pairs to the standard property stream.
(For ODBC database, a standard table will be
created.) See help under ImportTable.
The new file under darwin/data/testdb is
"_Summary.idt".
96-05-15 johndelo ImportTable and ExportTable are now fully functional
with .MSI databases.
MsiTable.EXE has been updated to handle .MSI
databases as well.
Note that the text archive format spec "b0" has been
changed to "i0" (Boolean data type).
The old format "b0" will still be accepted for a few
builds.
The makefile now builds TestDb.Msi as well as
TestDb.Mdb. Install may be run from either.
96-05-15 chetanp 1. Added "iField" parameter to ReadIniFile to be
able to access individual fields in an .INI file
96-05-15 tracyf Resolved bugs 166, 170, 174, and 181. Of particular
note are changes to the MsiPath::CreateCopier,
MsiFileCopy::CopyTo functions. See the updated help file
for full documentation.
-----------------------------
Release 1.0.1714
-----------------------------
96-05-13 johndelo New methods implemented for MsiStorage, including
enumerators and RemoveElement. See TLB,Help
DropTable implemented for MSI databases,
Import/ExportTable implemented but not ready for testing until
next build.
-----------------------------
Release 1.0.1710
-----------------------------
96-05-09 tracyf After copying a file in the InstallFiles action, the
"State" column of the Files table is now updated to
reflect the file's installation status. If Darwin
installed a new file, the state is set to
"ifsInstalled". If an older file was overwritten, the state
becomes ifsOverwriteInstalled. However, note that these
states won't actually be detectable or useful until
writing out of the persistent maintenance database is
implemented.
96-05-09 tracyf Added version checking to the InstallFiles action -
if an existing file is the same or higher version, it
will not be overwritten.
96-05-09 tracyf If the CommonFilesDir or ProgramFileDir directory
location cannot be read from the registry, Darwin now
sets a default location for these directories. For
now, a subdirectory of the Windows directory is used,
with subdirectory names of "Common Files" and "Program
Files". (This may change if/when a more "proper"
default location is decided upon).
96-05-09 tracyf Fixed a bug in the FDI Server: previously, an FDI
error would occur when trying to copy files from more
than one cabinet, IF the file split from one cabinet
to the next was not copied, OR if there is no file
split across cabinets. This was because there was no
Darwin mechanism to switch cabinets other than the
processing of the "need next cabinet" message send by
FDI, which occurs only when a file split across cabinets
is being copied.
96-05-08 ivanw Pushlike radiobuttons, and checkboxes added with
text or bitmaps.
Pushbuttons with bitmaps (picturebuttons) are added.
Bitmaps are
stretched even on Win95 (where the system would not
do it on its own).
Icons on buttons are still not functional.
testdb.mdb demonstrates all the completed styles (if
the UITEST property is
set).
-----------------------------
Release 1.0.1707
-----------------------------
96-05-06 johndelo Automation for Storage, Stream, SummaryInput,
SummaryOutput is now complete, along with help.
Dates must either be valid DOS dates (greater than
1/1/80) or else time (fraction day: 0.0 <= date <
Input database can now be opened read-only when using
CreateOutputDatabase (bug 158).
Automation string handling will now accept MsiString
objects where the C++ interface so specifies.
96-05-03 ivanw Radiobuttons with bitmaps are added. Also pushbutton
shaped radiobuttons are available.
To show these new options the testdb has been
expanded with several dialogs.
To see all these dialogs you have to set the property
UITEST on the command line.
If the property is not set, only two dialogs show up
in the wizard sequence.
-----------------------------
Release 1.0.1703
-----------------------------
96-05-02 johndelo Add automation for MsiStorage and MsiStream,
MsiServices.CreateMsiStorage - see help
Fixed a number of small database storage-related
bugs.
Installs now work from .MSI databases. No Import or
Export yet--need to use CreateOutputDatabase followed
by Commit
The loader now opens the input database read-only.
96-04-30 tracyf Fixed bugs 81, 120, 121, 128, 144, 145 (help
document bugs).
-----------------------------
Release 1.0.1630
-----------------------------
96-04-29 johndelo Database functions Commit and Rollback are
operational,
can be called only once on a database, and no updates
afterwards. See help.
Persistent Msi Database is now implemented, extension
.MSI. More help in next release.
Binary objects from both ODBC and MSI are processed
using MsiStream objects.
Automation and help for MsiStream will not be
available until the next release.
However stream objects can be converted to string
objects (GetMsiString).
The persistent Msi storage should work on Mac if OLE
is installed, but has not been tried.
96-04-29 davidmck Not a new item, but a discovered item.
For function names in memory information to work on
NT 3.51 you need dbi.dll on your path.
For Win95 you need mspdb40.dll on your path.
-----------------------------
Release 1.0.1625
-----------------------------
96-04-24 chetanp fixed bug 133 in autosrv.cpp
-----------------------------
Release 1.0.1623
-----------------------------
96-04-22 johndelo There are a number of database additions connected
with persistent storage.
They are described in the help file, and will be
mentioned here when they are operational.
The MsiTable column definitions are contained in the
system catalog as a 16-bit integer
consisting of a number of bit attributes along with
the SQL byte width. See help for CreateColumn.
The CreateColumn and GetColumnType functions now take
and return this integer.
The enumerations, icdXXX (Installer Column
Definition), are in the typelib, replacing itdXXX and itcXXX
The GetColumnKind has be removes, subsumed by
GetColumnType.
The MsiCursor method SetFilter has been made into a
read/write property: Filter.
More enumerated states can be returned from
FindTable, itsEnum. See help or typelib
The MsiDatabase property UpdateState reports the
persistent state of the database.
96-04-19 johndelo Database low-level column type idtInteger has been
replaced with
idtLong (32-bit) and idtShort (16-bit). For a SHORT
time, idtIntegers is still defined
to idtLong until the non-services code is updated.
idtLong should be used for temp. columns,
itdShort should be used, where possible, for
persistent columns.
-----------------------------
Release 1.0.1616
-----------------------------
96-04-15 johndelo A new argument has been added to CreateDatabase,
readOnly, a boolean which indicates
if the database should be opened read-only (True) or
read-write (False). This will eventually
be the default mode during an install, as a separate
output database is created.
Rollback method has been added to MsiDatabase,
which will backout any changes made
to the database. This is to be called before exit
when a fatal error occurs. See help.
96-04-11 davidmck Added support for logging all memory allocations.
Set the environment variable DEBUGMEM on windows or add
the short resource named DEBUGMEM to the launcher on
the Mac.
DEBUGMEM is a set of bit flags. 0x2 tells it to log
allocations.
-----------------------------
Release 1.0.1609
-----------------------------
96-04-08 ivanw The error handling has changed in the handler. Lower
level functions return
an error record, instead of posting the error
themselves and returning a Bool.
In the new scheme only methods in the handler class
post error messages.
Some functions, like WinMessage and Accelerate return
some information
in the error record, that is not a true error. In
the normal use of these
functions, these messages used as return codes. If
the functions are
called directly from automation, these error records
should translate into
meaningful messages about what the function
accomplished.
96-04-06 davidmck Added MsiAuto.ShowAsserts method which can turn on
and off asserts in the services and engine modules
currently.
I'll add the Handler later.
-----------------------------
Release 1.0.1602
-----------------------------
96-03-29 tracyf Mac UI improvements: Group Box control now
implemented, and RadioButton groups now have a group frame;
Bitmap controls are now implemented; fixed tabbing
problems; implemented transparent text for static text
controls; fixed problems with dialog window heights,
and positioning of PushButtons.
-----------------------------
Release 1.0.1528
-----------------------------
96-03-27 tracyf A Mac MessageBox function has been implemented,
which takes the exact same parameters as the Win version.
The first immediate benefit of this is that asserts
(which use MessageBox) are now fully functional for
Mac.
96-03-27 tracyf Mac UI controls for the new Handler DLL are now
available! The following controls are functional:
- Static text
- Edit text
- Pushbuttons
- Radio buttons (minus the frame border, which will
come later)
- check boxes
The UI database tables for Mac and Win are
identical, so the same tables can be used for both without
modification.
96-03-26 johndelo CONVENTION: All directory paths end with a directory
separator,
both the result of function calls and properties set
by SetPlatformProperties.
At directory resolution time, any directory
properties will be fixed up as needed.
96-03-25 ivanw the new UI becomes the default. If you need the old
one for some reason you can reach it by using
HANDLER=msictl(D).dll
96-03-25 johndelo A log option is now available to dump all of the
property values at the end of the log.
Include the letter 'p' in the value for LOGMODE
property. See help for LOGMODE.
The Condition table is now processed by the
CostILnitialize action.
The Selection table is now resolved for Install Level
only by the CostFinalize action.
In the testdb database, setting the NOJAN, NOFEB,
NOMAR, NOAPR properties
will turn off the corresponding file from being
copied.
-----------------------------
Release 1.0.1521
-----------------------------
96-03-20 chetanp CMsiView class handles queries on local tables
CMsiODBCView class handles mixed queries (ODBC +
local) tables.
-----------------------------
Release 1.0.1519
-----------------------------
96-03-17 johndelo Msi.Table.NextNode method has been removed. An
argument has been added
to MsiTable.CreateCursor: Boolean, True to create a
tree-walking cursor,
False to create a normal sequential row cursor. See
Help file.
A catalog table with column definitions has been
implemented. An argument has
been added to GetCatalogTable: 0 = tables, 1 =
columns. See Help.
-----------------------------
Release 1.0.1514
-----------------------------
96-03-12 davidmck Overloaded new and delete in the Engine DLL.
96-03-12 davidmck Added support for finding the function names from an
address and offset.
Currently this is a windows only feature.
-----------------------------
Release 1.0.1512
-----------------------------
96-03-11 johndelo Add MsiDatabase.CreateTempTableName, which creates a
unique name for temporary table.
MsiData object has two properties: StringValue and
IntegerValue, the first previously had
conflicting definitions of Value and TextValue
-----------------------------
Release 1.0.1507
-----------------------------
96-03-06 johndelo All automation objects now have a set of common
methods that allow querying of the underying
COM intefaces, see Help. This is particularly
helpful when retrieving objects
from databases and records. New automation objects
can be obtained which
represent the derived object types. The properties,
HasInterface(iid) and RefCount,
and the method, GetInterface(iid), are not in the
type library as I can't figure out
how to do inheritance of a dispinterface.
96-03-06 johndelo Registration for LEGO builds has been fixed. Both
LEGO and DEBUG builds
register under a 2nd ProgId and ClassId. In addition
to Msi.Automation,
they also register under Msi.AutoDebug or
Msi.AutoLego. By registering the
ship version last (all register as Msi.Automation),
all three builds can be
run simultaneously. The default DLL names used now
support LEGO.
The non-UI tables have been updated to match the spec
in the help file.
Some of the UI tables have been changed to the new
format; the Control
and Dialog tables have been renamed, as the new
tables will be quite different.
96-03-05 johndelo MsiRecord automation of Value has been changed to
conform with MsiCursor
and to support the various data types. See Help.
Separate properties for
StringData, IntegerData, and ObjectData.
MsiCopy and IMsiCopy have been changed to MsiFileCopy
and IMsiFileCopy.
MsiData objects are now supported and documented.
-----------------------------
Release 1.0.1429
-----------------------------
96-02-28 tracyf - Fixed bugs 84 & 91 (involving working around a
Windows 95 bug
in GetDiskFreeSpace).
- Fixed up several memory leaks in the path, auto,
and services objects.
- Implemented CMsiPath::CheckLanguageIDs (Mac)
-----------------------------
Release 1.0.1427
-----------------------------
96-02-26 johndelo There is a new MsiDirectoryManager implmentation --
see help file.
The old Destination table is replaced by a simpler
Directory table.
Logging has been fixed. Minor bugs in database fixed.
96-02-26 davidmck Asserts now have three buttons -
Abort - Break to debugger
Retry - Continue
Ignore - Turn off all further asserts in this module.
96-02-26 davidmck Checked in more memory debugging features. We now
bring up assert dialogs with information about memory
leaks.
This information is also written to the log file if
logging is turned on.
Currently only the String object is hooked up to
AllocObject which provides us with greater debugging
information. I'll be turning on more objects as time
progresses.
96-02-22 tracyf More MsiPath interface functions have been
implemented:
- GetFileAttribute (Mac)
- SetFileAttribute (Mac)
- FileWritable (Mac)
The help file has been updated for all of these.
In addition, full Mac path
and filename validation has been implemented (as soon
as possible, I'm
going to update the doc for CreatePath to reflect Win
and Mac path/file
syntax restrictions).
Tests for all these functions have been added to
MsiPath.bas.
-----------------------------
Release 1.0.1422
-----------------------------
96-02-21 johndelo The makefile and make.bat now can make LEGO builds.
May not yet be in release procedure.
Property names have been justified with the Help
file. Not many are implemented yet.
Several database bugs fixed and closed.
New objects associated with engine:
MsiSelectionManager and MsiDirectoryManager.
Note the in the testdb.mdb, normal UI may be disabled
with QUIET=1.
-----------------------------
Release 1.0.1420
-----------------------------
96-02-19 tracyf Implemented (or fixed a broken implementation of)
the following MsiPath functions:
- Writable (Win & Mac)
- Exists (Mac)
- Remove (Win and Mac)
- FileExists (Win and Mac)
- FileSize (Mac)
- RemoveFile (Mac)
The documentation (help file) has been updated for
all these functions.
Test script: MsiPath.bas
96-02-19 johndelo More operators have been added to EvaluateCondition.
See Help. Evaluate.BAS has been updated.
The expEnum has been changed to iecEnum, consistent
with other exported enums.
96-02-15 ivanw Changed the return type of MsiRecord::Set* from
HRESULT to Bool.
-----------------------------
Release 1.0.1415
-----------------------------
96-02-14 johndelo Implemented EvaluateCondition in services. See Help
file for details.
First test script: Evaluate.BAS in Darwin\test. Still
more test cases to check.
96-02-14 ivanw Added the option of building the (still untested)
new UI. The default is
still the old one.
Replaced the control.h file by handler.h (the new UI
definitions).
Modified the engine so it compiles with the new
header file.
Added the automation for the new UI.
96-02-14 tracyf Implemented Mac version of GetFileVersionString:
Documentation: Help file
Automation script: VerStrM.bas (Mac), VerStrW.bas
(Win)
-----------------------------
Release 1.0.1413
-----------------------------
96-02-13 tracyf Implemented the Mac version of CheckFileVersion:
Documentation: the updated help file
Automation file: \darwin\test\FileVerM.bas
-----------------------------
Release 1.0.1413
-----------------------------
96-02-12 johndelo Command line help has been changed to show property
names with descriptions.
Old ACME command option letters are maintained for
backward compatibility.
See Help topic on Command Line Options.
Launcher properties and help descriptions can both be
set with the
LOADPROP.EXE tool. See Help topic for info.
Logging has been implemented in the engine. See Help
topics:
LOGFILE and LOGMODE properties.
The engine sequencer, Sequence, is now only to be
called by the top
leve actions, see Help topic. The DoAction command
is what is used
by the loader or automation. The 'Install' action is
the normal top level action.
The Action table has been modified slightly, see
Action table Help,
especially about termination action sequence
Properties have been added and many have been
documented. The list
of which ones are NOT implemeted yet is forthcoming.
Some small bugs in the MsiTable implementation have
been fixed, which
would occasionally cause Asserts and missed records.
96-02-10 davidmck Hooked up CMsiMalloc to CMsiServices. You will now
get asserts when leaving unfreed memory blocks
-----------------------------
Release 1.0.1408
-----------------------------
96-02-07 johndelo The low-level database engine, MsiTable and
MsiCursor is now operational
and the documentation has been completed. The tree
functionality and
persistent storage is not implemented (for Milestone
2). A very preliminary
test script DBTABLE.BAS is checked into Darwin\Test.
The function
CreateRows has been eliminate, and its arguments
integrated into the
LoadTable and CreateTable calls. The names
Get/PutObject and
Get/PutData have been changed to avoid conflicts with
macros defined
by the Win API headers. The VBA wrappers did not need
to change.
96-02-06 tracyf Three new interface functions have been implemented:
- MsiPath::CheckLanguageIDs
- MsiPath::GetLangIDStringFromFile
- MsiServices::GetLangNamesFromLangIDString
Documentation: the updated help file
Automation file: \darwin\test\language.bas
-----------------------------
Release 1.0.1406
-----------------------------
96-02-05 johndelo Reorganized help .RTF files a bit, adding
ACTIONS.RTF, and OBJECTS.RTF
(objects other than Services, Database, and Path).
Many help topics are added,
including Dev topics such as how to automate and
provide help to C++ methods
and Help file syntax. Most methods are doc'd, but
many in Services are incomplete.
The database class now makes the system catalog
accessible as an
MsiTable object, with the method GetCatalogTable.
Most MsiTable and
MsiCursor is functional and ready for test
development (but not quite ready
for bugging). Note the the OpenViewSQL method is now
gone (OpenView
now takes the SQL string).
96-02-01 johndelo The table "ViewQuery" has been removed from the
database. The SQL
queries are now the responsibilities of the actions
and controls and have
been moved into the beginning of the appropriate
source files. The old
database method OpenViewSQL will be renamed OpenView
and the
previous functionality of opening a view by name is
now gone. The VBA
automation method OpenView already requires a SQL
string.
The ODBC libraries are now dynamically loaded on
demand. Thus ODBC
support is no longer required to use or test the Msi
database functionality.
The ugly error code offsets have been removed. All
Darwin error codes
are in the range 1000 to 1999. 2000-2999 are
reserved for debug messages.
-----------------------------
Release 1.0.1401
-----------------------------
96-01-31 johndelo The database type for the MsiServices funciton
CreateDatabase has been
changed from a string to an enum, idbEnum. The enum
values are in the
type library. Check msiauto.hlp for documentation.
The low-level database code, classes IMsiTable and
IMsiCursor is in place
but not fully operational as yet. Check the help for
documentation.
-----------------------------
Release 1.0.1330
-----------------------------
96-01-29 tracyf Two new MsiPath functions have been implemented:
CheckFileVersion, and GetFileVersionString. See
the updated help file for documentation.
-----------------------------
Release 1.0.1325
-----------------------------
96-01-23 tracyf Fixed bug 64 (several problems related to calling
services.CreatePath, path.CreateCopier, and
copier.CopyTo via automation).
-----------------------------
Release 1.0.1318
-----------------------------
96-01-17 johndelo Help file now has a version that shows under the
Help Menu/Version.
Ivan added the UI database table definitions.
A first pass at the list of properties was added, but
few topics as of yet.
You will need to have MSIAUTO.CNT in the same
directory as MSIAUTO.HLP
the first time you run help in order to get the
book-tree view.
96-01-16 johndelo IMsiControl and MsiControl have been renamed to
IMsiHandler and MsiHandler.
This was necessary to use the old name as the base
for UI controls.
Note that the automation method is now
The name of the UI DLL won't change until the new
implementation is build.
Help strings for VBA browsing have been added for
some classes.
Note that the type library GUID and name have
changed: now "Installer".
Enum values have been added to the type library,
under "Constant".
These can be directly pasted into and used within the
VB code.
Only a few have been added so far... more to come.
The argument names for VBA have been changed to start
with lower case,
consistent with Excel. The use of them is still case
insensitive.
A help file is now build for Darwin, MSIAUTO.HLP.
This file currently describes
the methods as exposed to VBA. A C++ version will be
conditionally built later.
Only the auto and the database classes are doc'd yet,
more coming soon.
The database table descriptions, except UI, are
mostly there.
This help file can be run from the VBA browser "?"
button, or WINHLP32.
96-01-16 tracyf Fixed bugs: 45,47,52,57
more fixes dealing with Path object functionality.
-----------------------------
Release 1.0.1309
-----------------------------
96-01-08 tracyf Fixed bugs: 42, 43, 49, 53, 54, 55, 56, 60
All dealing with Path object functionality.
96-01-05 chetanp Added ProcessIniFile support for add/add if absent/
delete/ appendtag/ deletetag
to Services.
Transfered UpdateResource from Services to Path
object
96-01-04 johndelo Missing automation wrappers and ODL have been
implemented, as response to a series of bugs.
The IMsiRecord object is no longer limited to 32
fields, but by the amount of contiguous memory that can
be obtained.
Howerver, using more than 32 fields in a record is
not anticipated in Darwin.
Provision is also made to pass objects in records,
but the objects that can be passed are not yet
available for testing.
-----------------------------
Release 1.0.1228
-----------------------------
-----------------------------
Release 1.0.1207
-----------------------------
95-12-06 ivanw DialogControl table is eliminated. Controls are not
reuseable anymore.
All info from DialogControl is migrated to Control.
The CopyGauge flicker problem has been fixed.
95-12-05 ivanw
-----------------------------
Release 1.0.1205
-----------------------------
95-11-30 tracyf I've checked a bunch of new code into the Controll
DLL source, which brings the Mac Darwin user interface
up to an approximate par with the Win Darwin UI.
This will allow us to author fully interactive Mac
setups, and should hold us during the time that Ivan's UI
redesign is taking place.
What works:
- modal and modeless dialog windows
- pushbuttons
- sequence buttons
- radio buttons, radio button groups
- checkboxes
- static text fields
- edit text fields
- action text fields
- action data fields
- copy gauge
- most control properties
What doesn't work
- List, combo boxes (don't even try it!)
- bitmaps (bitmap controls can be authored, but an
empty frame is displayed)
- tree control (it'll be a while before we have this
for either Mac or Win)
- some control properties don't get set or read
I've also checked a new set of Arcade sample
install tables, with a demo UI authored in.
-----------------------------
Release 1.0.1116
-----------------------------
95-11-14 davidmck We should now copy the regauto.exe and msi.tlb to
the release server for releases.