windows-nt/Source/XPSP1/NT/admin/darwin/doc/relnot98.txt
2020-09-26 16:20:57 +08:00

7193 lines
378 KiB
Plaintext

Darwin Setup Development Notes for Testing Releases
99-02-10 murate Implemented COM+ Registration support.
-----------------------------
Release 0.10.0210
-----------------------------
99-02-09 bench bug 8766: fixed problem caused when the logon user
name begins with a '#'. we were failing to write a
value to the InProgress key, causing all installs to
fail.
99-02-09 cgouge Bug 8384. Memory leak in mergemod.dll. Reference
counts in enumerators were off by 1 due to problem in
clone methods. (SDK issue only).
99-02-08 cgouge Bug 8804. Extension.Extension, Verb.Extension_,
MIME.Extension_ changed to type "Text" to match
Docs/usage. (no code change)
99-02-08 cgouge Fixed bug 8802. Using "][" in a formatted field
would cause a crash/freeze during internal field
validation.
99-02-05 bench bug 8784: fixed error that occured when patching a
per-machine install including transforms.
99-02-04 cgouge Bug 8771, Validation. ICE09 was incorrectly
requiring that all components installed to the system folders
have keyfiles with system bits set. The only
requirement is that the permanent bit be set (and it is a
warning anyway.) Removed the incorrect check.
99-02-04 cgouge Bug 8747, Validation. ICE24 would print garbled
error messages due to a bad formatting string.
-----------------------------
Release 0.10.5003
-----------------------------
99-02-03 johndelo bug 8758, fix UILevel property to match INSTALLUILEVEL_*
values so that conditional logic works properly.
Previously was set to different internal enum values,
and was always set to default when running in service.
UILevel Property help topic has correct values, but note
that this topic is an automation topic, and not an
install engine property. Doc topic will be added on this.
99-02-03 johndelo German template.msi received and added to localized list.
templates\intl\template.DEU
99-02-03 eugend Fixed bug # 8748. From now on, the SelectionTree
control will stop displaying features (nodes) in bold.
99-02-02 malcolmh Fixed bug 8755. Fixed creation of shortcuts on the
desktop when profile folders are redirected.
99-02-02 chetanp bug 8740 - changed use of TextSize to CharacterCount
when using the Remove string manipulation fn.
99-02-02 bench bug 8721: we now schedule the ttfcache file for deletion
even if it doesn't exist before shutdown.
-----------------------------
Release 0.10.4930
-----------------------------
99-01-30 johndelo bug 8703, ObjectSafety interface by default now returns
not safe for scripting. Can be overridden by MSI
policy setting "SafeForScripting" = 1
99-01-30 johndelo bug 8687, permanent ODBC drivers should never be unregistered
99-01-30 bench bug 8258: on some installs with the ForceReboot
action, and "error accessing install server" error would
pop up after the reboot. This was caused by an RPC
failure in CoCreateInstance when attempting to connect
to the install server. The fix is to retry the
CoCreateInstance call when an RPC error is encountered.
We will retry once every 100 ms for at most 30
seconds.
99-01-28 malcolmh Fixed bug 8700: If you attempted to prepend a value
to an environment variable on NT, and the existing
value has an embedded environment variable, then we'd
incorrectly add "#%" in the middle of the environment
variable.
99-01-28 chetanp backed out bug 7412 changes due to office triage
punt.
99-01-28 chetanp bug 7412 - add bit to reinstall user data as well
during implicit reinstallation during
MsiProvideComponent, MsiProvideQualifiedComponent and
MsiProvideComponentFromDescriptor
99-01-28 chetanp bug 8698 - use of uninitialised buffer. Use
CTempBuffer.Resize inplace of SetSize.
99-01-27 chetanp bug 8553 - we now ensure that a feature had been
explicitly selected to be installed (locally or RFS) and
dont promote an advertised feature to installed just
because all its components are present.
99-01-27 chetanp Bug 8662, handle -1 roots as registry key paths for
components
99-01-27 cgouge Bug 8678, validation. ICE14 modified to do a case
insensitive compare when checking to see if a Feature
is its own parent.
99-01-26 malcolmh Fixed bug 8622. We have two new private properties
relating to our new public property security
mechanism:
RestrictedUserControl - should be set by darwin
whenever we're in the mode of restricting which public
properties get sent to the server side. authors can
use this property to conditionalize certain dialogs
and actions.
EnableUserControl - is the equivalent to the policy
of the same name. is essentially equivalent to a "*"
for SecureCustomProperties - when this property is
set, all public properties will always be passed across
to the server when installing or otherwise
configuring this pkg.
99-01-26 cgouge Bug 8570, Property table schema changed to allow
unlimited length in the Value column. Changed in schema
and all built databases.
99-01-26 mattwe 8066: picked up new versions of shfolder.dll from:
Alpha=\\iepub\pubs.ie5\BLD1321.1\ALPHA\flat\retail\en\alpha
x86=\\iepub\pubs.ie5\BLD1321.1\x86\flat\retail\en\winnt
-----------------------------
Release 0.10.4926
-----------------------------
99-01-25 bench bug 8480: check in version 1.94.319 build of
mspatcha.dll and mspatchc.dll. the fix taken solves a bug
when patching certain files on Win9X.
-----------------------------
Release 0.10.4922
-----------------------------
99-01-21 malcolmh Fixed bug 8416: Security problem with custom action
DLLs present on system with higher version
We now **as our default** ignore public properties
that aren't in our approved list or in an
author-specified list. The author can extend our approved list
by setting the "SecureCustomProperties" property to a
semi-colon delimited list of properties that are to
be allowed in addition to the properties in our
hard-coded approved list.
We will, however, respect _all_
public properties (our former behavior) if any of
these conditions are true:
1) The user is on Win9X.
2) The user is an Admin.
3) The per-machine "EnableUserControl" policy is set
to 1
4) The product is not being installed elevated (i.e.
is unmanaged)
Our hard-coded list of properties that we allow is:
FILEADDLOCAL
COMPONENTADDLOCAL
COMPONENTADDSOURCE
COMPONENTADDDEFAULT
ALLUSERS
SCRIPTFILE
EXECUTEMODE
PRODUCTLANGUAGE
TRANSFORMS
REINSTALLMODE
RUNONCEENTRY
CURRENTDIRECTORY
CLIENTUILEVEL
CLIENTPROCESSID
ACTION
CURRENTMEDIAVOLUMELABEL
INSTALLLEVEL
REINSTALL
FEATUREREMOVE
FEATUREADDLOCAL
FEATUREADDSOURCE
FEATUREADDDEFAULT
FEATUREADVERTISE
PATCH
SECONDSEQUENCE
TRANSFORMS
TRANSFORMSATSOURCE
TRANSFORMSSECURE
CURRENTDIRECTORY
MIGRATE
LIMITUI
LOGACTION
UPGRADINGPRODUCTCODE
REBOOT
SEQUENCE
NOCOMPANYNAME
NOUSERNAME
RESUME
PRIMARYFOLDER
SHORTFILENAMES
INSTALLLEVEL
MEDIAPACKAGEPATH
PROMPTROLLBACKCOST
ODBCREINSTALL
99-01-21 chetanp bug 8476 - directly use HKLM\S\C in place of
:RegOpenUserClassesRoot in case our caller is the local
system but is not impersonated.
99-01-21 chetanp bug 8470 - I have made all the words in our query
dictionary as uppercase. As per the triage's decision
I have NOT changed the string compare to a case
sensitive compare.
99-01-21 malcolmh Fixed bug 8134. Fix impersonation during
CreateFileFromData. This allows us to write icon and transform
data during app deployment even when user profiles are
redirected to a network share.
99-01-21 malcolmh Fixed bug 8483: We now have an HKCU version of our
ResolveIOD key. It's at
HKCU\Software\Microsoft\Windows\CurrentVersion\Installer\ResolveIOD. If an EXE
appears under either the HKCU or the HKLM key then we'll
allow install-on-demand.
99-01-21 tracyf Fixed bug 8471 - avoid potential internal error when
user cancels.
-----------------------------
Release 0.10.4920
-----------------------------
99-01-19 johndelo bug 8440 - unbind ODBC driver manager DLLs before
file copy to prevent file in use, which then
caused mismatched ODBC DLL versions during IE install.
99-01-19 johndelo bug 8435 - corrupted Thai, Vietnamese InstMsi.msi
bug 8399 - bad/missing error 1639 resources in 5 languages
99-01-19 chetanp bug 8213 - fixed crash due to attempting to call
RemoveFontResource on a font that is being used by the
system.
99-01-19 chetanp fixed bug 8450 where we were not properly creating
shortcuts for RFS components in multi-user scenarios
99-01-19 bench bug 8455: fixed an error in the InstallFiles action
when installing from a URL location.
99-01-19 bench bug 8460: fixed alpha-only bug that caused self-reg
to fail for dlls that linked to other dlls not
located in the %path%.
-----------------------------
Release 0.10.4919.1
-----------------------------
99-01-19 tracyf Fixed bug 8433 - prior to the fix, an install using
the MoveFile table would fail with a fatal error if
the source file to be moved was in use.
-----------------------------
Release 0.10.4919
-----------------------------
99-01-18 malcolmh Fixed bug 8413: Error 1310 copying Excel.pip and
Error 1406 writing some nls registry when boot XL after
upgrade to NT5.
This fixes a failure that occurs when Darwin is:
1) Doing an un-managed install and
2) Installing over an existing ACL'd file and
3) The file we're installing has the read-only
attribute set.
-----------------------------
Release 0.10.4915
-----------------------------
99-01-13 bench bug 8259: since the RunOnce key has a 256-character
limit for the command line, we now store the
after-reboot command line for ForceReboot installs under
HKLM\SW\MS\Windows\CV\Installer\RunOnceEntries. the
RunOnce command line is now just "msiexec /@ XXXXXX"
where XXXXXX is the name of the value in the
RunOnceEntries key with the rest of the command line options.
note that this fix also provides the fix for bug 7777.
the original fix for 7777 was partially removed.
99-01-13 eugend Addittion to my 98-11-11 entry: PathEdit is another
control that always uses fonts in the user's default
UI character set.
-----------------------------
Release 0.10.4913
-----------------------------
99-01-12 mattwe 8253: msiexec /regserver wouldn't actually
re-register msi.dll when the inprocserver32
registry entry was correct. This prevented
NT upgrades from working when the other
info from msi.dll was changed.
99-01-12 eugend Fixed bug # 8244. UsersLanguage style bit can be
set now for ListBox and ComboBox controls as well.
I've updated doc bug # 7631 to track this change.
-----------------------------
Release 0.10.4912
-----------------------------
99-01-08 cgouge Bug 8327: Validation. ICE30 added support for
directories whose target path is set by either a Darwin or
user-defined property. Previously, it was possible
for a directory set in this way to report a collision
if the source directories were the same. It now maps
these directories to the different target locations.
99-01-08 bench bug 8365: fixed problem caused when patching an
admin image where the package had TempFolder in the
Directory table. this broke Office admin patching.
-----------------------------
Release 0.10.4908
-----------------------------
99-01-07 mattwe bug 8331: made a pair of fixes for maintaining ACLs
on files already on your system when replace the
underlying bits. One involved periodically dropping
the ACLs, and the other involved always dropping
large ACLs. This is a fix to problems introduced
in bug 6456.
99-01-07 bench bug 8329: removed msidbUpgradeOperator enum from
msidefs.h, which was inadvertently left behind when we
removed support for the Upgrade table (on non-NT5
systems).
-----------------------------
Release 0.10.4906
-----------------------------
99-01-05 cgouge Bug 8276: Validation. ICE15 modified to accept
multiple extensions associated with a single MIME type. As
long as a circular reference exists between a MIME
type and an extension, other MIME types can reference
that same extension and other extensions can
reference that same MIME type.
99-01-05 mattwe Fixed bugs 8155 and 7193: Due to serious performance
and not-so-serious implementation bugs with
GetNamedSecurityInfo API in NT4-SP4, we have switched
to GetFileSecurity() to read security and ownership
of files.
-----------------------------
Release 0.10.4905
-----------------------------
99-01-04 malcolmh Fixed bug 7854. We now support a list of process
names that we enable MsiProvideComponentFromDescriptor
for on low shell versions. To enable a process, write
the process name (e.g. explorer.exe), as the "name"
portion of a named value pair under
HKLM\Software\Microsoft\Windows\CurrentVersion\Installer\ResolveIOD. We
use this logic:
// Bug 7854. This code is a hack to work around an
issue with early shell
// release wherein calling IShellLink::Resolve
faults in the shortcut.
// This causes problems with some apps (e.g. Win98
fat16->fat32 converter
// that enumerate the Start Menu, resolving each of
the links). Suddenly
// the user will notice all of their advertised
apps being faulted in. The
// hack is as follows:
//
// 1) Are we in the explorer's process? Allow call
to proceed; otherwise
// 2) Does our shell have the issue fixed? Allow
call to proceed; otherwise
// 3) Is the ResolveIOD policy set? Allow call to
proceed; otherwise
// 4) Are we in a process that really wants
IShellLink::Resolve to really
// resolve? This list is in the registry. If so,
proceed; otherwise
// 5) Return 1603. This should (hopefully) cause
Darwin-unaware apps to
// ignore the link.
99-01-04 malcolmh Fixed bug 8288: We now create MIF files in our SHIP
build as well as in our DEBUG build.
-----------------------------
Release 0.10.4901
-----------------------------
98-12-31 cgouge Bug 8274. MsiFiler. Added support for SFN|LFN in the
File table based on the summary information stream
value.
-----------------------------
Release 0.10.4830
-----------------------------
98-12-29 bench fixed bugs 8147 and 8247, which dealt with allowing
a user to use an unblessed source and package when
the DisableBrowse policy is set.
-----------------------------
Release 0.10.4825
-----------------------------
98-12-23 bench bug 8185: we now reregister and readvertise a
product during a QFE upgrade, to ensure the updating
product information is registered, like the product
version.
-----------------------------
Release 0.10.4818
-----------------------------
98-12-17 mattwe Bug 8212: Fixed a memory leak in SetSecureACL
98-12-17 cgouge Bug 8164. The DisableBrowse and DisablePatch system
policies have been moved to HKLM from HKCU. The keys
are created with a value of 0 at Darwin install and
ACL for System and Admin full, everybody read.
98-12-17 bench bug 7952: when patching a feature in the
run-from-source state, the feature will now be moved local
instead of advertised.
98-12-17 cgouge Bug 8167. The _Sequence, _Required, and
_InstallValidate tables are no longer part of the schema, and
thus are no longer part of template.msi, simple,msi,
etc. These tables are only used by ICEs, so they are
shipped as part of the CUB file. They should generally
not be included in any MSI.
MsiVal.exe does use these tables, but it is not a
shipping tool anymore. In order to continue validating
as part of the build process, we create a temporary
MSI in the TEMP directory that is a merge of the
database to be validated and these three tables (from the
CUB file source directory). After validing this temp
file, it is deleted.
98-12-17 mattwe Added entries to the Environment table for
TestDb code coverage. Also changed the
ProductVersion per John Delo's request to
6.01.1234
98-12-17 mattwe Bug 8066: Took shfolder.dll 5.0.1011.2100 for
alpha/x86.
98-12-17 mattwe Bug 8181: Removed default logging from instmsi.
This interfered with policy logging, and the logs
were always cleaned up at the end of the run.
98-12-17 mattwe Bug 8171: took new SKY instmsi.msi (inst1051.msi)
98-12-16 bench bugs 8120, 8160: added a new per-user policy called
DisablePatch. if set, patches may not be applied.
this is needed in secure environments as patches can
change an existing install in unlimited ways. and if
the existing install is managed, the changes made by
the patch are run with elevated privileges. in
addition to the new policy, installs that are disabled by
policy now return ERROR_INSTALL_PACKAGE_REJECTED
instead of ERROR_ACCESS_DENIED.
98-12-16 cgouge Bug 8180: Validation. ICE27 updated to handle
DisableRollback action.
98-12-16 cgouge Bug 8166: Validation: ICE03 now reports String
Overflow errors as warnings.
-----------------------------
Release 0.10.4816
-----------------------------
98-12-15 bench bug 7784: added a UI option to show the basic UI progress
dialog with no modal dialogs (no error messages or
files-in-use dialog). the option to msiexec.exe is
/qb- and the option to MsiSetInternalUI is
INSTALLUILEVEL_PROGRESSONLY.
98-12-15 cgouge Bug 8118. Validation. New ICE56, checks for a
directory structure with a single root of
TARGETDIR/SourceDir so that Admin installs will correctly copy all
files.
98-12-15 johndelo Version bumped to 1.0 , in preparation for shipping.
There should be no compatibility problems, as this
is effectively the same as version 0.30.
Databases can be left with their current version
to maintain compatibility with older MSI versions.
If the database version (Summary Property 14, Pages)
is advanced to 100, then older MSI versions will
not be able to open the package.
98-12-15 mattwe Bug 8142: Fixed several localized instmsi.msi
files that had the incorrect summary info for
their languages.
98-12-15 cgouge Bugs 8070, 8049. ICE Validation. New ICE55. Checks
the LockPermissions table for bad foreign key
references and null permission values.
-----------------------------
Release 0.10.4815
-----------------------------
98-12-14 mattwe Added 'ptb' (portugese brazillian) support for instmsi.
We're now at 31 languages.
-----------------------------
Release 0.10.4811.1
-----------------------------
98-12-11 mattwe bug 8107: the LockPermissions table will now recognize
the System, Everyone, and Administrators group (case
insensitive) without the need for localization.
-----------------------------
Release 0.10.4811
-----------------------------
98-12-11 bench bug 7953: fixed problem with suspended (or
ForceReboot) installs where setting a feature property like
ADDDEFAULT on the command line turns on more features
than the property itself defines. when this happened,
the features not defined by the property weren't
completely installed when resuming the suspended install
(or after the reboot).
98-12-10 davidmck Fixed bug 7914 - CleanSweep could get a file between
the time we got the file version size and getting
the actual version block information. We now fail
gracefully.
98-12-10 bench bug 8059: fixed case where a user may not be
recognized as an admin if they are a member of a large
number of groups. (weren't increasing buffer size if
necessary for GetTokenInformation call)
98-12-10 malcolmh Fixed bug 7891: Re-advertisement is no longer
allowed unless you're app deployment
98-12-10 mattwe Bug 7958: Picked up version 5.0.1011.2000 of shfolder.dll
for instmsi/copymsi. There are x86 and alpha versions.
98-12-09 cgouge Bug 7931. Validation now supports [%id] syntax in
the AnyPath, Path, and Paths column types. It also now
accepts [$component] syntax in those same types, but
only at the beginning of a path. (# and ! are
accepted as well, but the usefulness of these formats is
limited)
-----------------------------
Release 0.10.4809
-----------------------------
98-12-08 bench bug 7887: when installing files, we now set both the
creation and modified dates to the modified date of
the source file. this is to ensure the two dates are
identical for any files we copy. for unversioned
files, if the dates are different we never overwrite
the file again. previously, the creation and modified
dates where set to the creation and modified dates of
the source file, which may have been different.
98-12-08 davidmck Fixed bug 7914, a problem with any file that spanned
more than 2 cabinets. We were not correctly handling
the MediaChange message.
98-12-08 mattwe 7929: there was a problem with environment variables
being set on 9X that shouldn't have.
98-12-08 mattwe 7815: Added localization for instmsi/copymsi for the
following LangIDs: 1028, 1031, 1035, 1036, 1038,
1041, 1042, 1049, 1050, 1060, 2052.
The localized databases are checked into src\intl,
and a perl script generates the transforms, and
adds them directly into the internal databases.
DEV NOTE: You must have language support for these
to build copymsi/instmsi successfully, or set the
IGNORELANGID environment variable to ignore
unsupported languages.
-----------------------------
Release 0.10.4808
-----------------------------
98-12-07 bench bug 7906: MoveFiles action didn't move files with no
attributes set (i.e. with just the NORMAL
attribute).
98-12-06 cgouge Fixed bug 7896. Internal Validation supports version
strings up to 65535.65535.65535.65535.
98-12-04 bench Bug 7892: fixed rollback of typelibrary
registration.
98-12-04 malcolmh Bug 7890: Allow INSTALLSTATE_ADVERTISED to be passed
to MsiSetFeatureState
98-12-04 malcolmh Fixed bug 7812. We don't cancel any more when the
user says not to.
-----------------------------
Release 0.10.4804
-----------------------------
98-12-03 bench bug 7777: fixed ForceReboot installs for non-admins.
when the RunOnce key was acl'ed to not allow delete
access to the user, the RunOnce command would
continue to be run at each logon.
-----------------------------
Release 0.10.4803
-----------------------------
98-12-02 malcolmh Fixed bug 7848. Eliminate warning dialog for failure
to remove a reg value.
98-12-02 malcolmh Bug 7841. Fixed errors during CopyTempDatabase.
98-12-02 malcolmh Fixed bug 7693: Shouldn't base installed property
off Uninstall product key. We now use the
"WindowsInstaller" value.
98-12-02 davidmck Fixed bug 7858 - Problems with DBCS characters in
PathType. We were incorrectly looking at the second
byte and thinking it was a full path when it was a
relative one.
98-12-01 bench bug 7783: made several fixes to rollback for ODBC
DSN installation.
98-12-01 malcolmh Fixed bug 7829: Crash in MsiGetProductInfo
-----------------------------
Release 0.10.4801
-----------------------------
98-11-25 cgouge Bug 7763, validation: ICE35 now additionally checks
for files that are marked compressed but do not have
a CAB specified in the Media table.
98-11-25 davidmck Fixed bug 7813, checked in new intl resources for
Fin, Rus, Slv, Hun, Hrv, Fra from RobR.
98-11-25 davidmck Fixed bug 7801, memory leak at the end of Office
install due to leaking a string in SetODBCFolders.
98-11-25 cgouge Bug 7635. Validation: ICE31 now checks that if UI is
authored, you have a DefaultUIFont property which
refers to a valid row in the TextStyle table.
98-11-24 malcolmh Fixed bug 7774: Need to protect NT4 policies.
98-11-24 malcolmh Fixed bug 7803: Rollback does not work when trying
to restore pre-existing environment variables
-----------------------------
Release 0.10.4720
-----------------------------
98-11-19 cgouge Bug 3577. Validation. Update ICE03 to check for
missing _Validation entries on empty tables as well.
98-11-19 cgouge Bug 7734, validation. Updated _Validation entries to
allow negative icon index values in Class, ProgId,
and Shortcut tables.
98-11-19 mattwe Fixed bug 7758: When an environment variable wasn't
found in the autoexec.bat file, we were adding it
even if the authoring said to remove it.
Fixed bug 7759: When an environment variable was
supposed to do nothing during an install or uninstall
we were doing the default behavior instead.
98-11-19 malcolmh Fixed bug 7760. We have a new event log message for
component detection failures.
98-11-19 malcolmh Fixed bug 7756: can't see Darwin UI (installs
silently) so that it looks like hang in some situation
98-11-19 bench bug 7751: custom actions are now allowed to hide the
cancel button by using the INSTALLMESSAGE_COMMONDATA
type in a call to MsiProcessMessage.
98-11-19 malcolmh Fixed bug 7732: x86 Custom actions of type 1 running
on service side in wx86 emulation fail
98-11-19 malcolmh Fixed bug 7739: MsiReadRecordStream( ) doesn't set
pchDataBuf to actual number of chars read on output
98-11-19 malcolmh Fixed bug 7728: Service runs out of memory and hangs
98-11-18 bench bug 7723: added File and Media tables to
minimum.msi, as these are unfortunately required in 1.0 Darwin.
98-11-17 bench bug 7687: we will know prompt for reboot in the
following situation: we attempt to uninstall a file and
can neither delete the file or rename the file. this
will occur for in-use files on Win9X, and in-use
files on NT can usually be renamed at least. Note this
is a change in behaviour from previous builds when we
would prompt for reboot only when installing OVER an
in-use file.
-----------------------------
Release 0.10.4717
-----------------------------
98-11-16 cgouge mergemod.dll is now built as part of every build. It
is only built as part of "all" in unicode builds.
98-11-16 bench bug 7567: added DisableRollback action. see doc bug
7706 for more information.
98-11-16 cgouge Validation: Fixed bug 7675. New ICE52 that checks
for non-public properties in AppSearch table.
98-11-16 cgouge Validation: Fixed bug 7676, updated sequence
validation to explicitly check SetODBCFolders sequence
restrictions.
98-11-13 cgouge Bug 7673. Removed MS-Specific EULA from
template.msi. Also cleaned up CCPFail message.
-----------------------------
Release 0.10.4713
-----------------------------
98-11-12 mattwe Fixed bug 7622 - Commit custom actions don't work
when rollback is disabled. InstMsi/CopyMsi no longer
use them.
98-11-11 malcolmh Fixed bug 7627. ERROR_MORE_DATA return not correct
from remoted Ansi APIs.
98-11-11 malcolmh Fixed bug 7629: Set DISABLEROLLBACK property when
rollback is disabled
98-11-11 eugend fixed bug # 7505. From now on controls will create
fonts using the database's code page when it comes to
choose the font's character set (vs. the system's
code page as returned by GetACP() that was used so far).
This ensures that the information in the database will
be displayed properly (provided there is language support
on the machine).
Exceptions to this are the Edit, DirectoryList and
DirectoryCombo controls that will always use fonts in
the user's default UI character set. Another
exception is the Text control if it has the UsersLanguage
stylebit (value = 0x100000) set - this is useful for
displaying text the user entered in Edit or PathEdit
controls.
I've open the following DOC bugs related to this:
- 7631 on the UsersLanguage stylebit
- 7632 requests not to use "__UL" suffix in identifiers in
TextStyle table's, TextStyle column.
- 7633 requests the presence of DefaultUIProperty in
packages that have UI.
-----------------------------
Release 0.10.4711
-----------------------------
98-11-10 chetanp bug 7261- On NT5, for a component with a file key
path, we now register an auxiliary HKCR registry key
path from the Registry table, if one exists for that
component. This is to handle scenarios where a product
is (user) installed by one user on a machine and then
another user attempts to install the same product on
the same machine. Components that have a file key
path will not be implicitly reinstalled as they appear
already installed. Adding the auxiliary key path will
have the effect of making the component appear
broken (and rightly so, since it is missing the corr. HKCR
info for that user) and cause darwin to reinstall
the component.
98-11-10 bench Added a new property, called "ProductState", which
identifies the current state of the product, and can
be used to determine if the product is advertised but
not installed, or installed for a different user.
the value of the property is identical to the
INSTALLSTATE returned by MsiQueryProductState. see bugs 7570
and 7610 for more info.
-----------------------------
Release 0.10.4710
-----------------------------
98-11-10 johndelo Improved logic for selecting basic UI language/codepage.
Before the package is opened (or it is truly neutral),
when selecting a language to display to the user, we
use the new API GetUserDefaultUILanguage when available
(which is set under NT5 locale panel: Dialogs and Menus).
The property, PackageLanguage, which normally must match
the SummaryInformation language (Template property, 7),
is ultimately used to select the language for dialog
text and buttons loaded from the resources in MSI.DLL,
and could be changed by externally applied transforms.
Fonts are selected based on the codepage of the text data.
Database strings use the codepage of the database strings.
Resource strings use the default codepage for their language.
List/comboboxes use the system codepage on Win9X,
or the codepage of the user language on NT. As always, it
is imperative that the codepage of MSI or MST be set properly.
If all the strings in the database are ASCII text, then the
codepage should be 0, to allow using font better for user data.
98-11-08 cgouge Fixed Bug 7501. We now set the "TerminalServer"
property if Windows Terminal Server is detected.
Otherwise the property is undefined.
-----------------------------
Release 0.10.4706
-----------------------------
98-11-05 chetanp bug 7559 - fix ixoComponentRegister operation's
rollback which was broken for components registered run
from source (both file and registry key path
components).
-----------------------------
Release 0.10.4704.1
-----------------------------
98-11-05 davidmck Fixed bug 7460. For the Wx86 registry keys we were
not handling the AddRef and Release code correctly.
Needed to add the four cases to those functions.
98-11-04 cgouge Fixed Bug 7491, MsiProcessMessage fields getting
reset during first progress message call. The two cases
where the records were modified now use their own
private records instead of the user record.
98-11-04 bench bug 7532: fixed bug that prevented using MoveFiles
to rename a file without moving from one directory to
another.
-----------------------------
Release 0.10.4704
-----------------------------
98-11-03 bench bugs 7195 and 7492: fixed unformatted event log
messages (%temp%\msievent.log on Win9X) written by ship
Darwin.
98-11-03 mattwe bug 7467: We now acquire the SE_RESTORE_NAME privilege
to set the owner on files. This sometimes ends up
up with replacing a file, and the file is still marked
as being owned by the initial person to install the
file. However, we cannot let someone own a file
that we had to elevate to write to.
98-11-03 bench bug 7425: we now flush the rollback script with each
rollback opcode to ensure the script contains all
information necessary to completely rollback system
changes. previously, the rollback script would be
missing the last opcodes in case of a machine crash, and
not all changes could be rolled back.
-----------------------------
Release 0.10.4703
-----------------------------
98-11-02 bench bug 7466: when patching an admin image, we now
update the summary information of the admin package as
well as persisting transforms to the database. the
summary information properties that are updates are the
PackageCode, Comments and Subject. the values used to
update these properties are read from the
PATCHNEWPACKAGECODE, PATCHNEWSUMMARYSUBJECT and
PATCHNEWSUMMARYCOMMENTS properties, which are added by the
patch-only ('#') transforms of the patch package.
98-11-02 cgouge Bug 7462. Logging enabled in verbose mode for Wx86
emulation mode on Alpha.
98-11-02 bench Bug 7458: cancelling install during binary patching
would leave behind temp files and could also lead to
an AV. fixed by allowing patching thread to finish
before attempting cleanup or releasing memory used by
thread when the user cancels midway through a patch.
98-11-02 malcolmh Fixed bug 7489. Increased the ship timeout to 30
minutes.
98-11-02 malcolmh Fixed bug 7424: Dariwn should better handle corrupt
packages.
98-10-30 davidmck Fixed Bug 7488, we were enumerating drives twice in
some cases because we needed an ELSE in
EnumDriveTypes.
98-10-30 tracyf Bug 7431: when prompting the user for a CD, we now
wait up to 10 seconds before complaining that we can't
find the disk, to give the CD a chance to spin up.
-----------------------------
Release 0.10.4630
-----------------------------
98-10-29 cgouge Bug 7013, Validation. New ICE50, checks Icon.Name to
ensure that advertised shortcuts using the icon will
have correct context menus and will display the
icon.
98-10-29 bench Bug 7419: fixed timeouts during patch application
98-10-29 mattwe Bug #7380: shfolder.dll is now installed on all
platforms, not just 9X. Added alpha version to
%darwin%/tools/bin/alpha
98-10-29 mattwe Bug #7387: removing registry values for the name "*"
now properly work when there is a value. (Does not
delete the whole key unless the value is *blank*)
98-10-28 cgouge Bug 7447 - Validation, ICE 51. Checks fonts for
titles. TTC/TTF fonts should not have them, everything
else should.
-----------------------------
Release 0.10.4628.1
-----------------------------
98-10-28 bench bug 7453: when determining source type we would
sometimes use the name of the cached msi when looking for
the sourc msi. bug introduced in 4628 and fixed in
4628.1.
-----------------------------
Release 0.10.4628
-----------------------------
98-10-28 chetanp bug 7317 - As a result of fixing darwin bug 7317 the
Extension.ShellNew and Extension.ShellNewValue
columns have been removed. We now no longer write these
keys from the Extension table. Instead, it is expected
that the author author this information in the
Registry table. These changes have warranted a schema
change and we are now at schema 30. However we are still
compatible with the older databases (>= 26) and the
behaviour is unchanged for the older databases (i.e. we
use the Extension.ShellNew and
Extension.ShellNewValue columns at advertisement).
98-10-27 chetanp bug 7372 - added support to generate the FontTitle
for a TTC file, if not provided in the Font.FontTitle
column.
98-10-27 chetanp bug 7383 - we now set the %windir%\ttfcache file for
deletion pending reboot, in case we install a ttc
font file to a win9x machine.
98-10-27 chetanp bug 7388 - we now have a new
MsiProvideQualifiedComponentEx API that takes an extra szProduct arg. When
this arg. is specified we search for a qualified
component published by that product , else we fail (NOTE:
we do not fall back to using another Darwin
Descriptor). If szProduct is null we work the same as
MsiProvideQualifiedComponent.
98-10-27 johndelo ----Transform viewer implemented internally in Msi.dll----
To invoke transform view mode, open the reference database normally,
then use the flag MSITRANSFORM_ERROR_VIEWTRANSFORM in MsiDatabaseApplyTransform.
This flag then stops the transform from being applied to the database,
and instead dumps the contents into a read-only temporary table, _TransformView.
This table can then be accessed with normal SQL queries, and is never persisted.
Table is held in memory by a lock count, that can be released with a SQL command
"ALTER TABLE _TransformView FREE".
The table is not cleared when new transforms are applied resulting in successive
application of the transforms. Release the table to view transforms separately.
---SCHEMA FOR _TransformView TABLE---
Table CHAR, PK name of altered table
Column CHAR, PK name of column, or: INSERT, DELETE, CREATE, or DROP
Row CHAR, PK row: primary key values, tab separated, NULL if schema change
Data CHAR data (name of stream if stream data), or column definition
Current CHAR current value from reference database, or column number
Therefore the various transform operations are indicated as below:
---DML ops---
Modify data: {table} {column} {row} {data} {current value}
Insert row: {table} "INSERT" {row} NULL NULL
Delete row: {table} "DELETE" {row} NULL NULL
---DDL ops---
Add column: {table} {column} NULL {defn} {column number}
Add table: {table} "CREATE" NULL NULL NULL
Drop table: {table} "DROP" NULL NULL NULL
To form the row ID, the primary key values are concatenated, tab separated.
Null primary key values are represented by a single space character.
Scripts have been checked in to call the APIs and view the result table,
and are available as well in \\dartools\distrib\Viewers.
WshTranV.vbs - VBScript for Windows Scripting Host - CScript.EXE
TranView.vbs - VBScript to be run with RunScrpt.EXE (Darwin NT-only tool)
The latter script also has a Diff function for comparing databases.
Use ? or Help on the command line for the command syntax.
98-10-27 johndelo Bug 7399. We now attempt to find a SansSerif font when the package is
not in the system codepage, avoiding the ugly Serif fonts that were seen.
98-10-27 cgouge Bug 7081. Validation. New ICE48, checks for
"hardcoded" directories, that is, directories that are also
keys in the Property table. Provides a warning for
each case.
98-10-27 cgouge Bug 7401. Validation. ICE49 checks for default reg
entries (no name) that are not REG_SZ. (for Win95).
98-10-27 cgouge Bug 7430. Validation support for new Admin image
flag in SummaryInfo stream. ICE39 now gives a warning if
this bit is set.
98-10-27 bench bug 7015: fixed post-admin installs from packages
with files marked "compressed" in the File.Attributes
column. admin images are fully uncompressed, even for
files marked compressed. this is to allow patches
to update any files in an admin image. as a result,
we now ignore the compressed bit when installing from
an admin image. to designate a package as being in
an admin image, a new bit was added to the "source
type" summary info property. the possible values are
now 0-5, where 4 is admin with LFN and 5 is admin with
SFN.
98-10-27 davidmck Fixed bug 7418, needed to handle the ifiAccessDenied
return from GetAllFileVersionInfo.
98-10-27 malcolmh Fixed bug 7410: reinstallmode /V doesn't work when
the package code changes
98-10-27 malcolmh Fixed bug 7398: "TransformsSecure" policy set causes
MsiAdvertiseScript to register garbage transform
list.
-----------------------------
Release 0.10.4627
-----------------------------
98-10-27 cgouge Bug 6555. Validation, new ICE 46. Checks
definition/usage of properties for differences in case, flagging
potential mistakes with a warning.
98-10-26 malcolmh Fixed bug 7122. changing package codes for the same
product are now rejected unless you specify /fv
98-10-26 mattwe Bug 7354: Re-arranged supported platform list
in instmsi/copymsi to work-around alpha only bug
#7422
98-10-26 mattwe Bug 7404: Instmsi/CopyMsi now put explicit
accellerators on install/uninstall/apply verbs.
With the explicit '&' the first letter works,
but it isn't underlined in the UI.
98-10-26 bench bug 7338: added a new bit to the File.Attributes
field that designates a file as coming from a patch
package. the new bit is necessary to mark files that are
always compressed. formerly these files were marked
with the "compressed" bit, but this bit will be
ignored when installing from an admin image.
98-10-26 mattwe Fixed bug 7335 (reactivated for the system agent)
We can now tell the difference between when the
system agent is stopped, versus when it is paused.
98-10-26 malcolmh Fixed bug 3794. DISABLEMEDIA is now set only when
the summary source bit is set to compressed.
98-10-23 tracyf Per bug 7216, components can be flagged with the new
"Transitive" attribute bit (value: 64). If this bit
is set, then at reinstall time, if the component was
previously disabled but is now enabled, it will be
installed. If it was previously enabled, but is now
disabled, it will be removed. The primary motivation
for this bit is to allow applications to be upgraded
when the OS is upgraded, by simply running a
reinstall of the product. Note that, for "transitive"
components that are being removed on reinstall, the
Permanent bit is ignored. Even if the component has other
products as clients it will still be removed (with the
implicit understanding that the author has
conditioned another OS-specific component to be installed in
its place on upgrade).
98-10-23 mattwe Fixed bug 7365: InstMsi/CopyMsi no longer write
the Install To Network verbs.
-----------------------------
Release 0.10.4623
-----------------------------
98-10-22 davidmck Fixed bug 7258 by increasing our default timeout in
Ship to 5 minutes.
98-10-22 mattwe Bug 7335: The screen saver and system agent now save their
initial states at the beginning of the execute mode, turn off
for the duration of the install, and then restore at the end
of execute mode. Exception: If the screen saver or the system
agent were off at the beginning of the install, and then
are turned on by the user during the install, we won't turn
them back off.
98-10-22 bench Bug 7376: when rolling back and restoring a file when the new
file was in use, we would replace the new file, but leave a
reboot operation to delete the file. for Office 2000, this
occurs when system files are replaced and an error occurs after
the mid-install reboot. rollback occurs and upon the next reboot
the system files are missing.
the fix was to avoid doing a Remove then Replace when copying
a backup file over a new file during rollback. we now just
do the replace.
98-10-22 mattwe Bug 6121: copymsi/instmsi, during an administrator
user's installation, now waits for the service
in the temp directory to stop before exiting.
This allows IExpress to fully clean up.
-----------------------------
Release 0.10.4621
-----------------------------
98-10-20 malcolmh Fixed bug 7309: TransformSecure fails when passed as
property; 2 asserts Access Violation and locks the
MsiServer
98-10-20 bench bug 7209: fix a problem causing file to not be
updated when patching an admin image.
98-10-20 mattwe Bug 7088: backed out initial fix for 7088, and
implemented by adding new script type:
istAdminInstall. Same behavior as previous fix.
98-10-20 bench bug 7362: removed all unnecessary "uncompressed"
bits from File tables of released packages.
98-10-20 bench bug 7310: admin packages were not being restored by
rollback after a failed admin patch. they are now.
98-10-19 johndelo Bug 7277: Transform streams not marked as system.
Database table stream are flagged as system to keep their
namespace distinct from user streams such as cabinets and
binary streams. Transform table streams have been changed
to match the names of the corresponding database table streams.
Temporary compatibility is present to recognize streams
generated with older builds of MSI. However, transforms
generated with this build will not be useable on older builds,
unless either the databases had uncompressed stream names,
or the _MSI_TEST environment variable has the "z" option set.
98-10-19 cgouge Bug 6444, part 2. New ICE39, checks Summary
Information Stream for various 'bad things', such as bad
GUID, bad Template format, etc. This ICE is *NOT*
available through the web page, because ICEMAN does not
support Summary Info validation (coming in the future.)
You must have the new Evalcom (see below) for this ICE
to work via MsiVal2, etc. It will fail gracefully if
you do not.
98-10-19 mattwe Fixed bug 7088: Added a field to ixoHeader to indicate
the mode in which it was generated. (see msiauto.hlp)
We no longer register folders that are created during
an admin install. When we do register folders, a
failure will now be logged and ignored.
98-10-19 cgouge Bug 6444, part 1. In order to support SummaryInfo
validation, the validation startup routines in the
EvalCom COM server have been changed. This COM server is
used by MsiVal2 to do validaiton. The new system
takes advantage of the changes to MsiDatabaseMerge (Bug
7124) to generate better error messages in certain
failure cases. The new system creates the MSI engine
from the CUB file instead of from the merged database.
This change means that CUB files must now have an
empty property table in them to avoid asserts in the
DEBUG versions of Darwin. If you are using an older CUB
file with DEBUG Darwin, you will get asserts in
engine.cpp. Evalcom is also OS-independent now, the same
bits will work on ANSI and UNICODE.
98-10-16 cgouge Bug 7139. Validation: Updated internal validation
for Component.KeyPath entries that are keys into the
ODBCDataSource table.
98-10-16 cgouge Fixed bugs 7137, 7140, 7141. Updated _Vaidation
entries for TextStyle.StyleBits, Shortcut.ShowCmd,
ServiceInstall.StartType.
98-10-16 mattwe Fixed bug #7282: On rollback, registry keys will
be explicitly created by the RegCreateKey operation
unless they had an AddValue operation. This allows
the security settings to be reapplied.
-----------------------------
Release 0.10.4616
-----------------------------
98-10-15 cgouge Validation: Bugs 6724 and 7129, part deux. ICE33
updated to no longer throw warnings when the registry
table is used to generate registry entries for
Insertable, NotInsertable.
98-10-15 tracyf Fixed bug 7010 - on Win9x, if the CRC check fails
(for files in the File table that have the HasChecksum
bit set), we now ignore this check if the file is in
use. This is because a Win9x bug prevents the
checksum from being calculated properly if the file is
loaded in memory.
98-10-15 malcolmh Fixed bug 7269: Files-in-use dialog sometimes
missing description.
98-10-15 malcolmh Fixed bug 7271. Source registration now works when
DISABLEMEDIA is set.
98-10-15 malcolmh Fixed bug 7279. Fixed Session.FeatureInfo automation
and typelib entry.
-----------------------------
Release 0.10.4614
-----------------------------
98-10-13 chetanp bugs 6724 and 7129 - removed the Class.RemoteName,
Class.Insertable and ProgId.Insertable columns. The
Class.RemoteName column was never used. The
Class.Insertable and ProgId.Insertable columns were used to
advertise the OLE Insertable keys. We now no longer write
these keys from these advertise tables. Instead, it
is expected that the author authors this information
from the Registry table. This has warranted a schema
change and we are now at schema 29. However we are
still compatible with the older databases (upto and
including 26) and the behaviour is unchanged for the
older databases (ie we use the Insertable columns at
advt.).
98-10-13 chetanp bug 7263 - ensure product code is all upper case at
the beginning of the installation.
98-10-13 mattwe Fixed bug 7174: We now disable the screen saver during
the execute section, the re-enable it. (Performance.)
98-10-13 mattwe Fixed bug 7427: When restoring registry keys during
rollback with non-default security, we first create the
key with no security, then elevate and apply the security.
98-10-12 mattwe Fixed bug 7227. Releasing global data so service
98-10-13 malcolmh Fixed bug 7232. Fix custom action IDL to correctly
identify "out" string parameter sizes.
98-10-13 chetanp bug 7207 - feature's transition between the
advertise and the absent states should not affect the
component's state.
can be stopped. (introduced by bug 6922)
98-10-12 malcolmh Fixed bug 7235. We now correctly restore folder
security descriptors on rollback.
-----------------------------
Release 0.10.4609
-----------------------------
98-10-08 bench bug 7193: fixed logging when triggered by the policy
value. previously we would keep overwriting a
single log in each install invoked by a process, so that
only the last install from the process was logged. we
now generate a new log for each install. in the
course of fixing this bug, new information was added to
the beginning of each verbose log: the date and time,
the type of Darwin build (ship/debug, ansi/unicode),
the Darwin build #, and the calling process.
98-10-08 chetanp bug 6961 - we now skip the conversion of the file
path to a short file path for InProcServers from the
Class table (so in effect only LocalServers are forced
to Short Paths).
98-10-08 chetanp bug 7201 - fix registration of features containing
components w/o component ids.
98-10-08 chetanp fixed bug 7020. We now allow > 200 components per
feature.
98-10-08 cgouge Bug 7124. MisDatabaseMerge now returns
ERROR_DATATYPE_MISMATCH when one or more tables in the database
have schema conflicts. It now does the schema checks
before merging any of the tables, so you won't get half
a merge anymore.
98-10-08 mattwe Bugs 6981, 7118: During rollback we now elevate and set
SeRestorePrivilege for writing security descriptors.
98-10-09 johndelo Bug 7186: Failure to open streams on Win98J with user
language set to English. Problem is that JPN maps DBCS
characters into the private use area of Unicode that we
were using for stream names. That alone is not so bad,
but when the user Language is set to English, then the
stream name processing gets messed up as the DBCS chars
are individually uppercased, causing failures. Simple fix
was to use a Unicode block unprocessed by any codepage.
However, databases produced with builds 4522 and later will
not be readable with this build. Either export the tables with
the old MSI version and reimport them with the current build,
or use the tool 4524Fix.exe, checked into Darwin project, and
also available on \\JDELO3\public\tools. MsiInfo.exe and
DBView.exe have been updated for the new stream name offset.
Build 4524 has been rebuilt with this fix -> now 4524.6
Transforms are affected as well, and the tool will update them.
-----------------------------
Release 0.10.4607
-----------------------------
98-10-06 cgouge Bug 6931: Validation aspect of Truetype fonts always
being reinstalled. Rows in the file table are now
allowed to have a null language value iff a row in the
font table references the file.
98-10-06 mattwe Bug 7001: GetRelativeSourcePath now accepts / or \
at the end of a path... Adds support for URLs.
98-10-06 cgouge Bug 7110: Internal field validation. Cabinet data
type now accepts only SFN instead of short|long syntax.
98-10-06 mattwe Bug 6661: Checked in new versions of wextract.exe,
iexpress.exe, and makecab.exe to fix DBCS bugs in
their extraction for instmsi/copymsi.
98-10-05 cgouge Bug 7126: Validation: ICE20 no longer checks for the
DiskCost dialog.
98-10-05 cgouge Bug 7117: Validation: ICE19 changed so that
non-advertised shortcuts are exempt from the
Component-Id/KeyPath checks.
98-10-05 cgouge Bug 7098. Validation: ICE45 checks unused bits in a
bunch of tables' bitfields to make sure they are 0.
(Related to Bug 7078) TestDb was updated to pass this
new ICE, since we had a few random bits set in the
BBControl table.
98-10-02 malcolmh Fixed bug 6943: We now use the cached database
during database copy, *except* for nested installs which
continue to copy the source database.
98-10-02 malcolmh fixed bug 6922. we now register ODBC data source
component key paths correctly.
98-10-02 bench bug 7096: we now disable the Cancel button during
cleanup of rollback files.
98-10-02 cgouge Bug 6606. MsiInfo now reports an error if you have
chars > 0x7F in your database but don't have a
codepage set, and will also report an error if you have any
DBCS strings that are corrupted because you forced
the codepage after the data was already in the
database.
98-10-01 bench bug 7015: a change to admin installs when certain
files in the File table are marked with the
"compressed" attribute bit. any cabinets containing files files
are copied to the admin install, so that post-admin
installs will correctly find the compressed files
(since they are marked compressed, they are assumed to
be compressed regardless of the global "source type").
also, embedded cabinets containing these types of
files are not dropped from the package when it is
copied to the admin image.
98-10-01 malcolmh Fixed bug 7089: Darwin occasionally generates script
with bad packagename value
98-10-01 cgouge Bug 6888. Field validation for filenames updated to
treat '*' charaters as 0 or more chars instead of 2
or more.
98-10-01 bench bug 6960: when rebooting on Win9X, we would leave
behind the .msi file in the %temp% folder. this was
caused by attempting to delete the temp msi after
calling ExitWindowsEx. on Win9X, there is not enough time
to do this before the system shuts down. the fix
was to reboot after deleting the temp msi.
98-10-01 cgouge Fixed Bug 7041. msidb fixed to work with the new
stream and storage APIs. It now correctly handles both
compressed and uncompressed stream names. The new
system allows streams and storages to have the same
names (because the stream name is actually compressed),
so the -k and -x actions had to be split. -k and -x
work with streams, wheras -j and -w remove and extract
storages.
98-10-01 malcolmh Fixed bug 7059: Custom action server needs to
initialize the allocator
-----------------------------
Release 0.10.4530
-----------------------------
98-09-28 cgouge Bug 7040. ICE44. Checks that ConttrolEvents
involving dialogs (NewDialog, SpawnDialog, SpawnWaitDialog),
have arguments that are valid foreign keys into the
Dialog table.
98-09-28 cgouge Bug 6846, validation. ICE43 checks that
non-advertisable shortcuts are in components that use HKCU reg
entries as keypaths. This prevents the case where
multiple users on a machine run the install and only the
first user gets the shortcuts.
98-09-28 chetanp undid bug 4265 fix. We now (again) suport database
versions 26 upwards.
98-09-28 malcolmh Fixed bug 7051: MsiGetActiveDatabase returns wrong
error.
98-09-28 malcolmh Fixed bug 7037. We now set the Privileged property
correctly on Win9X and when the user is an Admin.
98-09-28 malcolmh Fixed bug 6943. We now used the cached database
during RegisterProduct.
98-09-28 malcolmh Fixed bug 6553. We now elevate self-reg correctly
when the AlwaysInstallElevated policy is set.
98-09-25 cgouge Bug 7022, Validation. Removed restriction that
InstallFiles must come before RemoveShortcuts.
98-09-25 malcolmh Fixed bug 6962. We wouldn't reboot non-managed apps
when the UI level was Basic or None. We now do.
98-09-25 bench Bug 6987: the ARPNOMODIFY property, when set, will
cause the UninstallString written to the Uninstall key
(and used by downlevel ARPs) to contain the command
line to uninstall, rather than configure. This can
be used by packages without UI to uninstall through
the Add/Remove Control Panel. Previously, the
Uninstall string was always to configure, which was useless
for packages without UI.
NOTE: this new behaviour is only applicable on NT4 and Win9X,
as the NT5 ARP doesn't use the Uninstall string.
NOTE2: as always, the ARPNOREMOVE property causes no
UninstallString to be written at all, and the package will
not show up in the ARP.
98-09-24 cgouge Bug 6010. Validation. ICE29 modified to accept new
62 character stream name limitation from 6539.
98-09-24 chetanp bug 7014 - decoupled darwin cnfg. information
registry location from the HKEY passed in to
MsiAdvertiseScript. We now always autonomously decide on where the
darwin cnfg. info should go. Also we now classify the
PublishComponent stuff as SCRIPTFLAGS_CNFGINFO
rather than SCRIPTFLAGS_APPINFO.
98-09-24 mattwe Fixed bug 7009: installing files with lock permissions
works again.
-----------------------------
Release 0.10.4522
-----------------------------
98-09-22 johndelo Localized resources updated in MSI.DLL from \\RobR\msires
New languages: French, Dutch, Finnish, and Hungarian.
Updated all others: DEU,ARA,CHS,CHT,JPN,KOR,THA,GRK.
98-09-22 johndelo Bug 6539 - Broken OLE32.DLL supplied with IE 4.01 SP1, Win98
The bad DLL version is now detected at load time, and a
workaround is enabled that corrects the faulty code.
Compressed stream naming is now re-enabled, and the
_MSI_TEST 'Z' now disables the name compression (temporarily).
For a short period of time, the uncompressed/unqualified
stream names can be forced with open flags. For complete
details, see the notes below from 98-08-18.
NOTE: You cannot directly add streams to an MSI file.
You must use the _Streams pseudo-table and the APIs.
98-09-21 chetanp fixed bug 6804 - we now remember the flags passed in
to MsiAdvertiseScript so that we know if shortcuts
and OLE and Qualified Components info had been created
for the app. If not create we create the same during
the first run of the app.
98-09-21 chetanp fixed bug 6435 - in order to ensure that darwin
cnfg. data for user assigned apps is secure, we have
shifted the location of the info from HKCU\S\C\Installer
to
HKLM\S\M\W\CurrentVersion\Installer\Managed\<SID>\Installer. Also we replicate all info for assigned
apps in the non-assigned location as well
(HKCU\S\Microsoft\Installer), in order to support roaming (albeit
the app working as unassigned).
98-09-18 mattwe Fixed bug 6340 related to IE3. WININET functions are
in the DLL shipped in IE3, but return call not
implemented. I've done scaled down versions of these,
that are called only when not available in WININET.
98-09-18 mattwe Fixed bug 6935: Internet downloads were unable to
be brought up in maintenance mode to a source list bug.
98-09-17 malcolmh Fixed bug 6918: Handle network error during database
copy.
98-09-17 malcolmh Fixed bugs:
6402 SECURITY: Non-managed app can run elevated
during class activation. We now maintain ACL's on
destination files during Filecopy (unless LockPermissions
specifies an ACL for the file).
6813: Maintenance mode after domain change keeps
looking for source even after you cancel.
98-09-17 bench Bug 6910: we now write UpgradeCode information
during advertisement as well as installation. Two new
opcodes were added to accomplish this:
ixoUpgradeCodePublish and ixoUpgradeCodeUnpublish.
98-09-16 malcolmh Fixed bug 6847: MsiEnumComponentQualifiers misses
per-user data
98-09-16 malcolmh Fixed bug 6895: Text in basic UI changes to bold. We
now set the message context language to the
package's base language very early in the install.
98-09-16 bench Bug 6624: fixed a crash when changing a key name in
a record containing a stream. When changing the key
value to a large string, the stream name computed may
become larger than 32 characters, which is not
supported by OLE. we were not handling this error
gracefully.
98-09-16 mattwe Fixed bug 6907: cleared a dirty record that
was being re-used by RegAddvalue.
98-09-16 mattwe Fixed bug 6872: You can now stop the service
after an uninstall.
DEVELOPER NOTE: If you allocate a global
object that holds on to a services object,
it must be released by the time the last
FreeServices() call is made for that install.
-----------------------------
Release 0.10.4516
-----------------------------
98-09-15 cgouge Fixed Bug 6613. Validation. Fixed ICE38 to handle
non-root flagged root profile directories. Also fixed
AppDataFolder check. No longer goes into an infinite
loop due to the new ICE33.
98-09-15 cgouge Bug 6152. Validation: New ICE33. Checks the registry
table and finds registry entries that collide with
(or should be generated through) the Class, Extension,
ProgID, MIME, etc. tables. The information on what
is a "bad" registry entry is encoded in the
_BadRegData table which is provided with the CUB file.
98-09-15 bench Bug 6852: we now catch duplicate window titles in
the basic UI FilesInUse dialog. the main purpose of
this is to prevent the same process from being listed
multiple times.
98-09-15 tracyf Bug 6834: the SelectionTree menu choices have been
re-ordered slightly, separators have been added, and the
drop-down menu itself is now drawn with a nice gray
background.
98-09-14 bench Bug 6841: improved Files-In-Use logging, and fixed
bug that prevented FIU logging on NT (when the server
was registered)
98-09-14 malcolmh Fixed bug 6884: Darwin fails with C0000005
ACCESS_VIOLATION when passed long bogus MST path
98-09-14 cgouge Validation: Bug 6729. Added ICE42 which checks the
Class table for EXE files listed as InProc components.
Also checks non-LocalServer classes for
DefInProcHandler and Argument values.
98-09-14 malcolmh Fixed bugs:
6813 Maintenance mode after domain change keeps
looking for source even after you cancel
6854 "Error 2610. Launch condition failed:
[ProductNameNonQualified] setup needs to replace some Windows
system components" when starting drag and drop install
with non-admin user privilege
98-09-14 bench Bug 6855: fixed assert when installing over existing
ODBC info when rollback not enabled.
98-09-14 mattwe Fixed bug 6845: Service errors (start/stop/delete/
install) are now non-fatal during rollback.
The default response for no-UI is now to ignore them.
-----------------------------
Release 0.10.4511.1
-----------------------------
98-09-11 malcolmh Fixed bugs:
Fixed DLL custom actions so that they aren't always
async:
6106 Default CD key invalid on NT5 O9 install
6865 Error 2707: Target Paths Not Created for opcd0
in Directory Table
6873 validation: can't specify
specific ICE's to run on command line for msival2
Allowed column 32 to be created if it's temporary:
6866 Transforms: Creating the 32nd MarkingColumns for Transforms
and merges of 31col tables triggers assert
Temporarily hacked around an instance-count problem. Real fix
will be done at some point:
6872 Msiexec /unreg failed after install/remove testdb.
Added descriptsions for IMsiCustomAction and IMsiRemoteAPI
6860 AF in module.h running regmsi
-----------------------------
Release 0.10.4511
-----------------------------
98-09-10 mattwe Progress on bug 6363: We've added code for instmsi/
copymsi to use the appropriate transform for
languages. All that's needed is to add the transforms
as they come from the localizers.
98-09-10 cgouge Fixed bug 3729, Validation: added to ICE40 check for
RemoveIniFile.Value null when action is 4 (Remove
Tag)
98-09-10 malcolmh Fixed bug 6833: Elevated state bit not persisted for
use on uninstall/maintenance mode
98-09-10 cgouge Validation: Bug 6590, New ICE41. Validates that
Class and Extension table reference components that are
associated with the referenced Features.
98-09-10 malcolmh Fixed bug 6362: darwin hangs during execution with
logging enabled
98-09-10 malcolmh Fixed bug 6791: Assertion failed in
database.cpp:Line 3761 when running Tranform tests.. *We now restrict
tables to 31 columns*
98-09-10 chetanp bug 6801 - fix MsiViewModify with Refresh failure on
stream objects
98-09-10 mattwe Fixed bugs 6678, 6716: We've trashed the custom
action in instmsi/copymsi that registered verbs.
We're going to have to use transforms for the rest
of the strings, so we might as well transform
these as well. The bugs deal with the format
and content of the verbs, which are now standardized.
98-09-10 malcolmh Fixed bug 6495: AD: Potential security hole in
Darwin's custom action handling. We now run DLL custom
actions for non-managed apps in a separate process.
98-09-10 bench Bug 6340: fixed URL download installs on platforms
where cached files have different names than the
original files from the http: or ftp: server. We were not
using the new name in the cache which caused "source
file not found" errors.
98-09-10 malcolmh Fixed bug 6674: Transform: GenerateTransform asserts
on db with 32-Column tables. We error if you have >
31 columns in your table.
98-09-09 bench bug 6628: the typelib in msi.dll now references the
new html help file msi.chm instead of the old
msi.hlp.
98-09-09 davidmck Changed ODBC errors from debug to ship. Removing a
driver is now ignorable and can be retried.
98-09-09 mattwe Fixed bug 5469: Actually, I'm just the last
one in the chain. Ship errors should now
be finalized.
98-09-09 mattwe Fixed bug 5243: EditFlags for NT5 should be
binary, instead of DWORD for instmsi/copymsi
98-09-09 mattwe Fixed bug 5402: Instmsi/Copymsi will not install
on NT versions less than 4.0
98-09-09 mattwe Fixed bug 6630: Services feature will no longer
be available in TestDb without being a Privileged
install. (You must be either an admin, or have
all apps elevated, or have testdb assigned)
-----------------------------
Release 0.10.4509
-----------------------------
98-09-08 cgouge Fixed bug 6765, added internal validation for the
[!filekey] sequence.
98-09-08 mattwe Bug 6722: two problems fixed. AppId table for
RunAsInteractiveUser and ActivateAtStorage should
work as described.
98-09-08 bench Bug 6786: when a user runs an install while another
install (run by a different user) is suspended, the
logged on user recieves a warning and is allowed to
continue, but the suspended install is not rolled back.
Previously, we would attempt to rollback the
suspended install, but this could lead to rolling back
items in the current users profile erroneously. A better
fix for this problem will be attempted in version
1.1.
98-09-08 bench Bug 6090: when a user runs an install with the
ForceReboot action and reboots, the following occurs when
a second user logs in after the reboot. If the
original install was per-machine, the second user is
allowed to continue the install. If the install was
per-user, the user is issued a warning and the install is
terminated (but the information about the suspended
install remains in the registry).
98-09-08 cgouge Validation: Bugs 6648, 6705. New ICE 40, performs
miscellaneous little checks that don't really belong
anywhere else. Right now this is just looking for a
missing error table and setting the REINSTALLMODE
property. Both are just warnings.
98-09-04 cgouge Bug 6790, Validation: ICE27 updated to handle new
AllocateRegistrySpace action.
98-09-04 davidmck Fixed bug 6799. Another issue with script
optimizations. ODBC actions zeroed out the opcode.
98-09-03 davidmck Fixed bug 6682. We still had some issues with
multiple threads adding strings to the string pool of the
database. This should clear them all up.
98-09-03 chetanp bug 5429 - added support for [!filekey] syntax
(Short File Path) for IniFile.Value column as well.
98-09-03 chetanp bug 6692 - honour
SCRIPTFLAGS_VALIDATE_TRANSFORMS_LIST in MsiAdvertiseScript for unadvt. as well.
98-09-03 chetanp bug 6567 - remove AppId info advt.
98-09-03 bench Fixed bug 6694: crash when attempting to install
from ftp: server.
98-09-03 tracyf In response to bug 4755, the 'f' logmode flag has
been removed. Logging of file-in-use information is
now included as part of the 'i' flag.
-----------------------------
Release 0.10.4503
-----------------------------
98-09-03 johndelo bug 5567, and other language/resource basic UI bugs
We now use the database language and codepage to
obtain and display resource strings. Because we do
not set the language soon enough, if the language of
the user does not match the system, there is currently
a delay until the correct language appears (postponed bug).
All non-handler dialogs and message boxes use common
code that is language and charset aware, but there are
some cosmetic issues that will be cleaned up shortly.
All dialogs now use the common caption, which is initialized
with "Windows installer", but gets changed later.
The caption resource strings are gone, Yes and No added.
98-09-03 chetanp bug 6043 - added AVAILABLEFREEREG property to allow
author to specify the free registry space in KB
required by the app. This property is acted upon by the
new AllocateRegistrySpace action.
98-09-03 chetanp bug 6463 - added new DISABLEADVTSHORTCUTS property
to disable the advertisng/ creation of Darwin
shortcuts even on machines that support darwinised shortcuts.
Regular shortcuts are created inplace.
98-09-02 chetanp bug 6671 - moved WM_FONTCHANGE message posting to
execute to be once per install.
98-09-02 chetanp fixed bug 5429 - added support to write short file
names for long file name paths via the Registry.Value
column. The syntax for this is [!FileKey]. This
evaluates to corr. Short File Names only when used in the
Registry.Value column. When used in other places this
syntax is treated the same as the regular
[#FileKey].
98-09-02 cgouge Validation: Bug 6613, New ICE 38. ICE38 Checks
components that will be installed to the user profile and
verifies that they use a registry key under HKCU as
the KeyPath. It verifies that the key exists, is under
HKCU, and belongs to the referring component.
98-09-02 bench Fixed bug 6336: Applying a patch when the
RemoveOldProducts action occurred before the main actions for
the new product, a "source not found" error occurred.
The fix was to save the old source list before
uninstalling the old product so the source list could be
used for the new product.
98-09-02 bench Fixed bug 6493: when a DLL custom action failed, we
erroneously put up an error message stating an exe
custom action failed. We now only display this error
only for EXE custom actions.
98-09-02 bench Fixed bug 6507: when opening an existing suminfo
stream (either through automation or the
MsiGetSummaryInformation api) for write (passing property count > 0)
and calling persist before writing any properties,
the existing properties are deleted. The fix was to
write out the existing properties when persisting even
if no properties were added or deleted.
98-09-02 mattwe Fixed bug 6722 - AppId.ActivateAtStorage and
AppId.RunAsInteractiveUser were busted such that you
couldn't successfully create a false value.
Now, nulling the column or using 0 as the value
evaluate as false. Any other value is considered
true.
98-09-02 mattwe Fixed bug 6725 - x86 instmsi/copymsi will not install
on ALPHA machines, even when x86 is emulated.
You can still copy the bits by hand, if you *really*
want to, and run /regserver.
98-09-02 davidmck Fixed bug 6605 - Script performance work. We
compress Unicode strings to SBCS strings when possible in
the script. We also compare a record being written to
the script with the previous record being written and
any parameters that are identical are flagged and not
actually written to the script.
This means that all scripts created with this version
of Darwin are incompatible with previous versions.
Previous scripts are still compatible with this
version of darwin.
98-09-01 bench Bug 6446: when installing over in-use files, we now
attempt to rename the file (which works on NT) and
install the new file in the correct spot, rather than
installing the new file to a temp spot and scheduling
a rename. This gives files a better chance to be in
the correct spot immediately, even if the existing
files are in use. The in-use files that are moved out of
the way have names starting with "TBD" (to-be-deleted).
NOTE: this normally happens automatically when rollback
is enabled. This fix made for this bug ensures consistent
behaviour when rollback is not enabled.
98-09-01 mattwe Bug 6678: Removed the "Open" verb from Msi.Patch and
Msi.Package.
98-09-01 mattwe Bug 6594: Platform launch conditions for UNICODE/ANSI
on Win9X and NT are now all handled by msiinst.exe
98-09-01 bench Bug 5132: Darwin now allows non-admin users to replace
or delete files on reboot (on NT). MoveFileEx requires
admin rights to call, since the reg key being written
to is by default read-only for non-admins. To allow
non-admin users to perform this action, Darwin uses
its elevated privileges when calling MoveFileEx, but
first verifies the user actually has permission to do the
rename/delete.
NOTE: prior to this fix, we were always elevating before
calling MoveFileEx without making the proper access checks.
98-09-01 bench Bug 6181: when attempting to remove an acl'ed file, we now
display an error with the appropriate buttons. if we
failed to remove a file because it was in-use, we don't
display an error but rather schedule the file for delete
after reboot.
98-09-01 bench Bug 6596: if the user ignores the failure to overwrite a
file because the file is acl'ed, we used to copy a temp
file anyway and schedule a rename operation. a fix was
made to no longer do this.
98-09-01 mattwe Bug 6645: InstMsi/CopyMsi now correctly determine
the existence of a previous MSI install for non-admin
upgrades of Darwin. This will allow you to upgrade
*from* non-standard install locations (build tree,
et cetera.) We still only install *to* the
SystemFolder.
-----------------------------
Release 0.10.4431
-----------------------------
98-08-28 cgouge Bug 6670: Validation, Registry and RemoveRegistry
Root columns now allow HKEY_CURRENT_USER (value -1)
98-08-28 mattwe Fixed bug 6552: On Win9x, we will create an autoexec
file if one doesn't already exist.
98-08-28 cgouge Fixed Bug 6646, all samples changed to use correct
SourceDir property.
98-08-28 chetanp fixed bugs - 6672, 6673 - incorrect fonts sql
queries.
98-08-27 davidmck Fixed bug 6562. We now stop any custom action thread
from closing a handle that it did not open. In
addition, any non-custom action thread can close any
handle it wishes.
There is still a hole where a custom actoin can start
another thread and close any handle it likes. If
custom actions want to be evil, there are lots of things
they can do besides this.
Note that we've changed this to be an error return of
ERROR_INVALID_THREAD_ID for custom actions, so
before they would just assert, now the handle will not be
closed.
98-08-27 chetanp bug 6573 - we now install shfolder.dll with darwin
on Win9x and assume it is always present. Hence we
install to the AppData folder all the cached information
(icons and transforms) and fail if we cannot do so.
Previously we had code to fall back to using the
<windows>\Installer folder.
98-08-27 chetanp bug 5514 - added support to munge through DD
shortcuts on Win98/Win9s + IE4 to prevent removal of
upgraded shortcuts (support already existed for WinNT5)
98-08-27 cgouge Fixed 6656, Validation, perf issue with ICE30.
98-08-27 mattwe Fixed bugs:
6573: added shfolder.dll to instmsi/copymsi for ANSI
x86 Win9X.
6497: Manually updated instmsi/copymsi file languages
for several support files from independent to 1033.
98-08-26 chetanp bug 6598 - fixed assert in ComposeDescriptor
98-08-26 malcolmh Fixed bugs:
5903 Without installing Office9, choosing
"Uninstall" from Install.msi context menu results in
installing IE5
We now prevent /x from working if you haven't at
least advertised the product.
6603 MsiInfo doesn't detect corruption in the
attached db, altho there is an invalid refcount.
6567 Need to stop advertising the contents of the
AppID table altogether
6601 Privileged Property is not being set by the
AlwaysInstallElevated policy.
6620 Transforms: There are difference between the dbs
after applying the transform
Fixed a problem with transforms that had > 64K strings.
98-08-26 bench Fixed bug 6617: added a new property,
DISABLEROLLBACK, which will disable rollback for the current
installation. this behaves identically to the
DisableRollback policy value.
98-08-26 mattwe Added shfolder.dll to darwin\tools\bin\x86, for
installation with instmsi/copymsi on Win9x platforms.
98-08-26 tracyf Fixed bug 6580 - for files with the ValidCheckSum
bit set in the File table, we now repair the existing
file if either the stored and calculated checksums
don't match (as before), OR if the file has no
detectable checksum (i.e. the file might be so corrupted we
can't read the file header).
98-08-25 cgouge Validation: New ICE30. (Bug 6014) Ice30 checks that
two different components don't install the same
filename into the same directory. It will check both LFN
and SFN cases, and will also catch equivalent
directories under keys in the Directory table. Generates an
error if any files collide, unless both components
are conditionalized, in which case it generates a
warning.
98-08-25 cgouge Validation: ICE35 update (checking compressed
components for RFS), only generates one error per component
per media table entry. This avoids an overwhelming
number of error messages.
98-08-25 mattwe Due to non-admin user installs being rather picky about
security permissions, I've generalized the LockPermissions
data in TestDb to primarily values that allow the current
user to access them.
-----------------------------
Release 0.10.4424
-----------------------------
98-08-21 cgouge Validation: Bug 6474, New ICE 36 checks that all
icons are used in the Class, ProgID, or Shortcut table.
Warns if any extraneous icons are found.
98-08-21 cgouge Validation: Bug 6358, new ICE 35, checks that
components containing compressed files cannot be set to
RFS.
98-08-21 chetanp fix 5681 - On Win9x - If Profiles are on and start
menu is per-user - darwin goop to HKCU, transforms and
icons to AppData. If Profiles are on and startmenu
is shared - darwin goop to HKLM, transforms and icons
to Windows folder. Profiles are not on (start menu is
shared) - darwin goop to HKCU, transforms and icons
to AppData.
98-08-21 chetanp bug 6043 - we now attempt to use shfolder.dll to
create the App Data (and all other shell) folders, if
absent.
98-08-21 malcolmh Fixed (again) bug 6353: Rolling back an install can
remove ACLs from a file
98-08-21 malcolmh Fixed bug 5979: Darwin should fail
msiadvertisescript calls when transforms conflict.
We now have a script new flag:
SCRIPTFLAGS_VALIDATE_TRANSFORMS_LIST. If this flag is specified, and
we're not removing, then we require that the transform
list in the script's ixoProductInfo field match exactly
the transform list registered for the product. If
the product isn't registered then the script may
contain any transform list. We'll return
ERROR_INSTALL_TRANSFORM_FAILURE if the flag is on and the lists don't
match.
98-08-20 davidmck Fixed Bugs 6512 and 6478. I changed how we handle
connecting to the service. Previously we would assert
if the proxy msi.dll that was registered did not match
the msi.dll we had loaded.
Now we refuse to connect to the service. Also, on NT,
if we need to access the installer key, we check
when trying to create the config manager and fail if we
need the key and cannot access it.
This will prevent us from hitting an error later on
when previously we would create a local config
manager, but it would be unable to run an install.
98-08-20 davidmck Added MsiGetFileVersion API (Bug 6234) for tools to
get darwin's idea of a file's version and language
information.
98-08-20 malcolmh Fixed bug 6553: Elevated selfreg doesn't work for
run from net components
98-08-20 mattwe Fixed bug #4768: The error message was completely
accurate. We couldn't create a security descriptor
for a user we couldn't find. I've changed TestDB's
authoring such that its LockPermissions should work
in any domain.
98-08-20 chetanp bug 4893 - We now write optimized darwin descriptors
in the event we have a product with only one feature
or if we have a feature with only one component.
98-08-20 bench Fixed bug 6557. When patching a network image, we
now set TARGETDIR to the network image path to ensure
the existing admin image will be patched rather than
requiring the user to supply the appropriate
TARGETDIR path or re-enter the path in the admin dialog.
98-08-20 malcolmh Fixed bugs:
6372 Need to add recursive select options to the
selection control
6374 Need to change the selection manager combo boxes
to buttons
6376 Need to add an icon state to the selman that
indicates subfeatures are of mixed state
There are 3 new UIText table entries:
MenuAllCD Entire feature will be installed to run
from CD
MenuAllLocal Entire feature will be installed on
local hard drive
MenuAllNetwork Entire feature will be installed to
run from network
The selection tree now supports "Make me and my
children local" and "Make me and my children source".
The selection tree now greys the feature state icon
unless all children of the feature are in the shown
state.
98-08-20 chetanp bug 6549 - changed component installation behaviour
- We used to prevent an older component (lesser
keyfile) from overwriting an already DARWIN installed
newer component (implying, if the file exists without
having being installed by darwin - we go ahead and
install the component irrespective of the version - since
we did not trust the previous install to be complete/
exact). Now we dont care how the newer file got
there, we prevent the install, irrespective of whther we
(Darwin) installed or not.
98-08-20 chetanp fixed bug 6454 - We now allow for setting a property
to a registry/ Ini value as is via the RegLocator/
IniLocator table w/o the interpretation as a file or
folder and without verification that it exists. We
allow for this by using the value 2 in the
RegLocator.Type/ IniLocator.Type column. Of course, if someone
uses this to set a Directory property, and it is
invalid, we would fail.
98-08-20 malcolmh Fixed bug 6477: Still writing AppId key when
advertising on downlevel system
98-08-20 malcolmh Fixed bug 6504: Uninstall Patch and Security: /x
uninstalls appears to elevate where /i Remove=All
doesn't
This was caused by our incorrectly determining
whether the product is "managed". In the ARP case we know
that the product is not managed because we're handed
the product code up front. In the "/x" case we don't
know the product code up front so we think the app
is in first-run. Because the user is an admin and it's
first-run, we elevate. I've pushed back our "Is this
app managed" check into Engine::Iniitialize to solve
this problem. I added a new iei return from
Engine::Initiialize called ieiPackageRejected. This maps to
ERROR_ACCESS_DENIED, the same value that we used to
return when a package was rejected for security
reasons.
-----------------------------
Release 0.10.4420
-----------------------------
98-08-19 johndelo Bug 6539 - Broken OLE32.DLL supplied with IE 4.01 SP1
Win 9X only, causes failure with compressed stream names.
New OLE32.DLL available, currently in \\jdelo3\public.
To avoid problems on Win9X, the compressed stream naming
has been disabled, by can be reenabled for testing by
setting the environment variable _MSI_TEST to a string
including the letter Z. The use of the APIs to manage
streams and storages in a database is still operational.
-----------------------------
Release 0.10.4419
-----------------------------
98-08-18 johndelo Bug 4130, 6462 - Changes to stream names in MSI files.
Changes to MSI persistent stream handling: There have
been a number of problems with stream name limitations
in the current implementation of OLE docfiles:
1. Stream names are limited to 31 characters. This is
unacceptable for stream names that must be uniquely
qualified with a GUID.
2. Stream names are case-insensitive on open. This
could cause unexpected problems in merging, as the
generated stream names internally in MSI are
case-sensitive.
3. Certain stream name lengths cause erroneous behavior
and crashes inside OLE32.DLL.
4. Storage names, private streams managed solely by the
database, and user-streams such as custom actions,
icons, bitmaps, and cabinets all share the same
namespace, with the potential for disastrous
consequences.
In addition, there has been no way for tools to add
streams and substorages to the database being
processed, as there is no access to the storage. They
have been forced to save and close the database, and
then use direct OLE calls. This requires in some cases
knowledge of specific information, such as storage
CLSIDs. Forcing such direct access makes it impossible
to upgrade our persistent file format in the future, a
very serious constraint.
---Solution---
1. Stream names are compressed internally, and can use
up 62 characters if the characters all belong to the
identifier set (letters, digits, period, underscore),
which it true for the stream names generated from
tables having stream columns. Non-identifier characters
are acceptable, but will not participate in the 2 to 1
compression. Stream names beginning with the control
character '\005', such as "\005SummaryInformation" are
never compressed, as they must be publicly accessible
from property browsers.
2. Stream names are case-sensitive on open, due to the
compression scheme.
3. External stream data, private database streams, and
storages have separate namespaces.
4. To support external addition of streams and
substorages, two new pseudo-tables have been created:
_Streams and _Storages. These are not persistent
tables, but are simply temporary tables created on
demand and filled using our stream and storage
enumerators when one of those tables is loaded. They
each have two columns, Name which is the string name of
the stream or substorage, and Data which is a stream
holding the data. Standard queries can thus list the
non-private streams and substorages, and new streams
and substorages can be added from files using the
existing API MsiRecordSetStream. Streams and
substorages can be deleted by setting the stream data
to NULL. Stream data can be extracted with the API
MsiRecordReadStream. Substorage data cannot be
extracted with this API currently, but since the names
are not compressed, OLE APIs can open the substorages.
5. Updated views of _Streams and _Storages tables will
be written when the view is closed or on
MsiDatabaseCommit. If the data could not be written
when the view is closed, it will be retried on Commit
(same as with other database tables), and an error will
be generated at that time if unsuccessful.
6. Databases generated with old stream names will be
processed as before, and will thus have the limitation
mentioned above. They are distinguished by a different
storage CLSID.
7. There will be a compatibility mode for some period
of time, which will use the old stream names and the
old storage CLSID, to allow the generation of databases
that can be used by older versions of MSI. This mode
is forced by adding the bit flag 16 to the open mode
for database or storages. Internally that is defined as
idoRawStreamNames or ismRawStreamNames.
8. Transforms, a variant of the database format, have
the same stream limitations, and will also use the
compressed stream naming if the input database uses
compressed streams.
Some options have been added to MsiOpenDatabase, but
are not currently in msiquery.h
MSIDBOPEN_RAWSTREAMNAMES = 16 // old-format names
MSIDBOPEN_PATCHFILE = 32 // patch file as DB
The latter allows patch files to be generated using
the MSI API functions, without having to know the
internal storage details.
MsiDb.EXE temporarily has an option, -o, to create an
old-format database, rather then -c for a new-format
database.
Old-format databases, transforms, and patch files can
be read by the new MSI. However, this backward
compatibility will be removed before ship.
A sample VBScript which generates and views files with
streams and substorages is at
DARWIN\src\tools\script\patchtst.vbs
Yet to do:
MsiTran.EXE needs to be updated to view transform
file internal data. Documentation for newsystem tables,
_Streams and _Storages, and revised documentation for
patch file generation, using the MSI APIs.
98-08-18 johndelo Bug 5036 - move component mapping to machine registry.
Each feature for a product registers the list of
component IDs along with the name of the parent feature.
In the past this information has be in the user
registry, and the size taken can be considerable for a
product with many features and components. For the
following reasons, this feature-component mapping has
been moved to the machine registry along with the
component registration:
1. Much space taken in user profile with component IDs,
even for applications that have never been installed.
2. Advertise scripts bloated with needless component IDs.
3. Logon time adversely affected by excessive
registration.
4. Performance improvement by avoiding opening of user
registry keys during activation of installed features.
5. Need to bring all the component logic together in
preparation for eventual move of registration out
of HKLM, for improved performance and resource usage.
Products that are advertised should present no problem,
as we temporarily handle the old registration (this will
eventually be pulled for increased performance). And old
packages and old advertise scripts will still work fine.
But products that are already installed and use MSI to
find or fault in components will need to be reinstalled.
Alternatively, a tool, MsiMig.exe, is in our release that
will migrate the feature-component mapping for all
installed products. It would be nice if the new MSI
would handle both old and new registrations, but this
proved to be much to complicated to implement and test.
In order to allow newly generated advertised scripts
to work with older versions of MSI, the stripping of
the feature-component mapping from the script files is
temporarily disabled to give time for users to upgrade
(the stripping can be forced by setting the environment
variable: _MSI_TEST=J
98-08-18 malcolmh Fixed bug 6536: Uninstall fails to delete a file
that the user can delete with explorer
98-08-18 tracyf Fixed up the BasicUI dialog to better match Windows
guidelines (bug 6498)
98-08-18 mattwe Fixed bug 6475 - Objects whose security is set
via the LockPermissions table now pass their
security onto their children via inheritance.
98-08-18 chetanp fixed bug 5642 - We now have file versioning logic
for TTC fonts. As per attached thread, we take the
first font in the TTC file, and use its version to stand
for the version of the TTC collection in general and
for TTC vs TTC file comparisions.
98-08-18 tracyf Fixed bug 6033. The fix reduces Darwin's stack
requirements considerably (previously, the large buffer
Darwin uses for copying files was being reserved on
the stack, potentially causing problems for host
applications with a small stack size - it is now
allocated on the heap).
98-08-17 malcolmh Fixed bug 6491: MsiEnumProducts failed to skip the
bad ProductCode.
98-08-17 chetanp fixed bug 4265 - removed support for database
versions < 28
98-08-17 mattwe Fixed bug 6255 - changed instmsi/copymsi to detect
Win98 as Version9X < 410, instead of < 411.
Some machines have 411, some have 410.
98-08-17 mattwe Fixed bug 6513 - UpdateEnvironmentStrings on Win9x
wasn't getting passed the location to the autoexec
correctly.
98-08-17 davidmck Fixed bug 4196 - Perf improvements for faulting in
components. See the bug for details on all that
changed in order to regression test appropriately.
98-08-14 t-caroln Fixed bug 5679, VALIDATION. ICE28. Validates for
actions that can't be separated by ForceReboot using
the _SetExclusion and _PlaceHolder tables in the
darice.cub file. These tables are in
%DARWIN%\src\tools\iceman\ices. This ICE can be made to handle any other
actions similar to ForceReboot that can't break up a
set by modifying those tables.
98-08-14 t-caroln Fixed bug 6485, CMsiDatabase::ImportTable not
catching all errors, Changed to handle a failure during
SaveToStorage of the table or the _SummaryInformation
stream. Returns a debug error only (as this failure
shouldn't occur during ship).
98-08-14 t-caroln Fixed bug 5423, VALIDATION. This concerns ICE26
which validates required/prohibited actions in the
Sequence tables. Validation is based off of the _Action
table located in %DARWIN%\src\tools\iceman\ices and I
have included an XL spreadsheet in the same directory
with a table of the values that I used. I based it
off of template.msi and testdb.msi and both pass this
ICE. However, if changes are needed, only change
the _Action table by turning off/on the specific bit.
AdminUISequence is 0x00000001, AdminExecuteSequence
is 0x00000002, AdvtUISequence = 0x00000004,
AdvtExecuteSequence = 0x00000008, InstallUISequence =
0x00000010, InstallExecuteSequence = 0x00000020
98-08-14 davidmck Perf change to CMsiFileStream : We now buffer this
similarly to the buffering of the CMsiStream object.
This gives us a large improvement on writing and
reading the script file.
98-08-13 chetanp fixed bug 4347. RMCCPSearch is a noop if the
CCPSearch table is missing or empty.
98-08-13 mattwe #6430: removed the progid table from instmsi.
All of this is handled via custom actions.
#6125, #6433: Ben's fantastic work has enabled
us to remove the move/rename hacks from instmsi.
The instmsi/copymsi database now pass validation
again.
98-08-13 cgouge Validation: New ICE34. Validates that radiobutton
groups all have defaults so that blind users can use
them effectively. Handles both direct and indirect
contrrols. TestDB FAILED this ICE, so I added 3
properties to the property table to set the defaults in
several groups.
98-08-13 malcolmh Fixed bugs:
6353: Rolling back an install can remove ACLs from
a file
6176: AD: Darwin does not always reset Busy flag on
failure
6323: AD: Call to CoInitializeSecurity in Darwin
service too loose and can be a potential hole
6456: Patching: Security ACLs altered on patched
file.
6457: Patching: Insufficient Privileges to remove
cached .msp on Uninstall
6340: Providing a URL in Network Resource Dialog
fails to find source files.
6442: Need to add the TTCSupport property for those
systems that support TTC's
6445: Patching: Applying bad patch to an advertised
app riggers assert in msiutil.cpp
6447: Patching\Transforms: Memory leak after
transform fails during patch
6422: Get internal error 2260 when expecting network
error
98-08-13 bench Fixed bug 6428: template.msi contained two
ValidateProductID control events, which caused an error when
attempting to use this package without adding the
PIDKEY and ProductID properties. Since these properties
are optional, the control events were removed to
prevent this error. The control events were in turn
added to testdb.msi to keep it working.
98-08-13 t-caroln Fixed bug 6432, authoring error in msival2. Avoid
problems now by using the merge database process in
the makefile. Now merge in template.msi.
-----------------------------
Release 0.10.00.4413
-----------------------------
98-08-12 andrewh bug 6460 - return code from instmsi/copymsi was
always failure.
98-08-12 andrewh bug 6455 - InstMsi requires a reboot on NT4/sp3, the
file table entry for ImageHlp.dll was incorrect,
causing us to try to install it when an equal version
exists.
bug 6459 - Instmsi.exe /q reboots without asking,
the REBOOT=Reallysupress property is set on the
command line for quiet instmsi's.
-----------------------------
Release 0.10.00.4412
-----------------------------
98-08-11 chetanp fixed 4347. We skip the AppSearch, CCPSearch and
the RMCCPSearch actions in InstallExecuteSequence
table if we have run the InstallUIsequence table.
Also we have put the restriction that AppSearch
should use public properties only (to allow us to
skip AppSearch if we have run it on the UI side).
Also we fatal error out of RMCCPSearch, if
previously CCPSearch had not succeeded and
RMCCPSearch does not succeed. Hence we no longer need
the CCPFail UI dialog.
98-08-12 mattwe Bug #6421: file versioning for instmsi was busted
for the main Windows installer files. Fixed with
pointing msifiler to the build dir.
98-08-12 t-caroln Fixed bug 6010, VALIDATION. ICE29, which validates
stream names (ensures that if truncation must occur
to fit within OLE Storage's 31 char limit that the
stream names will still be unique).
98-08-11 chetanp fixed 6034. if we need to increase the registry
quota for an install we now persist the increase across
reboots (before it was effective only for that session
- ie until reboot, hece we ran into problems after a
reboot, since the registry quota was now already
overflown).
98-08-10 mattwe Bug #6416: we were using a string column as an integer,
and finally got caught without a string by that id
to back it up. The DirNonConfigurable in the directory
table is now short, instead of string.
98-08-10 chetanp fixed bugs 6379, 6402 - incorrect assumption that
product is (admin) assigned when called by the local
system (example during InsertObject of a feature of a
non assigned product).
98-08-10 t-caroln Fixed bug 6178, Strings not displaying correctly on
Win9X JPN. We now on Win9X call CreateFont to obtain
a Font Handle and then sending WM_SETFONT messages
to the controls on the dialog.
98-08-10 mattwe Bug #6409: Added msi.dll, msihnd.dll, and msiexec.exe
to the BindImage table for instmsi/copymsi
98-08-10 bench Fixed bugs 5234 and 6396. The "vital" bit in the
File.Attributes column and the "non-vital" bit in the
Patch.Attributes column are honored by patch
application. When the patch "non-vital" bit is set all errors
for that patch are ignored. Otherwise, the file
"vital" bit turns off the "Ignore" button on errors
patching that file.
98-08-10 mattwe Bug #4811: We weren't retrying missing uncompressed
files from a URL server. Involves a change to CopyFile.
98-08-10 t-caroln Fixed bug 6065. Testdb.msi not pass validation.
Testdb had failed ICE18 validation.
98-08-10 t-caroln Fixed bug 6401, defined ErrorDialog property in
Property table for template.msi
98-08-10 t-caroln Fixed bug 6400 dealing with a schema problem in
template.msi. Also fixed all schema differences reported
by the skemadif tool for all of the databases.
98-08-08 t-caroln Added a -f option to msival2 so that you can
suppress info messages. msival2 {database} -Z -f will only
display errors and warnings.
98-08-08 t-caroln Fixed bug 6220 -- VALIDATION. Now ICE27. ICE27
makes the cube file have all of the functionality of
msival.exe. ICE27 validates the organization and the
order of the Sequence tables. Because it handles the
organization, I removed that code from msival.exe.
MsiVal.exe still does data validation and sequence
order validation. The _InstallValidate table is now no
longer needed. Your database does not have to have
the _Sequence table for ICE27 to work (as it is
included in the cube file). A new table was added, the
_Action table. If you add a new standard action, you
need to update this table with the correct information.
The table is located in
%DARWIN%\src\tools\iceman\ices.
98-08-06 malcolmh Fixed bug 6002: Unexpected error 2335 when running
nested install
98-08-06 malcolmh Fixed bug 6299: 'Product Code not registered' is too
geeky
98-08-06 chetanp fixed bug 5629: For the Published Component API
functions, we now enumerate through all the locations
(hkcu\s\c\i, hkcu\s\m\i, hklm\s\c\i) in the order of
precedence for qualifiers for the same component (id).
We take care to skip repetitions during enumeration.
98-08-06 mattwe Bug 6110: Fixed DatabaseCopy operation for URLs
to copy from the currently running database instead
of downloading from the internet again.
This also involved an optimization during opening
the database to run from the copy in the internet
cache in the user's profile, rather than copying
from there to the temp file, and then running there.
98-08-05 malcolmh Fixed bugs 6334, 6335, 6357: Issues with UNICODE
APIs on Win9X
98-08-05 malcolmh Fixed bug 6332: invoking maintenance mode from
package results in caching of new package
98-08-05 bench Fixed bug 5952: if a suspended install exists that
was running a different top-level action than the
current install, we resumed the in-progress install with
no warning to the user. The user is now asked to
rollback the suspended install before continuing.
98-08-05 malcolmh Fixed bug 6361: Selecting alternate path from
SourceList dialog uses prior source in list.
98-08-05 malcolmh Fixed bug 6180: Install should failed when logon
user has not privilege to replace a file.
98-08-05 malcolmh Fixed bug 6356: Non-admin w/ DisableRollback
set can't uninstall
98-08-05 tracyf Fixed bug 6271 - All apps with a file in use are now
listed in the FilesInUseDialog, not just the first.
98-08-05 mattwe Bug #6255: We no longer install ImageHlp.Dll on
Win98 machines.
Bug #6039: We now hide the extraction animation
from IExpress for copymsi/instmsi. This results
in a several second delay in the regular mode,
but a completely quiet run for Office.
98-08-05 tracyf Fixed bug 6194, such that features marked with the
DisallowAbsent attribute will be guaranteed to be
installed if that feature's parent is installed (see the
bug report for specific instances where this was not
always the case).
98-08-04 malcolmh Fixed bug 6331: MsiGetUserInfo string length
arguments not consistent
98-08-04 mattwe Bug #6256: We were registering the non-verb shell info
from the temp directory for copymsi/instmsi. It's now
a custom action on the target bits at the end of the
install
Bug #6262: Cleared up the 9X registration story for
copymsi/instmsi.
We now DllRegisterServer on msi.dll on 9X. /regserver
is wrong, as well as not registering anything at all.
Bug #6260: We now install msierror.msg on all
platforms.
Design note: this is *always* installed, so you may
end up with a newer version with older Darwin. These
should be backwards compatible, however.
98-08-04 bench Fixed bug 5987: applying two patches to an install
left the install broken and unusable.
98-08-04 malcolmh Fixed bug 6301: PATCHING: Patch sourcelist doesn't
contain the PackageName
98-08-04 malcolmh Fixed bug 6303: PATCHING: Resliency doesn't work.
Cached patches are not restored from source
98-08-04 malcolmh Fixed bug 6304: PATCHING: The source that a patch is
invoked from is not added to the patch's sourcelist
98-08-04 bench Fixed bug 6305: added another potential value for
the REBOOT property: REALLYSUPPRESS. (only the first
character is checked so REBOOT=R works as well). When
this value is used, even reboots triggered by the
ForceReboot action are suppressed. These reboots are
not suppressed by REBOOT=S(UPPRESS).
98-08-03 malcolmh Fixed bug 4975: Upgrade: SourceList PackageName
unchanged after reinstall of upgrade msi over patch
98-08-03 malcolmh Fixed bug 6316: PATCHING: When a product "takes
over" for a patch+product the new package code is not
registered
98-08-03 t-caroln Fixed bug 6254. Engine Condition Parser now handles
the possibility of DBCS characters in the string
literal correctly. Also fixed the related area in the
Validation condition parser. The CharPrevCch function
in istring.cpp now respects the DBCS simulation.
98-08-03 t-caroln Fixed bug 5773. ICE17. An update to ICE17 to
validate Picture buttons correctly. The update validates
the Bitmap and Icon controls as referencing entries
in the Binary table (unless the Image Handle attribute
is set). It also validates that any PushButton,
CheckBox, or RadioButtonGroup with the bitmap or icon
attribute set (not both) correctly references the
Binary table, unless the Image Handle attribute is set.
For RadioButtonGroups, it validates each RadioButton
belonging to the property specified by the
RadioButtonGroup.
-----------------------------
Release 0.10.00.4403
-----------------------------
98-07-31 cgouge VALIDATION: Bug 6016, New ICE#31. Added ICE31 to
examine text controls for TextStyle tags and validate
those tags against the Text Style Table. Gives warnings
if the text style is missing. Also gives a warning
if the text style is bogus for some reason (more than
one, not at beginning of text, etc). Added file
\src\tools\iceman\ICEs\msiice5.cpp
98-07-31 t-caroln Fixed bug 3311 - ICE32. Validates that the keys and
foreign keys as listed in the _Validation table are
the same size and type.
98-07-31 andrewh 5397 - Fixed the Network Resource (aka Insert your
CD-ROM) dialog to parent correctly
98-07-31 malcolmh Fixed bug 6250: when transform resiliency is
activated we apply transforms too many times
98-07-31 chetanp bug 5267 - we now allow the Font.Title column to be
null for .TTF files. If the Title is not provided, we
get it out ourselves from the font file. This
eliminates authoring error for this column.
NOTE: The Font.Title column specs have changed from
NotNullable to Nullable.
98-07-31 malcolmh Fixed bug 6050: Too hard to machine-assign by
default.
We now support ALLUSERS=2 which causes us to do a
machine install if possible, otherwise do a user
install.
98-07-31 malcolmh Fixed bug 6190: Fix impersonation from service
context in path object.
98-07-30 bench Fixed bug 6261: a few files were left behind after
rollback of a patch application.
98-07-30 mattwe #6218: changed verb registration in copymsi/instmsi
for admin installs to /A from /N. Was working off an
old doc.
98-07-30 Tracyf Fixed bugs 6233 and 6275 (errors when browsing to a
volume in which the user has no write permissions at
the root of the volume, but can write to subfolders).
98-07-30 Tracyf Fixed bugs 5706, 6269, 6273 (all involving Selection
Tree problems in maintenance mode).
98-07-30 bench Fixed bug 5659: verbose logging is enabled. Verbose
logging is triggered by the 'v' log mode, and
contains much more useful information than the normal log.
Note that verbose logging doesn't log ALL debugmsgs
(stuff written to debug output).
98-07-30 t-caroln Fixed bug 6239 --> ICharNext in UNICODE now behaves
the same as WIN::CharNext. Also added INextChar
which does not do the check on the pointer. When using
INextChar you need to check to make sure you don't run
off of the array.
98-07-30 t-caroln Fixed bug 6247, Auto::ComponentPath returns EMPTY on
error from MsiGetComponentPath.
98-07-30 bench Fixed bug 5943: each patch package (msp file) can
now contain a list of old patches that are removed when
the new patch is applied. This list is stored in
the summary info stream of the msp file in the
REVNUMBER property. This properties format is now the patch
code followed by the list of old patches. No
delimiters seperate the different patch guids.
98-07-30 mattwe Note that the new CopyMsi (as of 4320) no longer installs
the help files. This is by design, and is also suggested
by the doc team.
-----------------------------
Release 0.10.00.4329
-----------------------------
98-07-29 t-caroln Fixed bug 5661, extending Version category
validation to do better checks of the Language column (must
not be a Binary or Long Integer column). If String,
the Category in the validation table must be Language.
98-07-29 bench Added new incremental versioning scheme to build
process. Rebuilds will now bump the last version field
of all built files, and the drop folders will include
the incremental version. For example, a rebuild of
4329 will be versioned 0.28.4329.1 and will be
dropped to a 4329.1 folder.
98-07-29 cgouge Updated M3COM to handle module exclusion tables
appropriately. This required a change to the M3DOCK tool.
-----------------------------
Release 0.10.00.4329
-----------------------------
98-07-28 t-caroln Fixed bug 6230, Validation. Validate_New now works
for foreign key validations of self-joins for a
record to be inserted (failed previously with a new record
specifying a root directory with the
Directory.Directory=Directory.Directory_Parent case).
98-07-28 bench Fixed bug 6075: assert and error when applying a
patch to an admin install.
98-07-28 t-caroln Fixed bug 6231. Msival2 no longer crashes if you
forget to specify the parameter following an option
(like -i or -l)
98-07-27 chetanp bug 6200: fixed performance issue with multiple
files in use detection inefficiency
98-07-27 t-caroln Overhauled the msidlgs.exe tool and re-wrote it. It
now calls all W versions of API on WINNT and all A
versions on Win9X. Added the /L option to print out
all languages in the dll (msidlgs {msi.dll} /L). Now
uses it's own LoadStringEx function. On Win9x the
system must already be in the proper codepage.
98-07-27 malcolmh Fixed bug 6002: Unexpected error 2335 when running
nested install
98-07-27 malcolmh Fixed bug 6190: We are not set fImpersonate
correctly in CreateFileStream when call MsiAdvertiseScript
from service using an UNC pathed script file.
98-07-27 malcolmh Fixed bug 6184: InProgress mutex is being created
without a security descriptor.
98-07-27 malcolmh Fixed bug 5977: Feature caching prevents repair of
parent features.
98-07-27 malcolmh Fixed bug 6198: MsiGetUserInfoW on Win9X doesn't
handle DBCS correctly
98-07-27 malcolmh Fixed bug 6217: Specifying TRANSFORMS=foo.mst on the
command-line causes crash
98-07-27 malcolmh Fixed bug 6044: Won't update components if the
keyfile is of equal version or if certain reinstallmodes
are set
98-07-27 chetanp bug 5514: fix shortcut removal issue during
upgrades. We now delete DD shortcuts only if they point to
our product.
98-07-24 malcolmh Fixed bug 6175: AD: Darwin uses different location
for package even if asked to use a specific package
98-07-24 malcolmh Fixed bug 5205: Logging: note in event log causes
of ERROR_BAD_CONFIGURATION
98-07-24 malcolmh Fixed bug 6001: AF: srcmgmt.cpp when removing LAN
connection to source files
98-07-24 mattwe Bug #5568: Removed verb registration from
msiexec /regserver. You now must run instmsi/
copymsi at least once get the verb registration.
Bug #6118: We no longer use the verb/extension
tables for the localized verbs in instmsi/copymsi
Bug #1765: We've seperated the verbs for msiexec
out into a res file, and are sending it to localizers.
98-07-23 davidmck Fixed Bug 5964,. We were doing background costing
with an error message up. Probably not a good idea.
98-07-23 t-caroln Fixed bug 6099: Validation. Validation can now
handle DBCS characters correctly. Also inlined the
ICharNext and exposed it in istring.h. Updated all calls
to use ICharNext which has special meaning in Debug
(DBCS simulation). Ship calls WIN::CharNext directly
and UNICODE directly performs a ++pch. Use ICharNext
from now on.
98-07-23 t-caroln Fixed bug 6197 -- Validation of Sequence actions in
Msival.exe. While msival would still work, if an
action had more than one error related to it, it would
only print it out one time. Thus, the user would fix
it, run msival again, and it fail again (for the 2nd
error that it didn't print out). Now all errors are
printed out in one swoop.
98-07-23 chetanp bug 6170 - The RemoveRegistryValues action should
precede the UnregisterMIMEInfo and the
UnregisterProgIdInfo actions to ensure that the ProgId and MIME
information is removed upon uninstall in the case special
subkeys/ values are added to the <.Extension> or
<CLSID\GUID> keys in the registry via the Registry table.
98-07-23 chetanp bug 6179 - We now remove the extension only if the
corr. progid has no more shell commands left. This
allows for multiple applications to share extensions.
98-07-23 chetanp bug 6191 - check MsiAdvertiseScript dwFlags for
validity. We now make sure that the bits passed in are
from the enum tagSCRIPTFLAGS.
98-07-23 cgouge Added ICE25, bug 6018. Validates merge module
dependencies and exclusions. ICE25 shares most of its code
with M3COM, so src\tools\common is now on the
dependency list for msiice.dll.
98-07-23 davidmck Perf improvements to version checking. We now get
both the file version and language information at the
same time.
98-07-23 t-caroln Fixed bug 6189 -- Validation. Formatted and
KeyFormatted are transparent to Darwin, so made it so. Now
Template, Formatted, and KeyFormatted all work as
KeyFormatted (except Template has the additional [1] in
integer property specification). KeyFormatted has
not been removed though to maintain backwards
compatibility. Formatted originally was a subset of
KeyFormatted and now equates to KeyFormatted. All instances of
KeyFormatted in _Validation table have been changed
to use Formatted.
98-07-23 t-caroln Fixed bug 5799, crash w/ runscrpt.exe with the
following : runscrpt.exe showmsi.vbs
ListScript(testtran.aas) where testtran.aas is an invalid filename. Now
the CScriptView and CScriptDatabase classes handle the
error properly.
98-07-23 tracyf Fixed bug 5382. We were having problems when
browsing from a volume that supports long filenames, to one
that supports only short names.
98-07-23 tracyf Fixed bug 5393. We now do better error checking
when attempting to write records to the execution and
rollback scripts.
98-07-22 andrewh 6187 - Shortcuts were removed when changing from
install local to advertised on NT5 (or IE4.01sp1 desktop
update).
98-07-22 t-caroln Fixed bug 6183: MsiVal not work correctly for
sequence validation. A query would always fail so I fixed
it to validate correctly. This pretty much turned
off the action must come before dependent action
validation. Also fixed up some of the entries in the
_Sequence table.
98-07-22 t-caroln Fixed bug 6021 --> Standard Dialog validation.
ICE20. Due to a fix to 5220, the ICE had to be updated
to handle ErrorIcon control correctly. It was also
made to look for the required names of the Error
buttons on the ErrorDialog.
98-07-22 malcolmh Fixed bug 5781: AD: Darwin returns 1610
(Configuration error) when it fails to establish connection to
the source
98-07-22 malcolmh Fixed bug 6123: 4127c: some dialogs still not
localized.
98-07-22 malcolmh Fixed bug 3799: Make sure all environment variables
are expanded in the context of the user
98-07-22 davidmck Fixed bug 6029 - We were hogging CPU cycles by
calling GetTickCount repeatedly if the selection manager
wasn't initialized. Now we kill the timer for
background costing for the window we are in if the selection
manager is not ready.
98-07-22 mattwe Bug #6146: We didn't have ALLUSERS set for
instmsi/copymsi, and the Registry stuff went to the
wrong place.
98-07-21 chetanp bug 6062 - we no longer advertise Type Libraries in
Darwin. The RegisterTypeLibraries action has been
removed from the AdvtExecuteSequence table. Darwin will
now ignore this action if encountered in the
AdvtExecuteSequence table (for older databases).
98-07-21 chetanp bug 6109 - we now support SFN|LFN syntax in the
IniLocator table.
98-07-21 t-caroln Fixed bug 6137. Added
msiTransformValidationUpgradeCode enum value to type library.
-----------------------------
Release 0.10.00.4320
-----------------------------
98-07-20 mattwe Bug #6126: removed /regserver calls from msiinst
on Win9X
98-07-20 mattwe Bug #4505: BackupFile without removing original
file now copies the backup file over the original
during rollback. This allows you to modify the
original, and have it restored during rollback.
This is currently only used by UpdateEnvironment
on Win9X.
98-07-18 johndelo Bug 6131: New release directory: ToolsW
to hold Unicode builds of the tools on both platforms.
TestDb contains ANSI customactions on x86, Unicode on Alpha
98-07-17 malcolmh Fixed bug 6112: Assert in Execute.cpp during Patch
(or Uninstall) when using Rollbacktest=1
98-07-17 malcolmh Fixed bug 6119: MsiGetFeatureInfo(hProduct,
APIProduct.FeatureID(), &iAttribute, 0, 0, 0, 0) should
return 0. It returns:87
98-07-16 mattwe Bug #6115 - for some reason an impersonated reboot
was failing to get a process token. We had a call
to EnableReboot, and it works now.
Bug #5828, #5878 - Added a timeout on the
WaitForService in case something goes really wacky.
98-07-16 chetanp bug 6084 - removed UpdateResource functionality
98-07-16 chetanp bug 6082 - refined the symantics for the reinstall
flags. see bug for more info.
98-07-16 t-caroln Fixed bug 6012 -- ICE24. Validates the ProductCode,
ProductLanguage, and ProductVersion properties in
the Property table.
98-07-16 mattwe Bug #5900: Stubbed security descriptor retrieval to
immediately return on Win 9X.
Bug #5635: Changed UpdateEnvironment on Win9X to
retrieve boot volume location from the registry.
-----------------------------
Release 0.10.00.4316
-----------------------------
98-07-15 mattwe Added new instmsi/copymsi. This is still a self
extracting EXE, but has a radically different dance
in the middle.
NT requires either an admin user, *or* a pre-existing
Darwin install on the system.
Bug #4725: New registry key added for Hydra.
Bug #4891: Now uses /qb+ to let Darwin determine
success/failure of installation.
Bug #5243: Added EditFlags to avoid packages being
listed in the recent documents.
Bug #5279: Registers an AppPath on Win95/98 to allow
running msiexec from the command line without a
path setting.
Bug #5402: LaunchConditions prevent install on NT 3.51
Bug #5906: LaunchConditions prevent install on NT 5.0
Note: You can set the FORCE_MSI_UPGRADE_NT5
environment variable to any value to override this
in InstMsi.
CopyMsi overrides automatically.
MsiFiler has been added to the makefile, to get in
file versions and sizes dynamically.
%darwin%/data/msimsi has been added to the project with
the generic instmsi/copymsi database.
TESTING: copymsi and instmsi should look externally
the same.
98-07-14 t-caroln Fixed bug 6064 in evalcom. Left out a check for
ERROR_SUCCESS. Now msival2 {database} {evaludation
file} -i ICEX:ICEY:ICEZ works correctly.
98-07-14 t-caroln Validation. Fixed bugs 6071 and 6072. Validation
was allowing || pipes (note, the error was in the
validation parser used to pass the SFN or LFN to the
global filename validator). Now it errors with more than
one pipe. Also fixed the path validation. Due to
the consolidation of code, it would report AnyPath's
as invalid if they contained a property.
98-07-14 tracyf Fixed bug 5482: we now display the "Files in use"
dialog, if appropriate, in BasicUI mode.
98-07-14 t-caroln Added a new tool --> MsiDlgs.exe. This is only
built if you specify the msidlgs target. It is not built
with all in the makefile. The msidlgs.exe tool
displays the various dialog and message box resources in
msi.dll. It can be used for viewing various
localized versions of the dialogs (based off of the localized
strings). Syntax for the tool is msidlgs.exe
{msi.dll} {langId}. For example, for US English, run
msidlgs.exe %DARWIN%\build\debug\msi.dll 1033. For
German, try msidlgs %DARWIN%\build\debug\msi.dll 1031
98-07-14 malcolmh Fixed bug 6052: AF:fcache.cpp line342, running
command line repair: msiexec /frocums
{6E8DD198-AB04-11d1-B5B8-006097C998E7}
98-07-14 malcolmh Fixed bug 6051: We should define at least on more
enum for tagINSTALLTYPE.
98-07-14 malcolmh Fixed bug 6025: Rollback: On Win95 if Uninstall
fails, files flagged for delete after reboot are still in
WinInit.Ini
98-07-14 malcolmh Fixed bug 6025: Rollback: On Win95 if Uninstall
fails, files flagged for delete after reboot are still in
WinInit.Ini
98-07-13 malcolmh Fixed bug 5468: UILevel not persisted across a force
reboot action
98-07-13 malcolmh Fixed bug 6045: User with user permissions can't
uninstall due to Permissions on Feature Usage keys
98-07-13 malcolmh Fixed bug 5998: NT4 ZAK: assert in engine during
removal of testdb on client workstation
98-07-13 malcolmh Fixed bug 5948: Patching: Installing new version
doesn't remove patch
98-07-13 malcolmh Fixed bug 5994: LastUsedSource is not updated when
maintenance mode is invoked from a new source
98-07-13 malcolmh Fixed bug 6041: MsiApplyPatch(szPatchPackage, 0,
INSTALLTYPE_NETWORK_IMAGE, 0) crashes.
98-07-13 malcolmh Fixed bug 3586: Application Error on Alpha, when
MsiGetProductProperty is called.
98-07-13 malcolmh Fixed bug 6004: Assertion failed in iconfig.cpp:Line
554 when install after machine advertise.
98-07-11 mattwe Bug #4858: The service now shuts itself down
during logout/log off to enable profile roaming.
98-07-11 t-robmen Fixed bug 5590: Changed the column width for any
Primary Key Column that can be affected by Merge Modules
to 72.
98-07-10 eugend In response to bug # 5220, I've changed the look of
the ErrorDialog in
Template & Testdb.msi. I've replaced the Picture
control (of Bitmap type),
with ErrorIcon of Icon type. If this particular
control is present on the ErrorDialog
(it HAS to have the ErrorIcon name and to be of Icon
type), the handler got
the new functionality to display the following
- IDI_ERROR (formerly IDI_HAND) in response to
messages of imtFatalExit
type sent to the handler.
- IDI_WARNING (formerly IDI_EXCLAMATION) in response
to imtError and
imtWarning message types.
- IDI_INFORMATION (formerly IDI_ASTERISK) in response
to
imtOutOfDiskSpace and imtUser message types.
In order to further enhance the message box look,
when we display the icons,
we play as well the proper sonds.
Please note, that if the ErrorIcon control of Icon
type is not present, no icon
will get displayed.
98-07-10 t-caroln Fixed bug 6021, standard dialog validator. (For
FilesInUse, DiskCost, Error (as specified by the
ErrorDialog property), Cancel as well as coverage of the
FatalError, UserExit, Exit sequence numbers).
98-07-10 malcolmh Fixed bug 5698: We now report to the event log
component detection failure (via ProvideComponent).
98-07-10 malcolmh Fixed bug 6024: Machine assigned app with 2 or more
transforms fails on uninstall.
98-07-10 malcolmh Fixed bug 5864: We now have an event log on Win9X.
It's %TEMP%\msievent.log. If we would've written to
the real event log on NT then we write to this file on
Win9X. If we fail to write to it then we delete it
and try again.
98-07-10 cgouge VALIDATION: New ICE #23 - Bug 6017. ICE 23 validates
that the tab order for control in a dialog is a
single closed loop. Also verifies that the loop is
encompasses every control that has a Control_Next entry.
98-07-10 mattwe Added the ability to set an alternative source directory
for msifiler. This allows you to get file sizes/versions
from a swamp type directory, instead of having a
distribution image. (For instmsi/copymsi primarily.)
98-07-10 tracyf In response to bug 3495, A new property is now written to
the Admin property stream: IsAdminPackage. This property
will be available and set to a value of "1" when running
from a package that was created by an Admin installation.
98-07-10 malcolmh Fixed bug 5993: Cannot invoke a patch from a path
that has a space in it.
98-07-10 malcolmh Fixed bug 5232: consolidated in-progress properties
so we don't repeat feature selections
98-07-10 malcolmh Fixed bug 5171: reboot during (after) managed app
install with full UI not using elevated privs.
Reboot is again a method of the server to allow
managed apps to reboot even when the user is not allowed
to.
98-07-09 johndelo Made provision for localized string resources.
Directory for localized .res files: DARWIN\SRC\INTL
German translation of all strings, but not final strings.
French and Arabic only partially translated for test.
Still need to deal with right-to-left switching.
98-07-09 t-caroln Fixed bug 6005 -- Validation. Version string
validation failed on 99.99.9999.9999. Now works (last 9999
was failing).
98-07-09 davidmck Fixed bug 5407 - avoiding powerdown when doing an
install. We have a hidden window to handle powerdown
queries. This may cause some windowing oddities, so be
on the lookout for such issues.
98-07-09 davidmck Fixed bug 5966, binary data now shows up as
"BinaryData" in a formatted record.
-----------------------------
Release 0.10.00.4309
-----------------------------
98-07-09 t-caroln Fixed bug 4107 -- setting and getting of a FILETIME
property from the summary information stream. Now
when setting, properly converts from Variant to System
to Local to File. When retrieving, converts from
File to Local to System to Variant. Now both API
output, msiinfo output, and export of _SummaryInformation
"table" match.
98-07-08 malcolmh Fixed transform bugs:
5170: Need to pin "secure" transforms on NT5
5886: If the transforms list is preceded by @ and
multiple transforms are used then only the first is
found at the source during first-run
5887: First-run doesn't respect TRANSFORMSATSOURCE
property
5888: Specifying storage transform +
TRANSFORMSATSOURCE property causes storage transform to
be ignored during maintenance mode
5901: First-run doesn't respect TRANSFORMSATSOURCE
policy
We now have a new kind of transform: the secure
transform. It's indicated by the "|" at the front of the
transform list. There's also a policy value
"TransformsSecure" and a property "TRANSFORMSSECURE" that can
be used to trigger secure transforms. We will pin
any transform marked as secure so that it stays in the
client-side cache.
98-07-08 malcolmh Fixed bug 5381: Darwin: launching more than 3 or 4
setups causes darwin to not respond.
98-07-08 malcolmh Fixed 5982: StartImpersonating w/o StopImpersonating
CMsiVolume::SetUNCServer
98-07-08 davidmck Changes MsiEnumClients internal code. This shouldn't
affect how it works on the outside, but might, so
the API should be tested. This change was made so that
for calls internally, we'll keep the key opened and
saves a bit of time.
98-07-08 malcolmh Fixed bug IMsiServer::SetLastUsedSource fails when
called while an install is in progress for a different
user.
98-07-07 malcolmh Fixed bug 5959. crash in msi.dll running deferred CA
during removal
98-07-07 malcolmh Fixed bug 5946: MsiProvideComponent crashes after
avertise.
98-07-07 malcolmh Fixed (again) bug 3988. Local caching path should
include product code or something unique per product.
We now correctly append the product code to the
cached path on Win9X and for machine installs.
98-07-07 chetanp bug 5957 - we now allow reg types other than REG_SZ
to be written as default values. This was previously
explicitly disallowed since it fails on Win95. So
now this will work on WinNT and Win98 but fail on Win95
(as the Win API call will fail).
98-07-07 t-caroln Fixed bug 3589. For temporary databases (databases
w/out input storage), we mark any created columns as
temporary by default. Formerly we were allowing
persistent columns in temporary databases.
98-07-07 andrewh 5955 - Assert before bringing up Insert your CD
dialog. Assert fixed, it was using GetSize on a
tempbuffer for string length instead of a strlen call.
98-07-07 bench Fixed bug 3632 (again): when an error occurs and
logging is not already enabled, a dynamic log is
created. The latest fix is to turn on logging for just
errors and warnings, instead of all log modes.
98-07-07 bench Fixed bug 5959: self-reg errors are now ship errors,
and will have the <A><R><I> button options in ship
Darwin.
-----------------------------
Release 0.10.00.4307
-----------------------------
98-07-07 tracyf For bug 2721, We now honor the "NoDrives" policy, under the key
"HKCU\Software\Microsoft\windows\CurrentVersion\Policies\Explorer".
The number stored under the "NoDrives" value is treate as a 26-bit
array, one bit for each drive (i.e. bit 0 = drive A, bit 1 = drive B,
etc). For any bit that's set, we now hide that drive from the user
in the Browse dialog, and prevent that drive from being selected
as the root volume for TARGETDIR. The one exception is that if
ALL local fixed drives are disabled, TARGETDIR will still default
to the drive containing the Windows directory (regardless of
whether that drive is disabled), and thus that drive will also
appear in the Browse dialog.
-----------------------------
Release 0.10.00.4306
-----------------------------
98-07-04 malcolmh The RedirectComponent table is obsolete, and has
been for a number of months.
98-07-03 t-caroln Fixed bug -- 5087 dealing with the cancel button
during an MsiSpy install. On the action dialog,
clicking cancel did not cause the install to cancel. The
reason was not internal Darwin code, but a mis-authored
package. The ControlEvent for this cancel button
was missing!! And courtesy of Malcolhm's suggestion,
ICE17 caught this error as well. Fixed by adding the
ControlEvent for the Cancel button on the
ActionDialog.
98-07-02 t-caroln VALIDATION -- new ICEs #21, 22. ICE21 validates
that all components are mapped to a feature (in
FeatureComponents table). ICE22 validates that the Feature_
and Component_ referenced in the PublishComponent
table is an actual mapping listed in the
FeatureComponents table.
98-07-02 chetanp fixed bug 5458 - We now prevent an older component
(lesser keyfile) from overwriting an already DARWIN
installed newer component (implying, if the file exists
without having being installed by darwin - we go
ahead and install the component irrespective of the
version - since we cannot trust the previous install to
be complete/ exact).
98-07-02 t-caroln Fixed bugs 4335 and 5913. Re-wrote
CMsiView::Modify. Delete and Update can now be called after Insert
and InsertTemporary. Seek now only requires primary
key columns to be filled in. Formerly required all
non-null fields to be filled in with dummy values + the
primary key fields.
-----------------------------
Release 0.10.00.4302
-----------------------------
98-07-02 malcolmh Fixed bug 3794: AdminInstallFinalize needs to set
the DISABLEMEDIA property during admin install if
installing from compressed source
98-07-02 malcolmh Fixed bug 5786: USERNAME="" and COMPANYNAME="" do
not suppress User Name and Organization field contents
in Setup.
We now have two new properties, NOUSERNAME and
NOCOMPANYNAME. These will suppress our population of the
USERNAME and COMPANYNAME fields.
-----------------------------
Release 0.10.00.4302
-----------------------------
98-07-02 malcolmh Fixed bug 5929: '*' log mode should not include 'v'
98-07-02 davidmck Fixed bug 5804: Using service again after a fatal
error on the service side. We were not zeroing all the
freed pointers, which caused problems the next time
around.
98-07-02 davidmck Fixed bug 4943, DBCS command lines would not work
previously.
-----------------------------
Release 0.10.00.4302
-----------------------------
98-07-02 chetanp bug 5924 - fixed "progids and viprogids not being
written" problem.
-----------------------------
Release 0.10.00.4302
-----------------------------
98-07-01 bench Contrary to previous relnotes entries, verbose
logging is not yet enabled at this time. Verbose debug
output is though.
98-07-01 chetanp bug 5687 - remove component thrashing behaviour from
darwin
98-07-01 tracyf For bugs 5690 and 5861, verbose logging of all final
feature/component states, and of all file version
checks (in order to determine whether to overwrite
existing files) has been added.
98-06-29 johndelo Completed update of MSI type library, per David Boctor.
ProgId is WindowsInstaller.Installer - note change!
For debug-only access, WindowsInstaller.Debug
Old definitions will remain as well until 7/7/98 to
give time for update of test and documention.
Advise to uninstall or unregister old MSI version.
Interface GUIDS for OLE automation have changed.
Strong typing of objects and method completion
now work with MSIin VB and VBA. For object model,
use object browser, oleview.exe, or AutoApi.cpp.
Nearly all public API functions are now exposed.
Help string have been removed too save space, as
is conventional, but are left in for DEBUG build.
Same story with context IDs on enumeration value.
98-06-29 malcolmh Fixed bugs 5847, 5856, 5857, 5811. Fixed a bunch of
API call that didn't allow a null buffer to be
specified in conjuction with a non-null buffer count
parameter. Ex: MsiDoThis(szProduct, 0, &pcchBuf). This call
would typically be followed by a call like
MsiDoThis(szProduct, szBuffer, &pcchBuf)
98-06-29 malcolmh Fixed bug 4983: Suggestion: Could MsiZap add a
command line argument to take a product code. We can now
remove a single product's information with the 'T'
option.
98-06-29 malcolmh Fixed bug 5721: Logging: Need to add function calls
and parameters to debugmon output
98-06-29 malcolmh Fixed bug 5797, 5582. The feature cache is now
per-process.
98-06-29 chetanp bug 5858 - fixed darwin to NOT ignore assigned
transforms at first run
98-06-29 bench Bugs 5860 and 5862: several changes to improve
logging and diagnostic output:
1) a registry value can be used to turn on logging. the value is:
HKLM\Software\Policies\Microsoft\Windows\Installer
Name: Logging Value: REG_SZ, log mode ("ifpmcuewar")
2) new log mode: 'v' for "verbose". Currently this log mode
triggers all debug output to be written to the log, in
both ship and debug Darwin. More information will be written
in the future when this mode is set.
3) a registry value can be used to switch on different levels
of debug output in ship or debug Darwin. the value is:
HKLM\Software\Policies\Microsoft\Windows\Installer
Name: Debug Value: REG_DWORD
value & 0x1: debug output is turned on
(default is off for ship, on for debug)
value & 0x2: "verbose" debug output is turned on
98-06-29 t-caroln Validation. ICE18 -- fixed bug 5684. Required to
be updated from < 32 char to < 64 char due to Bench's
fix of bug 5678.
98-06-29 malcolmh Fixed bug 5866: Cached transforms are not deleted
upon uninstall.
98-06-29 malcolmh Fixed bug 5665: Maintenance mode fails when a
product has run from source transforms
98-06-28 malcolmh Fixed bug 3998: Local caching path should include
product code or something unique per product. We now
place transforms and icons in per-product directories
named with the product code of the product.
98-06-28 malcolmh Fixed bug 5247: Crash in version.dll when calling
GetFileVersionInfo for currupt dll on NT4 - need
workaround
98-06-27 malcolmh Fixed bug 5703: Should invalidate RFS features when
the server is down, regardless of Client Side
98-06-27 malcolmh Bug 5658: We now have a policy value for logging.
Set the Logging value to any combination of our log
characters and we'll generate a log using these modes.
Command-line log flag or MsiEnableLog both override
this policy.
98-06-27 malcolmh Fixed bug 4042: Calling MsiGetComponentPath on a
registry keypath no longers returns a 50+ offset for RFS
keys.
98-06-26 chetanp fixed bug 5699 - we now place the cached icons/
transforms under the APPDATA folder on Win9x as well, if
present. This fixes roaming scenarios where the
APPDATA folder is defined. If the folder is not present,
we do what we always did - place it under the Windows
folder.
98-06-26 tracyf The following new properties have been defined:
PRIMARYFOLDER:
A global property that allows the author to designate
a "primary" folder for the installation. The value
given to this property must be the key name of a
directory record found in the Directory table. The
installer will use the resolved path of this folder to
determine the volume used when setting values for the
PrimaryVolumePath, PrimaryVolumeSpaceAvailable,
PrimaryVolumeSpaceRequired, and PrimaryVolumeSpaceRemaining
properties.
PrimaryVolumePath:
The Installer sets the value of this property to the
path of the volume designated by the PRIMARYFOLDER
property. For example, if the folder referenced by
PRIMARYFOLDER resolves to "D:\ProgramFiles",
PrimaryVolumePath will be set to "D:"
PrimaryVolumeSpaceAvailable:
The Installer sets the value of this property to a
string representing the total number of bytes
available, in units of 512, on the volume referenced by the
PrimaryVolumePath property. For example, if
PrimaryVolumePath is set to "D:", and volume D: has
446,134,272 bytes free, PrimaryVolumeSpaceAvailable will be set
to 871356. Note: if this value is to be displayed
within a static Text control, the new FormatSize style bit
(see below) can be used on the control to automatically format
and label this number in units of KB, MB, or GB as appropriate.
This goes for the other properties below as well.
PrimaryVolumeSpaceRequired:
The Installer sets the value of this property to a
string representing the total number of bytes required
by all currently selected features on the volume
referenced by the PrimaryVolumePath property. As with
the PrimaryVolumeSpaceAvailable property, this number
is expressed in units of 512 bytes.
PrimaryVolumeSpaceRemaining:
The Installer sets the value of this property to a
string representing the total number of bytes that
would be remaining on the volume referenced by the
PrimaryVolumePath property, if all the currently selected
features were to be installed. As with the
PrimaryVolumeSpaceAvailable property, this number is expressed
in units of 512 bytes.
The following new Control style bit has been defined:
FormatSize Control Style Bit:
Decimal: 524288
Hex: 0x00080000
If this bit is set for a static text control, the
control will automatically attempt to format the
displayed text as a number representing a count of bytes.
For proper formatting, the control's text must be set
to a string representing a number expressed in units
of 512 bytes. The displayed value will then be
formatted in terms of kilobytes (KB), megabytes (MB), or
gigabytes (GB), and displayed with the appropriate
string representing the units
Here's an example of the formatting resulting from
use of the FormatSize style bit:
Assume the text of a static Text control is defined
in the Control table to be
[PrimaryVolumeSpaceRequired]. At runtime, the installer will resolve this
property to the total number of bytes required for the
install, in units of 512. If the total bytes required
resolved to, say, 18,336,768, the value for the
PrimaryVolumeSpaceRequired property would be set to
"35814" (18336768 / 512), and the number would be displayed
in the control as "17MB".
98-06-25 malcolmh Fixed bug 5180: Crash running Unicode Darwin with
Advertised Msispy install.
98-06-25 malcolmh Fixed bug 4441: MsiGetProductInfo should accept DD
where a ProductCode is required.
98-06-25 malcolmh Fixed bug 5619: Performance:MsiUseFeature should be
able to avoid feature validation. We now have a new
api: MsiUseFeatureEx that can take
INSTALLMODE_NODETECTION which disables keyfile detection.
98-06-25 malcolmh DEV: Added ability to unload a late-bound DLL.
Syntax: DLL::Unbind(). Ex: OLE32::Unbind().
98-06-25 chetanp fixed bug 5844 - fixed incorrect reg keypath
registration for registry records with special tokens (+, -,
*)
98-06-25 johndelo Updated automation type library per David Boctor specs.
Old definitions will remain as well until 7/7/98 to
give time for update of test and documention.
ProgIds and descriptions have been changed:
WindowsInstaller.Application & WindowsInstaller.Debug
Typelib name and version have changed:
WindowsInstaller = Microsoft Windows Installer 1.0 Object Library
Internal automation version also changed to 1.0
Enumerations now all begin with "msi".
Following current convention, help strings have been
removed to save space in the dll. Help IDs still present.
For current values, use typelib in Msi.DLL or
consult the end of the source file: AutoApi.cpp.
98-06-25 t-caroln Fixed bug 5841, Validation. In order to ensure all
GUIDs work correctly (particularly after
compression), they need to all be UpperCase. The GUID category
validator now validates that the GUIDs are indeed all
upper case. The msispy and msival2 msi's had to be
updated in order to validate correctly.
98-06-25 bench Fixed bug 5820. The LIMITUI property caused
properties set on the command line to not be processed.
98-06-24 malcolmh Fixed bug 5814: Cancel button flashes in basic UI.
98-06-24 malcolmh Fixed bug 5776: Network resource dialog has an
accelerator key that fails to work.
98-06-24 malcolmh Fixed bug 5716: Should notify the shell whenever
application state changes.
98-06-24 malcolmh Fixed bug 3799: Make sure all environment variables
are expanded in the context of the user.
98-06-24 chetanp bug 4299, 4330 fixed. - we now have the additional
restriction that the RegisterProgIdInfo,
RegisterMIMEInfo are after the RegisterClassInfo and the
RegisterExtensionInfo actions and the UnregisterProgIdInfo,
UnregisterMIMEInfo are after the UnregisterClassInfo
and the UnregisterExtensionInfo actions. This is in
accordance with the current recommended sequence.
-----------------------------
Release 0.10.00.4224
-----------------------------
98-06-24 bench Patches created by a build prior to 4224 will not
work with 4224 and beyond. All patches must be
recreated. This incompatibility is caused by a change in
the file format for patch files.
98-06-23 t-caroln Fixed bug 5812 -- Tools now use _stprintf (compiles
to sprintf and wsprintf depending on UNICODE).
wsprintf only works up to 1024 bytes, which could fail to
copy everything for some tools. Tools affected were:
msialter, msidb, msidiff, msifiler, msiinfo,
msimerg, msitran, msival, and msival2.
98-06-23 t-caroln Fixed bug 5647 -- As per chetan's fix for 4512,
AnyPath can be LFN (SPN|LPN). Validation now handles
this case.
98-06-23 t-caroln Fixed bug 4010 -- msitran -v option not work when
transforming an emptydb to a fulldb. This actually
wasn't a "real" error, but if the user used the fulldb
as the db in the msitran -v argument list, then we
wouldn't handle it correctly (# primary keys and columns
would double). Now, it is handled correctly.
However, the emptydb should have been used as the base.
98-06-19 t-caroln New ICE's -- 17 (bug 5773), 18(sort of bug 3317), 19
(bug 3317)
Updated ICE02 to include the ODBCDataSource table
check
ICE17 -- validates ControlType dependencies in the
Control table for the Bitmap, Icon, ListBox,
ListView, ComboBox, RadioButtonGroup, and PushButton control
types.
ICE18 -- validates KeyPath column of Component table
if KeyPath is NULL (Directory refernce).
ICE19 -- validates advertising.
Class,TypeLib,Extension,PublishComponent,Shortcut tables must reference
Components with a ComponentId. All but the shortcut
table must reference components with File KeyPaths.
The Shortcut can also reference a Directory KeyPath.
98-06-19 mattwe 5635: Improved location of autoexec.bat for UpdateEnvironment
on Win95. You can use WIN95_ENVIRONMENT_TEST to override
our detection. We look first to the windows volume, then
search all fixed disks for config.sys, and lastly fall back
to the windows volume. There's more that can be done, but
for very little return.
5769: Fixed a caching problem with the path object.
If you call GetFilePath with a file, change some other part of
the path, and then call with the same file, you will get
spurious results. This affects nearly every path method.
98-06-19 davidmck Made a number of performance improvements. The
trickiest is that we try to estimate the cost of the
script and only compute the exact cost if we really need
to.
The definition of "really need to" is when the
install without the script will fit, but the install with
the maximum script for the database does not. Testing
in cases where we are near the edge would be
interesting.
Our "exact" script cost is also an estimate, but a
more precise estimate than our guess, so you can
probably still get some border cases where we don't install
and you might have just enough space, but likely you
couldn't use the product then.
98-06-18 bench Bug 5752: We now return
ERROR_INSTALL_PACKAGE_VERSION from MsiAdvertiseScript and
MsiProcessAdvertiseScript when the script passed in has an unsupported
script version.
98-06-18 malcolmh Fixed bug 5748: AF in istring.cpp line 1123
98-06-18 mattwe 5729: You can now put environment variables on the
command line again, with %VAR=Foo. A previous
bug was to assure that all properties started with
an alphanumeric character, and busted this.
98-06-18 malcolmh Fixed bugs 5742. We now assert if you don't declare
your DLL custom action __stdcall.
98-06-18 mattwe 5629 Fixed a debug only crash with long command lines.
We now resize the buffer on the fly for the offending
debug string. However, it will still truncate at 1024
character and give slightly wacky output.
Increased the maximum length for a property value to
1024 characters, and cleaned up the code to ease
increasing it further if needed.
98-06-18 andrewh 5750, Couldn't uninstall office9, Assert "Cursor not
reset", new error checking caught a case of a cursor
being used before the previous user reset it
5735: CustomAction cannot reference File table on uninstall,
this fix affects FormatText so it can now reference files in
components whose states are either not changing or are
scheduled for removal. The author should condition
CustomActions, author components appropirately to not
use a file after it has been deleted.
5746,5747 - Don't list msiexec in the FilesInUse
list, list the correct file that is in use in the log.
98-06-18 mattwe Bug 4278: MoveFile no now longer fails if the full
file attributes cannot succesfully be copied. This
typical case is that the file has security such that
we can't access them.
98-06-18 bench Bug 5678: as values in the RunOnce key must have
names < 32 characters, we no longer use the product name
in this field. Rather, the product code is
compressed and truncated to provide an almost-unique name
that is < 32 characters.
98-06-18 bench Bug 5644: add the ability to detect products in a
range of versions using the Upgrade table and the
FindRelatedProducts action. Previously, you could only
use the Upgrade table to detect a product whose version
is greater than or less than a single version. Now,
you may supply a range of version of the syntax
"X.X.X.X:X.X.X.X" where the ':' seperates the two. The
Operator column value is interpreted differently when
this syntax is found. Now, adding a 2 to the value
means the lower version is inclusive, and adding a 4
means the upper version is inclusive. The two
versions are exclusive by default.
-----------------------------
Release 0.10.00.4218
-----------------------------
98-06-17 t-caroln Added MsiDefs.h to the Headers target. This copies
the file from the %DARWIN%\src\inc to the %COMMON%
folder in the build directory so that the tools can use
them. (%DARWIN%\src\inc is not an Include path for
the tools).
98-06-17 t-caroln Fixed bugs 5727, 5728 -- Validation. Validation was
returning the wrong error code (NotInSet) for
OverFlow and UnderFlow errors. Changed to return the
correct error codes.
-----------------------------
Release 0.10.00.4217
-----------------------------
98-06-17 malcolmh Fixed bug 5656: Custom Action hang darwin when
trying to send messages to update progress
98-06-16 bench Fixed bug 5715: assert when patching run-from-source
install.
98-06-16 bench Changed the versions for all Darwin files, moving
the build number from the fourth field to the third.
This will allow future "letter" builds like 4127a to
be given a new version, like 0.28.4127.1.
98-06-16 tracyf Per bug 5685, the ReserveLocal and ReserveSource
columns of the ReserveCost table are now non-nullable.
Since the original schema was wrong (and outrageous
disk space calculations are the resullt if these
columns are left Null), a schema version change is not
called for.
98-06-16 tracyf In response to bug 5643, the disk cost values
displayed in the UI for features have been changed. The
values displayed now represent the total cost
attributable to the feature *after the install is complete*,
i.e. without taking rollback into account. For
example, in previous versions of Darwin, if a feature is
installed on first-run, and then the install is
launched into maintenance mode, the disk cost for that
feature would always show up as 0 if rollback is enabled,
regardless of whether the feature is selected for
removal or not. Now, the displayed disk cost will
reflect the disk space that will be freed up after the
removal is complete and the rollback files are removed.
98-06-15 bench Fixed bug 5705: the end dialog displayed when /q+ is
used contained the string "1: 32" using ship Darwin.
It now displays the error strings 32 or 33 from the
Error table correctly.
98-06-15 t-caroln Bug 4938 -- Validation. Updated the fix. The code
for CustomSource was commented out after this bug due
to its incorrect validation of nested install CAs.
I've uncommented the code and changed it to work
correctly for other CAs. The validation of the nested
install CAs is left to the custom validator (one of the
ice's).
98-06-12 t-caroln Fixed bug 4791 dealing with filename validation.
The filename validation code has been consolidated into
one function. Both Services and the internal
Validation code use it (thus preventing duplicate copies of
the same source code).
98-06-12 tracyf Fixed bug 5413. For child features in the
advertised state, when the parent changes from the Local state
to the Source (run from network) state, the child
feature(s) now also go the Source state. If the parent
is changed back to Local, the children will go back
to advertised.
98-06-12 tracyf Fixed bug 4787 - the FileName column of the
RemoveFile table has been fixed to properly accept
shortName|longName syntax.
98-06-11 t-caroln Bugs 5661, 5684. Validation.
5661 -- Version string validator works with
MergeModule tables and will work in any table provided you
have a Language column called "Language". This
maintains Darwin's versioned file scenario where all
versioned files must have a langauge.
5684 - ProductName can only be 31 characters max.
Custom validator. ICE16
98-06-11 t-caroln Fixed bugs 4813, 5670, 5671 -- custom validators.
One if for circular references between MIME and
Extension tables, one if for Dialogs listed in the
*ExecuteSequence tables, and one if for root feature parents
with the ifrsFavorParent bit set.
98-06-11 t-caroln Fixed Bug 5521, added a new URL validation type..
98-06-11 malcolmh Fixed bug 2858: Transforms: Adding an existing table
to DB fails even when flagged to treat as warning
(ignore)
98-06-11 malcolmh Fixed bugs:
5569: "Preparing to install" string should be moved
into the new localizable resource
5570: Need to update the error strings in the msi.dll
resource for clarity
5572: Basic UI - strings need to be removed from the
dialogs and placed in the localized resource
5180: Crash running Unicode Darwin with Advertised
Msispy install.
5611 Should remove backward compatability with <1800
NT
-----------------------------
Release 0.10.00.4211
-----------------------------
98-06-11 mattwe /o property support is now completely removed.
98-06-10 t-caroln Bug 5657 -- fixed validation of SFN and LFN
(disallowing some char when we should allow and allowing
others when we should disallow)
98-06-10 chetanp Due to the nonexistence of common shell folders we
now ignore the ALLUSERS property for Win9x platforms
-----------------------------
Release 0.10.00.4210
-----------------------------
98-06-10 tracyf Bug 4775: support for a new attribute bit has been
added to the Attributes column of the Feature table.
The description of the bit to be incorporated into
the help file is: "The 6th bit is the
ifrsNoUnsupportedAdvertise bit. If this bit is set for a particular
feature, advertising will be disabled for that feature
if the operationg system shell the product is being
installed on does not support Darwin descriptors".
98-06-09 bench Fixed bug 5616: upgrades or patches in which the
InstallExecuteSequence contained the InstallExecute,
RemoveOldProducts and InstallFinalize actions, in that
order, caused an assert and crash. This has been
fixed.
98-06-09 davidmck I changed how InstMsi copies the files to use
CopyFile rather than LZCopy. LZCopy was randomly failing on
some machines (Bug 5622) and we don't need it so
CopyFile seems better.
98-06-09 tracyf Fixed bug 4287. We now automatically retry network
failures once during file copying, before putting up
the retry dialog (during quiet installs, we retry
once before failing and rolling back). If the network
failure occurred while reading or writing an open
file, we also now close the file and re-open before
retrying.
98-06-09 bench Fixed bug 5598: "Unexpected Error 2203 running
merged nested install". This bug exposed the fact that
when caching the msi in %windows%\installer, we were
copying the temp copy of the msi from %temp% and not
from the source. The fix for this bug was to copy the
msi from the source instead.
98-06-08 malcolmh Fixed bug 2147: Incorporate Shell Support
independant of OLE support.
We have 2 new properties:
OLEAdvtSupport
ShellAdvtSupport
98-06-08 t-caroln Added a new target to the makefile -- msival2. This
builds msival2.msi, evalcom.dll, msival2.exe, and
darice.cub. I have also added msival2.msi to be
released in the Samples folder. It contains
conditionalized components. The evalcom.dll ANSI version is
installed on the Win9X systems and the UNICODE version is
installed on the Winnt systems.
98-06-08 bench Fixed bug 5604: the packages simple.msi,
minimum.msi, schema.msi and template.msi where all made
platform-independent by changing the suminfo property 7 from
"Intel;1033" to ";1033".
98-06-08 andrewh 5612 - Fix ship Network Resource dialog, the line to
read the path from the editbox was debug-only,
causing us to display garbled characters in an Invalid
Path messagebox... (bug 5521 fixed by this as well)
98-06-08 bench Fixed bug 5597: some errors (those generated
directly from the actions) where not using the error strings
from the Error table. They now do.
98-06-08 bench Fixed bug 5615: we now do not bind files (with
BindImage) that we do not install. Most likely files we
don't install because they have equal or newer
versions have already been bound, so this is a slight
performance gain.
98-06-05 t-caroln Validation bugs -- 5107, 5613. Fixed. 5107 dealt
with removing obsolete test for '@' in Cabinet
category. 5613 was adding iveBadFormatted as a case for the
MapError function in the API.
98-06-05 chetanp bug 5588 - change to skip type library registration
when going from advertised to advertised after
reboot.
98-06-05 bench Fixed bug 5617; we were calling lstrlen on a null
pointer in MsiConfigureProduct which sometimes AV'ed.
We don't do this anymore.
98-06-04 bench Fixed bug 2406: embedded cabinets where being
stripped from admin packages, since the admin source is
always uncompressed. Now, the size of the package is
also reduced to reflect the missing streams. This code
change effects database caching as well, as to two
features now share the code that strips cabinets.
98-06-04 chetanp bug 5579 - changed CMsiEngine::SetFeature's logic
for setting the fNeverTrackParent variable.
98-06-04 tracyf Bug 5116: For MsiGetFeatureCost, the
MSICOSTTREE_PRODUCT constant is unsupported, and has been removed
from msiquery.h and the help file.
98-06-04 tracyf Fixed bug 5253 - we can now extract zero byte files
from cabinets embedded in an MSI stream.
98-06-04 tracyf Fixed bug 4374 (slimmed down the basic UI dialog).
98-06-03 malcolmh Fixed bug 5574: Creating a shortcut on a network
drive causes Assert.
The assert was incorrect.
98-06-03 malcolmh Bug 5342: AD: Self registering DLL-s cannot be
configured to run with elevated priledges.
We now self-reg elevated for managed app, and
impersonated otherwise.
98-06-03 malcolmh Fixed bug 5505. MsiProvideComponentFromDescriptor no
longer uses the feature cache. This doesn't affect
any of the other MsiProvide* functions.
98-06-03 t-caroln Added -Z option to msival2.exe. When using this
option, you can ignore specifying the evaluation file as
the -Z means to use the latest darice.cub file which
is available off the Iceman website. Syntax is then
msival2.exe {database} -Z. Note, msival2.exe will
soon be released once evalcom.dll is ANSI enabled.
98-06-03 t-caroln Fixed bug 4035 which Validates Type 35 and 51
CustomAction usage. This is available as Ice12. Currently
the only site to access it is at the Iceman website.
-----------------------------
Release 0.10.00.4203
-----------------------------
98-06-02 malcolmh Fixed bug 2477: Need to clean up verbs in the
explorer. The verbs now display correctly.
98-06-02 mattwe We now assert with a message when we have a /O
(old property format) in the command line.
It still continues to work if you ignore the assert,
but the tests and CAs *should* be up to date by now.
98-06-02 chetanp changed font version handling - we now allow font
version strings to be of a more generic form -
[text]<number>[<dot> OR colon>]<number>[<semicolon> OR <comma> OR <space> OR <tab>][text]
98-06-02 tracyf The Installer now displays a progress bar during the
final costing/script compilation phase. Previously,
an empty progress bar would sit on the screen for up
to 2-3 minutes (or longer) before the actual script
execution begins. Now, the progress bar will run to
completion, indicating the end of the preliminary
phase, and then will start again for script execution.
In avoid misleading the user, a new ScriptInProgress
ControlEvent has been added, which allows a special
explanatory string to be displayed during the first
progress bar. The same text control in the
EventMapping table that subscribes to the TimeRemaining
ControlEvent should also subscribe to the ScriptInProgress
ControlEvent, with "ScriptInProgress" as the name of
both the Event and the Attribute. In addition, the
string to be displayed should be added to the UIText
table, also with the name "ScriptInProgress". For
instance, in the template MSI, this string was added with
the text "Gathering required information...".
If executing with Basic UI, the "ScriptInProgress" string
is pulled from the error table (new error string 21), and
is automatically displayed at the appropriate time. For
existing databases, this new error string should be added
(simply no string will be displayed if it is not found).
98-06-02 tracyf Fixed a number of bugs related to the "time
remaining" indicator on the progress dialog. First, while
more than 60 seconds are estimated to remain for the
install, the "time remaining" now updates every 15
seconds, and displays only "xx minutes". Once the time
remaining drops below 60 seconds, the display updates
every second, and displays only "xx seconds". Note that
for this to display properly during full UI, the TimeRemaining
string in the UIText table needs to modified in existing
databases, to this form: "Time remaining: {[1] minutes }{[2] seconds}"
(this modification has been made in the standard template MSI).
Also, other problems, such as negative time values, and time
estimates becoming skewed when alerts are displayed, have been
fixed.
98-06-01 malcolmh Fixed bug 5536: MsiGetComponentPath doesn't handle
the case when lpPathBuf==0 and pcchPathBuf != 0
98-06-01 t-caroln Fixed bug 5553. This bug was caused by the fix for
bug 5534. Now we use a class to ensure that the View
and Stream are released in the correct order (View
must be last). Also this encapsulates all of the
releasing that has to be done. All of this occured in
the FindAndRunAction code and was related to custom
actions.
98-05-29 malcolmh Fixed bugs:
3927 Multiple but incompatible flags are valid for
Version checking on transforms
3945 need a new transform validation constant:
itvUpgrade
98-05-29 bench Fixed bug 5310: added a new bit for the
Upgrade.Operator column: DetectOnly. Adding this value (32) to
your operator column value will cause the detection in
FindRelatedProducts to kick in, but will disable any
action taken by the PreventInstall or
RemoveExistingProducts actions.
98-05-28 malcolmh Fixed bug 5094: Assert when system environment
variable is blank.
We now zap any blank environment variable entries.
98-05-28 eugend Two bug fixes in the handler changed the UI's
functionality:
- bug # 5399: disabled Text controls were displaying
their text as normal text.
I've changed this as to display the text grayed-out.
- bug # 4783: the Text control wasn't able to display
'&', but was displaying then
next character underscored. I've added the NoPrefix
Text control style
(hex value = 0x20000, decimal = 131072). If present,
the text control displays
the '&' character "as is".
98-05-28 malcolmh Fixed bug 3926: MsiTran needs arguments for setting
flags for validation of language, product and
platform
98-05-28 malcolmh Fixed bugs:
3983: Asserts when disconnected from network
4538: Back command makes Darwin exit without alarm
messages when network connection is broken
We now always temporarily cache the MSI, whereas we
used to cache only when installing from removable
media.
98-05-28 bench Fixed bug 5515: a new property was added:
ReplacedInUseFiles. This property is set in the InstallExecute
and InstallFinalize actions whenever we install over
an existing file that is in-use.
98-05-28 tracyf Added a new argument to the record fields for the
MsiProcessMessage API, which now allows additional ticks to
be added to the install progress bar (by
CustomActions, for instance). The new argument will be
documented in the help file soon, but until then, here are
field definitions when eMessageType is specified as
INSTALLMESSAGE_Progress:
Field 1: Subclass - this field determines the type,
or subclass, of progress message being sent. The
content of the remaining fields is dependent on the
subclass type, as shown below. The allowable values in
field 1 are:
[0] - MasterReset - resets the progress bar, sets
the total number of expected progress ticks
[1] - ActionInfo - provides information related to
progress messages to be sent by the current action
[2] - ProgressReport - increments the progress bar
[3] - ProgressAddition - allows an action (such as a
CustomAction) to add ticks to the overall expected
progress total.
Field 2: (Dependent on subclass type, as follows):
[if MasterReset] - the total number of expected
progress ticks for the whole progress bar
[if ActionInfo] - the "PerTick" value: the number of
ticks per ActionData message for the current action,
if no explicit ProgressReport
are being sent (see field 3 below). This field is
ignored otherwise.
[if ProgressReport] - the number of ticks by which
the progress bar is incremented
[if ProgressAddition] - the number of ticks to add to
the overall expected progress total
Field 3: (Dependent on subclass type, as follows):
[if MasterReset] - the direction to fill the progress
bar, one of two values:
[0] - forward (left to right)
[1] - backward (right to left)
[if ActionInfo] - the progress "type": one of two
values:
[0] The current action will send explicit
ProgressReport messages
[1] Increment the progress bar by the "PerTick"
value (see Field 2) each time an ActionData message
is sent
[if ProgressReport] - Unused
[if ProgressAddition] -Unused
98-05-27 bench Fixed bug 5305: several upgrade actions have been
renamed to more closely resemble what they really do.
Note that the old action names will continue to be
supported indefinitely, but only the new names will be
documented. Specifically, the old and new action
names are:
BlockInstall --> PreventInstall
MigrateFeatureSettings --> MigrateFeatureStates
RemoveOldProducts --> RemoveExistingProducts
98-05-27 bench Fixed bug 5448: MsiCreateTransformSummaryInfo will not fail
if the ProductVersion property value is greater than 13
characters. We technically support any length product version,
as long as the first 3 fields contain 8 or fewer digits.
98-05-27 malcolmh Fixed bug 4985: We now support the log mode character
'*' which represents all log modes.
ex: msiexec /I foo.msi /L* log.txt
98-05-27 malcolmh Fixed bug 4517: SOURCEDIR should be a private
property
98-05-27 malcolmh Fixed bugs:
4441: MsiGetProductInfo should accept DD where a
ProductCode is required.
4442: MsiConfigureProduct should accept DD.
4443: MsiQueryProductState should accept DD.
98-05-27 malcolmh Fixed bug 3090: DARWIN, MsiAdvertiseProduct returns
error 12 if language id of package does not match the
system.
Behavior is now:
- If i pass a specific language:
- if the pkg supports that language, use it
- if the pkg does not support that language, fail.
- If i pass null for the language argument:
- use the default language for that pkg
-----------------------------
Release 0.10.00.4127
-----------------------------
98-05-27 tracyf For bug 5395, added code to estimate the disk cost of the
install and rollback scripts (which can get large for an
install such as Office), to help prevent problems when
installing or uninstalling with very little disk space
available.
-----------------------------
Release 0.10.00.4127
-----------------------------
98-05-26 johndelo Component.ComponentId has now been restored to nullable,
in order to support removal of old versions, obsolete
files and reg entries, and temp files such as help indexes.
Components with no ID will not be registered and thus
cannot be used for advertising or when uninstall is needed.
98-05-26 mattwe We now invalidate the feature cache between
log-offs.
98-05-26 mattwe Synchronous custom actions now use the old
message pump to work around an OB1 bug.
(repro steps in #5519). We still need to
look at all this and get it right.
98-05-26 mattwe SCHEMA CHANGES:
IniFile.Directory_ has now been changed to
IniFile.DirProperty. Bugs #5250, #5354
Component.ComponentId is now nullable, per JohnDelo.
Validation fixes are in.
Class.AppId is now Class.AppId_. This is a foreign
key to the AppId table.
AppId table has been added, per Rob's specs.
Bug #5480.
This is being included in the unreleased 0.28 schema
changes. Full backwards compatibility to 0.27
98-05-26 bench Fixed bug 4451. We now support displaying an "End
Dialog" on success or failure in basic UI mode or
quiet mode. To enable this dialog, add + to the /q
option on the msiexec command line, or include a flag in
the INSTALLUI_LEVEL passed to MsiSetInternalUI. Note
that this dialog is not displayed when a reboot is
required. In quiet mode, we reboot automatically, in
basic UI mode, the "you need to reboot" dialog
replaces the end dialog.
98-05-22 t-caroln Fixed bugs 3077, 5005, and 5477 for validation.
98-05-21 chetanp bug 4792 - We now doubly refcount the key file of
components, if the key file exists w/o being refcounted
AND the icsSharedDllRefCount flag is set for the
component.
-----------------------------
Release 0.10.00.4121
-----------------------------
98-05-20 bench Fixed bug 5378: We are now more strict about
multiple threads using the per-process global messaging
object at the same time. If more than one call is made
to initialize the message object, the second will fail
with ERROR_INSTALL_ALREADY_RUNNING. For example,
attempting to run two installs or an install and an
advertisment in the same process will not be allowed,
with the second install/advertisement failing.
98-05-20 malcolmh Fixed bug 4998: We now cache feature detection
information
98-05-20 malcolmh Fixed bug 5487: Darwin now works on NT5 builds <
1800.
98-05-20 bench Fixed bug 5476. ForceReboot now uses the product
code on the command line instead of the path to the
source msi if possible. This will happen in the
ForceReboot action is after RegisterProduct and
PublishProduct. As a result, we will not require the source to
be present to access the msi if the product is
registered before the reboot.
98-05-20 andrewh fixed 5491: ProvideComponent repair copies too much
when installstate_broken: its call to
MsiReinstallFeature would reinstall equal files, changed the
offending bit from REINSTALLMODE_FILEEQUALVERSION to
REINSTALLMODE_FILEOLDERVERSION
98-05-20 andrewh 5359: Raised the shell version required for Darwin
shortcut/descriptors to be the IE4.01SP1/Win98 shell
(4.72.3110).
98-05-20 davidmck When we open a docfile, we now see if it's open
across the network and if so, tell services not to let
the system powerdown.
Services keeps a count of the number of times it's
been called and will clear the thread state when the
counter gets back to its initial state again.
We also tell services not to power down when we're
actually running an insta..
98-05-19 t-caroln fixed bug 3331 -- added ice12. Validates the
circular references between components and files and
components and registry keys. Go to http://robmen2 and
click on ICEMAN to test it out.
98-05-19 malcolmh Fixed bug 5293. We have changed the cached MSI location
and the location where we store tranforms in the user
profile. We now use %WINDOWS%\Installer for per-machine
data and {UserAppData}\Microsoft\Installer for per-user
data.
As a consequence of this change, we have a slight
modification to our transform registration scheme. This
change has no implications for users of Darwin. If the
transform that we're registering is in a shell folder
then we'll replace the shell folder path with
"*ShellFolderId*", where the '*'s are literal. This is
to support roaming. For example, you might see a transform
registered as *26*Microsoft\Installer\1_2.mst. 26 is
the CSIDL for the user's Application Data folder.
We also now mark both of these folders as hidden,
and we mark transforms and icon files read-only.
MsiZap has been updated and will zap these new locations
in addition to the old ones.
98-05-19 t-caroln fixed bugs 5455, 5456. Required updates of
_Validation table to match help file.
98-05-19 chetanp to fix bug 5227 - needed to change the Progid table
schema. bumped up the database schema version to .28.
However we still support the older database
versions. Also the script file version remains unchanged.
98-05-18 bench Fixed bug 5191. We now reboot automatically when
necessary in a quiet mode install. In addition, the
"Do you want to reboot now" message was changed from
WARNING to USER. This means this question will no
longer begin with "Warning 1702".
98-05-18 bench Bug 5367: "All internal errors should only have OK
button". Before putting up an error message, we now
detect if and when we don't have a template string to
go with the error. If we do not, we restrict the
buttons displayed to just <OK>.
98-05-18 t-caroln fixed bug 3897 -- trivial. Also updated testcab's
validation table to match schema's except for the
following columns where they differ: Feature.Directory_,
Component.KeyPath, and File.File due to the old
naming conventions of the cabinets.
98-05-18 eugend In the fix to bug # 3028, I've modified
CMsiVolumeCostList, as to enable
authors to set the column widths. The column width
information can be
entered into the control's Text column, right after
the font specifications
(if any). This information can be entered as a
succession of positive
integers enclosed between curly braces. A maximum
number of 5 width
specificators will be taken into consideration.
Empty curly braces or {0}
will cause the respective columns to be hidden.
Reading the column width
specifiers will stop under the following
circumstances:
- a negative integer or a string that cannot be
converted into a positive
integer has been encountered.
- 5 width specifiers have been read.
- there are no more width specifiers.
If less than 5 valid, non-null width specifiers are
present, the remaining
columns will be hidden.
I've also modified the default column widths as to
better fit the columns
into the given rectangle.
I've modified the VolumeCostList control in
TEMPLATE.MSI &
TESTDB.MSI's DiskCost dialog as to have width
specificators in its
Text field.
98-05-18 t-caroln fixed bug 5430 -- Error exporting binary data from a
table whose primary key is of type integer. Fixed
by adding a new method to IMsiCursor called GetMoniker
which handles computing the stream name. This
method is open for testing in the msiauto api. In
automation it is a read-only property of CAutoCursor called
Moniker. See msiauto.hlp and bug for details on use.
98-05-18 malcolmh Fixed bug 5082: Storage CopyTo error when installing
package with authoring error for file sizes. We now
give an OODS error and allow retry.
98-05-18 malcolmh Fixed bug 5450: MsiAdvertiseScript should return
error if we're doing a user assignment without
impersonation
98-05-15 t-caroln Fixed bug 5362 -- when applying transform from
command line return ERROR_FILE_NOT_FOUND if transform file
not found and the Transform application error
otherwise
98-05-15 bench Fixed bug 3632: "Darwin should log all failures to
file even if logging was not turned on". If an error
or warning occurs and logging is not turned on, we
will create a log on the fly to contain the error
message, and continue logging for the remainder of the
install. The dynamic log is created in the temp
directory and is called MSI*.LOG, where * is a set of random
alpha-numeric characters.
98-05-15 mattwe Fixed Bug 4499: The UpperCase type in _Validation now
works in tandem with any foreign key validation.
The Feature.Directory_ column now must be both a foreign
key to the Directory table, *and* UPPERCASE. (a public
property.)
98-05-15 malcolmh Fixed bug 5341: The "preparing to install" dialog
comes up with the network resource dialog even when
we're not installing
98-05-14 mattwe Fixed Bug 5353: Validation now does no checking on foreign
keys for the IniFile.Directory_ or RemoveIniFile.Directory_
This is to allow AppSearch to fill in properties as needed.
Fixed Bug 4824: GetSelfRelativeSD automation fixes.
98-05-14 malcolmh Fixed bug 3794: AdminInstallFinalize needs to set the
DISABLEMEDIA property during admin install if installing from
compressed source
98-05-14 malcolmh Fixed bug 3774: AdminInstallFinalize needs to set
the MEDIAPACKAGEPATH property during admin install
98-05-14 bench An added restriction has been made for the placement
of the RemoveOldProducts action. This action may be placed
in one of the following locations:
1) before InstallInitialize
2) after InstallFinalize
3) between InstallExecute and InstallFinalize, where no other
installation actions are in the same range.
98-05-14 t-caroln Fixed bug 4461. Change was minor where changed the
WriteLog calls to Message(imtInfo...) in the
ValidateTransform code.
98-05-14 bench Fixed bugs 5083 and 5084, both of which dealt with
backup files being left around in low disk space
conditions. The fix for these bugs was more general: the
CMsiFileCopy object will delete any files it has
partially installed after an error or cancellation
occurs. This is true for both compressed and uncompressed
file copy.
98-05-14 malcolmh Fixed bug 5416: AV in PublishSourceList when
DISABLEMEDIA=1
98-05-13 chetanp fixed bug 5318 - now we do not error if attempting
to remove from a non existent inifile/ folder.
98-05-13 malcolmh Fixed bug 4929: SourceList creating duplicate
entries
98-05-13 malcolmh Fixed network resource dialog bugs:
4801: Source dialog requires full path to MSI;
doesn't allow just path to folder
4932: Network Resource dialog doesn't accept a
directory path without a trailing backslash
4928: Inaccurate error message when sourcelist fails
to find source MSI
98-05-13 mattwe We now cached the local system SID. It looks like
the code intended to do this (sets a flag, saves the
value in a static,) but the code never actually
took advantage of either.
98-05-13 mattwe Bug 5374: Removed unused property "Registraton" (sic)
from simple, testdb, and msispy.
Fixed several other un-relnote-worthy bugs. See raid.
98-05-13 bench Fixed bug 4036: "Installation fails when TEMP
environment variable not found" Our logic for locating the
TEMP directory is hopefully final. We now do the
following: If %TMP% is defined, we use that directory.
Otherwise, if %TEMP% is defined, we use it.
Otherwise, on 9X we use %windows%\temp and on NT we use
%systemdrive%\temp. In all cases, if the directory does
not exist, we create it. Note that from the
service, we always use %windows%\msi as the temp directory.
-----------------------------
Release 0.10.00.4113
-----------------------------
98-05-13 chetanp Fixed bug 5398:We now support a new flag INSTALLMODE_NODETECT
for the dwInstallMode argument in the MsiProvideQualifiedComponent
and MsiProvideComponent APIs. This flag skips the component key
path detection logic. Hence setting this flag will cause darwin to
return success and the key path in scenarios where the component
was installed but the key path was (externally) deleted.
98-05-12 mattwe Bug #5222: "SYSTEM" account is localized to another
name on foreign systems. We've changed the security
internals to recognize this special account, and
look them up in a localization independent fashion.
this will prevent the need for localizing the
LockPermissions table.
Bug #5283: Command line properties must now start
with an alpha numeric character. This prevents
the command line "Prop1=Value2" from being
misinterpreted as a value name of "Prop1.
People have commonly messed this up by simply removing
the obsolete /o command line switch, without fixing
the quotes.
98-05-11 malcolmh Fixed bug 5361: Transforms: Unable to cache
transform if the full path is not passed on the command line
98-05-11 malcolmh Fixed bug 4249: Handler error running an .msi in UI
mode when no UI tables are included.
98-05-08 mattwe Bug 4811: We now retry to download cabinets from
the internet. Normally, if we can't find a file
from source media, it's considered an authoring
error/debug failure. However, the internet is a
little more flakey, and there's a chance the file
will re-appear.
98-05-08 mattwe Feature.Attributes now validates the exact set of
allowable values.
98-05-07 mattwe Bug 2802: Set validation of integers never worked.
We do now. Also, changed several Validators that
were contiguous sets (0;1;2;3) to ranges. Updated
ServiceControl.Event and Feature.Attributes to new
sets based on the newly detected failures.
98-05-07 malcolmh Fixed bugs 4735, 2301: Feature usage metrics are now
functional. We ACL the parent of the usage key so
that Everyone can write to it.
98-05-07 malcolmh Fixed bug 4042: After configure TestDB to source,
MsiGetComponentPath returns garbage for the component
with regkey as KeyPath. We now handle registration of
run-from-source registry keypaths correctly.
98-05-07 malcolmh Fixed bug 4117: Source dialog persists despite
hitting Cancel
98-05-07 malcolmh Partially fixed bug 3983: Asserts when disconnected
from network. We no longer assert, and we allow a
retry, but we still get a storage.copyTo error at the
end of the install.
98-05-07 tracyf Added the ability for the Installer to detect, if an
out-of-disk-space condition is encountered, whether
there would be enough disk space to complete the
install if rollback were to be disabled. If so, the
author now has the option to prompt the user whether to
continue without rollback. Alternatively, the author
can specify that the Installer should silently
disable rollback and continue, or fail with the normal
out-of-disk-space error. Implementation of this
functionality involves two new properties (OutOfNoRbDiskSpace
and PROMPTROLLBACKCOST), and a new control event
(EnableRollback). TestDB has been updated to use these
new elements (see the ControlEvent table), and new
content describing them will be added to the help file.
98-05-06 malcolmh Fixed bug 5256: Need to make
MsiGetComponentFromDescriptor append args. For
MsiProvideComponentFromDescriptor we now quote the path and append the args. The
argsOffset is now always set to 0.
98-05-06 malcolmh Fixed bug 5295: We need to change from using
HKCU\{sid}. We now use RegOpenUserClassesRoot. This should
have no noticable external effect.
98-05-06 malcolmh Fixed bug 5332: Need to use new SHGet API that takes
a user token
98-05-06 andrewh 5193: UninstallString (s) no longer have the full
path attached to msiexec.exe: office installs from
network had their uninstall strings pointing to msiexec
on the network [when darwin was ran from source to
start the install] causing uninstalls to fail unless the
network installpoint was available
98-05-06 bench Fixed bug 4702: "Assert in engine.cpp when service
is not registered. Bad errors." If you run an
install as a service, then with the service not registered,
you will now recieve a nicer error message and no
asserts.
-----------------------------
Release 0.10.00.4106
-----------------------------
98-05-05 johndelo Bugs 5040,5028 Custom action ignore return flag (+64)
now also ignores execution errors or failure to load,
but does not ignore authoring errors or crashes. When
this flag is set, any errors are written to the log,
but the execution continues as if no error occurred.
98-05-05 johndelo Bug 4706: MsiSetExternUI now remembers the old message
filter and context when returning the previous handler.
When the old handler is passed back with 0 for the filter,
the cached values are restored. Old handlers may not be
called directly via the pointer, but may be restored by
passing it back to either the "A" or the "W" interface.
98-05-05 bench Fixed bug 5319. The Validation type for the
Shortcut.Name column (specified in the _Validation table)
was Text. This was changed to Filename. As a result,
if you currently have any shortcut names that are not
valid Filename's (aren't SFN|LFN for example) your
package will fail to validate.
98-05-05 mattwe MsiInfo: will now give an error message for invalid
integers, rather than setting a value of 0. (code review.)
98-05-05 mattwe Bug 5172: Services -- when a service fails to respond to a
control event, we will automatically retry for 30 seconds.
This will prevent most spurious errors from misbehaving
services.
Bug 4940: Services rollback -- When rolling back a service
that has a user name, a failure to re-install will not result
in a user error. We cannot recover the password for the
service, so the rest of the rollback should continue.
98-05-04 bench Fixed bug 3851 in which transform validation of
product versions was broken. This should work just fine
now.
98-05-04 malcolmh Fixed bug 5284: Application Error when
MsiAdvertiseScript(0, 0, 0, 0) is called.
98-05-04 malcolmh Fixed bugs:
5067: DOC:ixoSourceList opcodes parameters need to
be updated in msiauto.hlp.
5075: DOC: ixoProduct opcodes have parameters that
need to be added to msiauto.hlp.
4761: MsiProvideComponent(szProductCode, szFeature,
unknownComponentID, 0, 0, 0) returns
ERROR_INSTALL_FAILURE(1603) but actually installed
szFeature.
MsiProvideComponent and related functions now return
ERROR_UNKNOWN_COMPONENT if the specified component
is not in the specified feature.
4127: No way to trigger a launch condition based on
the install type (ADMIN, ADVERTISE, vs INSTALL). The
ACTION property is now set to the default action.
98-05-04 bench Fixed bug 5254: Added the ProductID property (with a
value of "none") to the template.msi property table.
Since the username and company are not registered
by the RegisterUser action if the ProductID property
is not set, the workaround to register these values
for packages without ProductID's is to set this
property to "none."
98-05-01 bench Fixed bug 3483: Files fail the scopes validation
error because they have the wrong file version format.
Validation now excepts file versions of the format
XXXX.XXXX.XXXX.XXXX where X is a digit.
98-05-01 bench Fixed bug 2160: BindImage, UpdateResource, etc.. may
not update installed file when old file is in use.
If an existing file is in use and we install the new file
to a temporary location, we will bind and update resources
in the temporary file.
98-05-01 eugend I've added the Arial10 font into TextStyle table and
the new DefaultUIFont
property - set to Arial10 - into Property table.
I've also changed the functionality
in CMsiControl::ProcessText to use the font specified
by the DefaultUIFont
property, if present and no other font has been
specified for a control.
If the DefaultUIProperty is not defined, the fonts
will be selected as they used to be.
98-05-01 bench Fixed bug 5128: RemoveIniFile.Directory_ field
should allow a property to be used.
The RemoveIniFile.Directory_ value need not be a
foreign key to the Directory table anymore. This is
similar to the RemoveFile.DirProperty column. The
column name may be changed in a future schema version
update. The _Validation table was also changed to
reflect this (no longer a foreign key column).
-----------------------------
Release 0.10.00.4030
-----------------------------
98-04-30 bench Fixed bug 4635: Fixed. We now honor the official
DisableRollback policy, and ignore the old "Disable"
value under HKLM\SW\MSFT\Windows\CV\Installer\Rollback.
98-04-29 tracyf Support for the old "Directory_Configurable" column
name in the Feature table has been removed. The
newer "Directory_" column name is now mandatory.
-----------------------------
Release 0.10.00.4028
-----------------------------
98-04-28 malcolmh Fixed bug 5241: Apps don't show in ARP. The bug was
in the UNICODE version of MsiEnumProducts.
-----------------------------
Release 0.10.00.4028
-----------------------------
98-04-27 malcolmh Fixed bug 4760: MsiProvideQualifiedComponent should
return ERROR_INDEX_ABSENT on unknown qualifier.
98-04-27 malcolmh Fixed bug 4045: MsiProvideComponentFromDescriptor
returns 1610 with valid DD, it should return
ERROR_UNKNOWN_PRODUCT(1605)
98-04-27 malcolmh Fixed bug 3476: MsiQueryProductState returns
INSTALLSTATE_ABSENT after MsiAdvertiseProduct.
We now return 4 possible states:
-INSTALLSTATE_UNKNOWN: the product is not advertised
or installed
-INSTALLSTATE_ADVERTISED: the product is advertised
but not installed
-INSTALLSTATE_DEFAULT: the product is installed for
the current user
-INSTALLSTATE_ABSENT: the product is installed for a
different user
98-04-24 bench Fixed bug 5173: MsiCollectUserInfo was completely
broken with various asserts and even an AV on NT. The
code behind this API was essentially re-written to
register the user information in a more direct way. It
should be much less error-prone now.
-----------------------------
Release 0.10.00.4024
-----------------------------
98-04-22 bench Fixed bug 4977/5202: MsiEnumProducts will return
ERROR_BAD_CONFIGURATION if a key name under
HKCR\Installer\Products is the wrong size. In particular, this
will catch product squids left over from older Darwin
installs.
98-04-22 mattwe 4806: specifying /l on the command now will
error if you don't specify a log file name.
Reviewed major chunks of services and environment
string handling in execute.cpp
98-04-22 bench Fixed bug 5184: MsiZap was not clearing the key
HKCU\Software\Classes\Installer, which exists on NT 5.
-----------------------------
Release 0.10.00.4021
-----------------------------
98-04-20 bench Fixed bug 4922: Upgrade fails to remove old product
information. This fix may have affected nested
installs, especially source list and client registration.
98-04-20 malcolmh Fixed bug 5032: machine assignment fails to install
98-04-20 malcolmh Fixed bug 4262: Cannot advertise an alpha package on
a x86 machine. MsiOpenPackage disables platform
validation. MsiAdvertiseProduct disables platform
validation when generating an advertise script.
98-04-20 mattwe 3944: Changed validation for Verb.Verb from Identifier
to Text. This matches the help file.
98-04-20 chetanp bugs 5145, 3568 - changed MsiEnumComponentQualifier
API to return exact Qualifier and AppData buffer
sizes in case or ERROR_MORE_DATA. NOTE: This function has
changed extensively.
98-04-17 bench Fixed bug 4519: Setup to create shortcuts in the
common group, not personal group. The fix was to include
all public properties that have been added or changed
from their persistent values to the Properties value in
the InProgress key. This ensures that all the options set
by the user during the first half of an install are used
after a reboot during the second half of the install.
-----------------------------
Release 0.10.00.4017
-----------------------------
98-04-17 chetanp fixed smoke test blockers - bugs 3597, 3640, 3697
-----------------------------
Release 0.10.00.4016
-----------------------------
98-04-15 mattwe 4776: Validation no longer complains repeatedly when a
column lacks a validation rule. It complains about
each column once per database, rather than once per row.
98-04-15 andrewh 5009 - Shortcuts to a path with multibyte characters
created wrong (TextSize->CharacterCount fix)
98-04-13 malcolmh Bug 4236: MsiServer methods no longer necessary/security
risk possibility
Automation changes:
- Server/Conman.ValidatePackage has been removed
- GetInProgressInstallInfo has been removed (it's now
an engine method that's not exposed through
automation)
- RunScript has moved from Server to Conman
98-04-13 malcolmh Bug 4237: IMsiServer interface method Reboot poses a
security risk
Reboot has been removed from the MsiServer
interface. It's now done in the Engine. If we're
running a managed app then we'll Reboot with
elevated permissions otherwise we'll reboot with
user permissions.
98-04-13 malcolmh Bug 4168: Transform: When launch from current dir,
transform causes assert without full path
We now prepend the current directory to transforms
that are specified via relative paths. This is
accomplished by passing a private CURRENTDIRECTORY property
from the client to the server.
98-04-13 malcolmh Bug 2275: mmode fails if cached db isn't found
We now go to the source to get a new cached
database if the cached one is missing.
-----------------------------
Release 0.10.00.4009
-----------------------------
98-04-09 johndelo Bug 5007: obsolete defines in msiquery.h, MSIMESSAGE_*
have been removed. Use INSTALLMESSAGE_* defines instead.
98-04-09 bench Bug 5012: we now use the full UNC path of msiexec in
the RunOnce key written by the ForceReboot action.
This was effecting the Office install where they run
Darwin from a network share and only install Darwin
after the reboot. If the connection was not restored
after reboot, the installation could not continue.
98-04-09 bench Bug 3676: we now continue logging after a reboot
caused by the ForceReboot action.
98-04-08 malcolmh Fixed bugs:
5011: We should use HKCU instead of HKU\SID
5006: ODBC failure when called from MSI service
Custom actions can now use HKCU directly instead
of using HKU\SID.
98-04-08 tracyf Fixed bug 4966. Fixing this required that the
Condition be processed BEFORE the installed states of
features and components are determined (see the bug
resolution for details). Thus, expressions in the
Condition table can no longer include references to the
installed states of features or components (even before
this fix, references to installed states won't work in
some instances anyway, for reasons related to the
bug). The docs will be updated to call out this
restriction.
-----------------------------
Release 0.10.00.4008
-----------------------------
98-04-07 bench Bug 4979. To help alleviate some of our timeout
problems but also allow us to track down these issues
easily, the following changes have been made:
1) the default timeout has increased from 20 to 60 seconds
2) a new policy value has been introduced to set the timeout value.
this value is "Timeout" (DWORD) under
HKLM\Software\Policies\Microsoft\Windows\Installer
and is the number of seconds that the "worker" thread can go
without pinging the UI before the "Installer not responding"
dialog is displayed.
-----------------------------
Release 0.10.00.4007
-----------------------------
98-04-07 bench Bug 4961: add Admin install capability to MsiSpy.
To facilitate this, all files (for both platforms) are
now copied to each image on \\united\darwin and
\\united\darrel.
98-04-06 mattwe Fixed part of 4944. Removed /o references from
command line help. TESTING! This is your second
relnotes note to remove /o from your tests.
The next build released will have debug asserts
enforcing this, and the next will have all support
for /o removed.
98-04-06 malcolmh Bumped script version due to bug 4962 changes.
98-04-06 malcolmh Fixed bug:
4962: Need to update ARP properties and values
Changed name:
PWNOMODIFY -> ARPNOMODIFY
PWNOREMOVE -> ARPNOREMOVE
SupportURL -> ARPHELPLINK
SupportPhone -> ARPHELPTELEPHONE
Added:
ARPAUTHORIZEDCDFPREFIX
ARPCOMMENTS
ARPCONTACT
ARPINSTALLLOCATION
ARPNOREPAIR
ARPREADME
ARPSIZE
ARPSYSTEMCOMPONENT
ARPURLINFOABOUT
ARPURLUPDATEINFO
The code now matches the registry spec.
98-04-06 mattwe Added IMPFAOW to latebind.h You can now use the IMPFAIL
semantic for AORW imports. Also modified WININET and
URLMON to be completely optional. (This wasn't quite
working before.)
-----------------------------
Release 0.10.00.4006
-----------------------------
98-04-06 bench added a third public header: msidefs.h. This
purpose of this file is to provide common data definitions
to custom actions and authoring environments (users
of msiquery.h). Currently this file contains the
definitions for all exposed properties and the various
values each integer column may contain. This file has
been dropped to the COMMON folder along with msi.h
and msiquery.h.
98-04-06 mattwe 4951. We now no longer attempt to set security on
backup file directories on REMOTE volumes. This
never worked, so the fix simply prevents the install
from failing.
-----------------------------
Release 0.10.00.4003
-----------------------------
98-04-03 tracyf For bug 2985, Darwin error codes and messages have
been totally revamped. Most messages that were
previously ship messages (i.e. appear in the Error table
and thus require localization) have been changed to
debug-only. Only those messages that present
understandable information to the average user have
remained as ship messages. In doing this, we've reduced
the number of messages in the Error table from 356 to 68.
98-04-03 mattwe 2823: New and improved command line parsing.
TESTING/DOCUMENTATION: all references to the /o
command line option should go away. The new method
is to specify PROPERTY=VALUE at any point in the
command line. To include spaces, use:
PROPERTY="VALUE VALUE". For including a quote
within a quoted string, use two quotes:
PROPERTY="QUOTE "" QUOTE". In a non-quoted string,
do not double quote. PROPERTY=QUOTE"QUOTE.
The /o flag has been left in place for the time
being to allow for backwards compatibility,
but will slowly go away. See here or SETUPSUP
for more details.
98-04-03 malcolmh Removed unused Regkey.RemoveSubKey method.
98-04-02 malcolmh Partial fix for bug:
2985: WORK ITEM: Fix error codes
The error codes in database.h, iconfig.h, regkey.h,
and services.h have changed.
98-04-02 malcolmh We now set the Timestamp field in the script header.
The time stamp is an integer value whose high-order
word is the DOS date, and low-order word is the DO
time.
98-04-02 malcolmh Fixed bug:
2126: Work item: Remove ProgMan support
This includes some opcodes, some services methods,
and some actions.
98-04-02 chetanp we now always shared dll refcount all files that go
to the system folder and doubly refcount any files
that exist in the system folder w/o a shared dll
refcount.
98-04-01 johndelo Changed GUID compression for registry data - Bug 4343
GUIDS now are stripped of punctuation and the bytes
are reordered low-to-high order for best performance.
GUIDS packed into MSI descriptors have not changed.
PackGUID and UnPackGUID functions in RunScript.exe
(as well as internal functions) now accept an enum
to designate the compression to use:
ipgFull = 0 - no compression, simply copies GUID
ipgPacked = 1 - reordered hex digits only, len=32
ipgCompressed = 2 - re-encoded text, len=20
Packed is used for reg data, Compressed for descriptors.
All MSI apps should be uninstalled before using this
build, to avoid leaving obsolete info in registry.
ShowMsi.vbs and RunScrpt.exe have been updated.
98-04-01 malcolmh Fixed bug:
4011: Msiexec /a should be remapped to mean "admin"
*** CHANGE TO MSIEXEC COMMAND-LINE FLAGS ***
- Admin installs (formerly /N) now use /A
- Advertising (formerly /A) now uses /J
98-04-01 malcolmh Fixed bugs: (NT5 app deployment)
4906: Forced uninstall of apps fails
4894: App Publishment installs into wrong user profile
98-04-01 bench The LanguageId property has been replaced by the
UserLanguageID and SystemLanguageID properties.
98-04-01 bench Replaced the VersionEngine and VersionServices
properties with a single VersionMsi property.
98-04-01 mattwe bug 4701, 4897 - Internet optimization of file://
protocol. Instead of caching the database now,
we use the standard practice of stripping the file://
part, and using the resultant path. WININET does
this in one of its APIs.
Also, we now handle the variety of forward/backslashes
that you should be familiar with in the shell.
98-04-01 chetanp bug 4830 - we now support "short uninstall". We now
have 2 separate flags for MsiAdvertiseScript -
SCRIPTFLAGS_REGDATA_APPINFO for application registry data
(OLE goop) and SCRIPTFLAGS_REGDATA_CNFGINFO for darwin
cnfg. data. The SCRIPTFLAGS enums have changed.
However we will be binary and source level compatible
with the older values for some time.
98-04-01 chetanp bug 4473 - we now place the SYSTEM ACL on the
published product key if we are called inproc
(MsiAdvertiseProduct) by the LocalSystem (by a service) or if we
are running as a service and we are called to
advertise a product by an admin.
-----------------------------
Release 0.10.00.4001
-----------------------------
98-03-31 tracyf In response to bug 4881, the REINSTALLMODE_REPAIR
bit (an argument to the MsiReinstallProduct and
MsiReinstallFeature API's) is now obsolete and is ignored.
The same goes for the 'r' option used on the command
line, and in the REINSTALLMODE property. The
reinstall options are now determined solely by the other
reinstall bits.
98-03-31 mattwe Bug #4898: Fixed FormatText for embedded nulls.
In a string to be formatted "foo[~]" the string
length should be 4, not 3, and includes two nulls
at the end. This should be the rebuild of 3931.
-----------------------------
Release 0.10.00.3931
-----------------------------
98-03-30 johndelo Updated GUIDS in TestDb, to vary the low order word.
Uninstall TestDb before using this build, unless you
want to test the component thrashing mechanism.
98-03-30 johndelo Support for actions run at successful execution termination
(commit). Custom action flag icaCommit added to permit
a custom action to execute on success, similar to rollback.
98-03-30 malcolmh Fixed bug:
4488: Nested Install in Testdb doesn't work on
NT4.0.
I didn't fix the original cause of this bug, but I
fixed the most recent cause which was an
impersonation problem. I changed our impersonation count to be
per-thread instead of per-process.
98-03-30 mattwe 4245: Validation skipping sequence tables.
We now validate all 6 sequencing tables, and have added
two new command line flags for the second option.
-seq validates only the sequence table
-seqall validates only the sequence tables, but does
not end after an error. The final result is not
reliable. However, you get to see all the errors in
one run.
I've also added _InstallValidate records for several
new actions added since sequencing was turned off,
and slightly tweaked the _Sequence table for
optional bits on RegisterMIME and RegisterExtensionInfo
98-03-30 bench Fixed bugs:
4212: No indicator Rollback is running.
4313: While resume installing is in progress,please let
the user know.
4469: Second install runs in no UI mode after rolling back
another product install.
All bugs dealt with the UI that is used during rollback and
rollback cleanup. Prior to this change, all progress for
rollback or cleanup was done using the basic UI. With recent
changes to our execution model (seperate UI thread, generating
script on server side) this stopped working. The problem was
that a UI interface was being created within the service for use
by the rollback processing, but the interface must be created on
the client side to operate correctly.
The fix is to use whatever UI the client side is currently using.
This wasn't done before because if the full UI was being used, it
may have had a cancel button or may not have had a progress bar.
These problems have been overcome by disabling the cancel button
on the full UI (we know which control is the cancel control because
the author specifies this) and we just assume that the dialog will
have a progress bar on it. Thus, if you are using full UI and
either need to rollback a suspended install or need to rollback the
current install, the full UI will be used to display the rollback
progress. This is a change from previous behaviour.
98-03-30 tracyf Added the internal-only MsiRegisterSysHandle,
MsiCloseSysHandle, and MsiCloseAllSysHandles functions.
These routines allow Darwin to clean up open system
handles (file handles, mutex handles, etc) in case of a
fatal error (out of memory, etc). Any handles that
are currently closed using WIN::CloseHandle should use
these routines instead.
98-03-27 malcolmh Fixed bug:
4294: LastUsedSource entries don't match spec
The LastUsed* values are now combined into one
value.
98-03-27 malcolmh Fixed bugs:
3799: Make sure all environment variables are
expanded in the context of the user
3987: Transform: Uninstall cannot apply transform
from local cache
4873: Assert in latebind.h when running on Windows 95
in CoSetProxyBlanket
-----------------------------
Release 0.10.00.3927
-----------------------------
98-03-26 chetanp bug 4826 - added the Extension.MIME_ column for the
Content Type associated with the Extension. This
allow us to have multiple Extensions point to the same
Content Type (previously this was not possible due to
the fact that we were gathering this association from
the MIME table)
98-03-26 chetanp bumped up script version to 16 due to changes in
the Extension registration opcodes
98-03-26 chetanp the Extension registration opcodes now take the associated
ContenType
98-03-26 mattwe !! DATABASE VERSION 0.27 !! Backwards compatible with 0.26
98-03-26 chetanp bug 4847 - disable timeouts for type library
registrations/ unregistrations
98-03-26 chetanp moved the SetODBCFolders action to after
CostFinalize since it uses the Component.Action column (created
only in CostInitialize) and the SetTargetPath
function of the directory manager
98-03-26 mattwe Added Class.RemoteName column. This is used for remote DCOM
servers. Validation suggestion: This is only valid for classes
whose context is RemoteServer32
98-03-26 mattwe Bug 4511: Added conditionalization for components for Class,
CreateFolder, Extension, PublishComponent, Typelib, Shortcut.
This affects schema and testdb. t-robmen is changing Spy.
98-03-26 mattwe Changed localiztion bits to NO-LOCALIZATION for Class.Argument
and Shortcut.Argument
98-03-26 davidmck Added code to services object to
SetErrorMode(SEM_FAILCRITICALERROS) and debug code to check in places
where we used to set it that it is correctly set.
We clear it before starting Services and before
starting a process to self-reg.
98-03-25 bench Fixed bugs:
3389: file properties are inconsistent and/or need to be updated
properties now consistent among shipping files and include
new name "Windows installer"
4384: In Basic UI window caption, Installer needs to have an
uppercase first character
Basic UI caption changed to just "Windows" and default text
in basic UI changed to "Please wait while Windows configures
[ProductName]."
98-03-25 malcolmh Fixed bugs:
4636: (NT5) Assignment not working for apps that has
shortcuts in a submenu under Programs
4474: (NT5) Assert in execute.cpp uninstalling
published/assigned app
4551: (NT5) Forced uninstall at winlogon when non admin
fails
4436: Sourcelist - Cannot install on demand from
browsed source (floppy)
4513: Feature Request: Need to implement
MsiQueryFeatureStateFromDescriptor
-----------------------------
Release 0.10.00.3924
-----------------------------
98-03-23 malcolmh Added 'N' option to msizap to allow Uninstall key to
be processed independent of other keys.
98-03-23 malcolmh Fixed bugs:
4832: Blank media label is allowed even when
multiple media tables entries are present
4763: Assert in Coreactn.cpp file installing Testcab
from floppy disks.
98-03-23 andrewh bug 4793: "Darwin 3727 does not evaluate the IE40
NT50 condition in
the InstallSequence table correctly", added an
internal action
"ResolveSource" to ensure SOURCEDIR is set which was
the
real problem, not the condition evalution
-----------------------------
Release 0.10.00.3920
-----------------------------
98-03-20 chetanp bug 4690: We now do not publish a Darwin Descriptor
if the corr. component is disabled (at advt time).
98-03-20 bench Bug 4789: InstMsi and CopyMsi no longer register
Darwin as an OLE server on Win9X. This is accomplished
by calling msiexec -d (which just registers the shell
verbs) instead of msiexec -regserver on that
plaform. Having Darwin act as an OLE server on Win9X is
unecessary and only degrades performance.
98-03-19 chetanp fixed bug 3606. We now use short file names for all
ole class server registration and always enquote our
extension servers
98-03-19 johndelo In quiet UI mode, the default response for the timeout
dialog ("Installer is not responding"), will be "Retry"
for the first 10 timeouts, after which it will be "Cancel".
Timeout has been disabled around the database copy op,
which was known to occasionally timeout.
98-03-19 johndelo Custom action type 34 has been changed (CustomAc.doc).
Target column for this EXE mode ONLY must contain the
complete path to the EXE along with the command arguments.
Properties may be embedded in the string, but it the
author's responsibility to quote the EXE path if needed.
Errors are not produced if the EXE cannot be created,
of if it returns non-zero and the return is not disabled.
98-03-19 tracyf Fixed bug 4491. To fix this one, I needed to add a new
"SpawnWaitDialog" control event. This event pops up the
dialog specified in the "Argument" column of the ControlEvent
table if the specified Condition is FALSE, and keeps the
dialog up for as long as the condition remains FALSE.
As soon as the condition evaluates to TRUE, the dialog
is automatically removed. For bug 4491, this is used
to pop up a "Please wait..." dialog if the user clicks
the "Install Now" button (or the "Next" or "Disk Cost"
buttons on the Selection dialog) before background
costing is complete.
Along with the new ControlEvent, a new property has also
been defined: "CostingComplete". Thus, the conditional
statement for the SpawnWaitDialog would be "CostingComplete
= 1".
The dialog specified for SpawnWaitDialog should have
only one active Control on it - a "Cancel" button. You'll
need to add an "ExitDialog" control event tied to this button,
with an argument of "Exit". This will allow your "Wait"
dialog to be cancelled without triggering any other event
tied to the button that spawned your "Wait" dialog.
See the Dialog, Control, and ControlEvent
tables of the latest TestDB.msi for an example.
98-03-19 bench Added the UserSID property, which is the string
representation of the user's security id. Only set on
NT. This property is useful for custom actions that
need to access registry keys under HKEY_CURRENT_USER.
When a custom action is executed in the installation
service, it may not access HKEY_CURRENT_USER
directly. Instead, it must open a key beneath HKEY_USERS.
The value of this property is the name of the key
under HKEY_USERS which may be used in place of
HKEY_CURRENT_USER.
98-03-19 tracyf Fixed bug 4491 - The DestName column of the MoveFile
table now supports short|long filename syntax.
98-03-19 chetanp bug 4745: Registry.Value column is now L0 inplace of
L255
-----------------------------
Release 0.10.00.3917
-----------------------------
98-03-16 johndelo Fixed bugs 4169,4569, many transform-related bugs.
Transforms now can be applied multiply to databases
opened read-only or read-write, with tables unloaded,
loaded, saved, or previous transformed. The format of
transforms files HAS BEEN CHANGED in order to fix the
many bugs, and now represents data in the same format
as the databae files (with considerable space saving).
Also the CLSID of the storage is now validated when
applying transforms and the previous format is rejected.
MsiTran.exe view transform mode temporarily supports
both the old and the new transform file format.
An extensive transform test checked in: TestTran.vbs
The API automation function GenerateTransform now
works in the database compare mode (no transform file),
returns a boolean indicating whether differences found.
98-03-16 malcolmh Fixed bug 4039: Darwin shows an unexpected
termination dialog when user error is on the screen.
1) Removed imtActionDone message.
2) Added log mode character 'f' to represent 'files
in use'. Log mode 'd' is now obsolete
3) Added imtResolveSource message
4) We now put up the source resolution dialog on the
client side, via the imtResolveSource message
5) We will now pass messages on to the Basic UI if
the handler returns imsNone
6) Changed imtCommonData's value
98-03-16 bench Renamed Version95 property to Version9X. We will
continue to set the Version95 property, but the
Version9X will be the only documented property.
-----------------------------
Release 0.10.00.3913
-----------------------------
98-03-12 chetanp fixed bug 4554 - nullable shellnew value now
supported
98-03-12 chetanp ffixed bugs 4597, 4662 - MsiAdvertiseScript with
fRemoveItems set to true now no longer creates a
separate "reverse" script. We now execute the same script
with a new special "reverse advt" flag. Affects the
MsiAdvertiseScript function and the advertise
operations.
98-03-12 davidmck Removed the SetCDInfo action from the code since it
didn't work and wasn't used.
98-03-12 tracyf Added several optimizations to costing: during
reinstall, costing is no longer performed for any activity
not involved in the reinstall (i.e. no file costing
is done when only re-registration is being
performed). We also now cost only those components actively
being modified (this is especially significant when
installing or reinstalling a small number of
features/components)
98-03-12 mattwe Bugs 4694, 4695: We now handle bogus slashes in
URLs by calling InternetCanonicalizeUrl.
IE handles URLs of the form http:\\ or http://,
and while backslashes are technically illegal,
they handle them. For Darwin, I could reject them,
but recognizing them is harder than calling an API
to fix them.
-----------------------------
Release 0.10.00.3910
-----------------------------
98-03-09 chetanp bug 4113, 4390 : we now skip the source resolution in
the component installed states determination and
component management logic. Made changes to the
GetComponentPAth fn in msinst.cpp and the class and
extension processing code (which was also previously
forcing source resolution during uninstall).
98-03-09 chetanp completed mreged nested installs support -
we impose the following restrictions on merged
nested installs -
1. a component can occur atmost once in the same
install (no sharing of components between products in a
single install).
2. no component in an install can be such that it
requires to thrash any other component in the same
install.
3. a product can occur at most once in the same
install. (no P1 has P2 and P3, and P2 has P3 as well,
kindof scenarios).
4. a product can install selective features of a
nested product. However during uninstall it has to invoke
the nested product with "REMOVE=ALL". This is needed
because we do not keep the clients of a product on a
per feature basis, but instead on the entire product
and the product needs to go away when the last
client wishes to do so (no feature of a child product can
be removed if there are more than one clients of the
product).
5. a child install will not appear in the add/remove
control panel list of products unless it has also
been installedstand-alone.
98-03-09 chetanp bumped up the script version to 15 due to addition of new
opcodes (see below) and change in ixoProductRegister/
ixoProductUnregister and ixoProductPublish/ ixoProductUnpublish.
98-03-09 chetanp added ixoProductPublishClient/ ixoProductUnpublishClient
opcodes to manage the clients for a product.
98-03-09 chetanp added ixoProductCPDisplayInfoRegister/
ixoProductCPDisplayInfoUnregister opcodes that control whether a
product appears in the add/remove control panel. These
opcodes are used only if the product is being
installed w/o a parent.
98-03-09 eugend I've fixed bugs # 3262, 2925, 2190 & 2939.
98-03-09 mattwe 4546: According to Malcolm, RemoveFile.FileName really should
be nullable. We changed this from nullable, to non-nullable during
a recent Scopes prompted schema clean-up...
4318: Modified InstallExecute sequencing for InstallServices
to be NT only. (Added Condition VersionNT)
4386: ServiceControl.Arguments validated as KeyFormatted. Already
coded that way. Still open, assigned to Doc.
4326: Removed a redundant InternetGoOnline in msiutil, and changed
the function to recognize URLs for cabinets in execute.
98-03-06 mattwe Bug 4470: In our rollback generation for services, we read the
value of service dependencies incorrectly, and corrupted the data.
On writing the rollback, the service couldn't be restarted, and
rollback would abort. The value should be value<null>value<null><null>
(double null terminated.)
-----------------------------
Release 0.10.00.3906
-----------------------------
98-03-05 bench Fixed bug 4332, which required significant changes to our
PID handling:
1) the PIDTemplate property is no longer unset after PID validation
2) the PRODUCTID property has been renamed to PIDKEY. This property
is no longer set to the full PID after validation
3) a new property, ProductID, is set to the full PID after validation.
If this property is not set, PID validation has not occurred.
4) PID validation is no longer performed implicitely in the CostInitialize
and RegisterUser actions. Rather it is performed in a new action -
ValidateProductID. This action should be sequenced both before the
UI wizard in InstallUISequence and before RegisterUser in
InstallExecuteSequence.
98-03-05 malcolmh Fixed bugs:
4207: Need to define which error msg's should
quietly be returned to the API caller
2493: Error opening installation log file in TEMP
directory, when TEMP directory is missing
4456: Handling multiple Help / Detect and Repair
98-03-05 bench Fixed bug 3379, allowing Validation to succeed even
if the _Validation tables references tables that
don't exist in the package. This will allow a package
with only a few tables to use the _Validation table as
is from schema.msi. As a result of this fix,
simple.msi and minimum.msi now use the _Validation table
from schema.msi.
98-03-05 eugend IMsiHandler::Terminate(bool fFatalExit) implemented
- it destroys all dialogs and
all bitmaps, icons, fonts and imagelists created in
the handler should a fatal error
occur. I've also modified the way
IMsiHandler::Terminate() is called in
MsiUIMessageContext::Terminate() (in
ENGINE\ACTION.CPP file).
98-03-04 davidmck Moved the flags for debug memory actions from the
DEBUGMEM environment variable to the _MSI_TEST
environment variable.
Currently implemented flags are:
A - check memory on alloc
F - check memory on free
I - no memory preflight init
K - keep memory allocations
M - log memory allocations
98-03-04 malcolmh Fixed bug 4477: Msi with extended use of conditional
components crashes Darwin.
98-03-04 malcolmh Added 'U' option to msizap. This allows removal of
only the %USERPROFILE%\MSI folder.
98-03-04 malcolmh Fixed bug 4462: Win95 API automation functions fail
if services not initialized. DEV: Changed g_fWindows,
g_fWin95 to g_fWin9X
98-03-03 bench This restriction has been in place for a while (ever
since script generation was performed on server
side) but I don't think it has been explicitely stated.
All Directory marked as "configurable" in the Feature
table must have names in ALL CAPS. This is required
so that if these folders are changed through the UI
on the client side, the new values may be passed
across to the server side as public properties. I have
fixed TestDb to conform to this restriction.
-----------------------------
Release 0.10.00.3903
-----------------------------
98-03-02 mattwe Bugs:
3776 Inconsistent nullable flags was causing build
failures in Office now that Scopes is checking.
There was another dupe on this topic.
4339 Service being started multiple times.
After a bunch o' checking, it turns out that really
all that was happening is that we had the message
issuing from inside a wait loop. That's cleaned up
and now you'll only get one message per start.
4430 Vital Services flag.
I chose 0x8000 0000 as a flag in the ServiceInstall
table to mark a service as vital. This overlaps
with the Bad Integer value, so that's been changed
to 0x8000 instead. I've checked with the only
client, and cleared it past them not to bump the
DB version.
4432 Exposed automation for GetSelfRelativeSD for testing.
98-03-02 malcolmh Fixed bugs 3547 (Remove 'run script' option /~ from
msiexec) and 4434 (CoInitialize before doing
selfreg/unreg).
-----------------------------
Release 0.10.00.3827
-----------------------------
98-02-26 chetanp The REsource table schema has changed. The key is
now made up of the File_, ResType and ResId columns
98-02-26 eugend Fixed Rich Edit related bugs # 4086 & 2854,
international lang. bugs # 3892,
2945, 3447, 4400 and bug # 4303 - I've modified
CONTROLS.CPP in order
to fix the last 5 ones.
98-02-25 bench Added new syntax for Directory.DefaultDir column:
[targetname]:[sourcename]
If the value contains a ':', the string before the ':' is
used during target path directory resolution and the string
after the ':' is used during source path resolution (or target
path resolution during admin installs).
This is useful for specifying different source and target folder
names. Also, in addition with the '.' syntax, this can be used
to add levels to either the source or target paths for a single
directory. For example:
TARGETDIR [blank] SOURCEDIR
MyAppDir TARGETDIR MyApp
Bin MyAppDir Bin
Binx86Dir BinDir .:x86
BinAlphaDir BinDir .:Alpha
will give you target paths of
MyAppDir: [TARGETDIR]MyApp\
Bin: [TARGETDIR]MyApp\Bin\
Binx86Dir: [TARGETDIR]MyApp\Bin\
BinAlphaDir: [TARGETDIR]MyApp\Bin\
and source paths of
MyAppDir: [SOURCEDIR]MyApp\
Bin: [SOURCEDIR]MyApp\Bin\
Binx86Dir: [SOURCEDIR]MyApp\Bin\x86\
BinAlphaDir: [SOURCEDIR]MyApp\Bin\Alpha\
98-02-25 bench The NOUI property has changed to LIMITUI, since the property just
limits the UI to basic and doesn't really turn off the UI. NOUI
will still be supported for some time.
98-02-25 davidmck Added src\install\darreg.txt. This contains all the
data needed to register darwin files at install time
without running msiexec /REGSERVER.
98-02-24 malcolmh Fixed bugs 4323, 4334. Msizap now ignores the
SERVICE_DOES_NOT_EXIST error and delete folders and files
regardless of their attributes.
98-02-24 malcolmh Fixed bug 4340. Added WINAPI to INSTALLUI_HANDLER
prototype.
98-02-24 malcolmh Fixed Bug 4373. ERROR_INSTALL_TRANFORM FAILURE is
now ERROR_INSTALL_TRANSFORM_FAILURE.
-----------------------------
Release 0.10.00.3818
-----------------------------
98-02-18 malcolmh Added the PWNOMODIFY and PWNOREMOVE properties.
These properties prevent us from writing certain values
under the Uninstall key, to disable ARP and
ProgramsWizard functionality. See the properties spec
(http://officeweb/specs/TCO/DarwinProperties.html) for full
details.
98-02-17 malcolmh If you do msiexec /x without explicitly setting a UI
level you'll now get a prompt to confirm that you
really want to uninstall.
As /x is what the context menu uses, you'll see
this prompt when you right-click on a Darwin package and
choose Uninstall.
This does NOT affect any of the following:
- Calls through any Darwin API
- MSI.DLL
- Msiexec /x when you specify /q, /qn, /qb, /qr, or /qf
98-02-17 chetanp The MIME.Extension_ column is now non-nullable.
removed the CreateProgmanItems and RemoveProgmanItems
actions from template installexecutesequence table
added SelfUnregModules action to template
installexecutesequence table
-----------------------------
Release 0.10.00.3817
-----------------------------
98-02-17 chetanp schema changes -
1. The ProgMan table has been removed
2. Following column sizes/ attributes are
Class.Argument S255 L255 (localizable)
DrLocator.Parent s32 S32 (nullable)
DrLocator.Path s255 S255 (nullable)
IniLocator.FileName s96 s255 (size change)
RegLocator.Key s80 s255 (size change)
RegLocator.Name S50 S255 (size change)
RemoveIniLocator.FileName s96 l255 (localizable +
size change)
RemoveIniLocator.Section s96 l96 (localizable)
RemoveIniLocator.Key s128 l128 (localizable)
RemoveIniLocator.Value S255 L255 (localizable)
Shortcut.Arguments S255 L255 (localizable)
Verb.Command S255 L255 (localizable)
Verb.Argument S255 L255 (localizable)
3. a @ in the DrLocator.Path column no longer
evaluates to <null>.
98-02-16 tracyf Cleaned up the basic UI: it's now got an icon,
better looking font, and a simplified "Please wait..."
message instead of action specific names and data (we
still log all ActionData).
-----------------------------
Release 0.10.00.3813
-----------------------------
98-02-12 bench Fixed the custom action flags to work correctly with
our new sequencing model. Our new flags are the following:
(the bit names may change, the values will remain the same)
(note: the first to flags only make sense for CAs duplicated
in both sequence tables)
icaFirstSequence (256) : CA run in first sequence we execute
CA in UI sequence: run whenever UI sequence is run
CA in Execute sequence: run only if UI sequence wasn't run
(as in basic or no UI)
icaOncePerProcess (512) : CA run once per engine process
(there are potentially two engine processes on NT,
one for the client running the UI sequence and one
for the server running the Execute sequence. On 95,
there is only one process running both sequences)
CA in UI sequence: run whenever UI sequence is run
CA in Execute sequence: run if in server, or in client
if basic or no UI.
icaClientOnly (768) : CA is run in client only if
connected to a server.
CA in UI sequence: run only when in the client or connected
to the server (basically only run on NT with full/reduced
UI)
CA in Execute sequence: never run
NOTE: I am unclear to the benefit of this type of CA, but
this was supported before so it is still supported.
icaInScript (1024) : same as before, only run in execution
script. As such, this only makes sense for CAs in the
ExecuteSequence table.
icaRollback (256) : same as before, only used if icaInScript is set
icaNoImpersonate (2048) : do not impersonate the user. Should work
with all custom action types, not just icaInScript CAs as before
98-02-11 eugend I've replaced the CMsiMaskedEdit control with the
one provided by a-jhark
(this control is used only for PID number).
I've fixed bug # 3679 - the cursor doesn't move on
its own within edit
controls now.
98-02-11 davidmck Replaced the ClearVolumeCache function in services
with ClearAllCaches so the volume and record caches
are cleared.
98-02-11 t-robmen Added (-x) flag to MsiDB.exe. This flag will allow
you to extract a file/table out of a specfied
database.
ex: msidb.exe -dtestdb.msi -xBinary
(extracts the Binary table from the testdb.msi into a
file named Binary in you current drive)
NOTE: This flag will NOT extract storages (aka: nested msi's)
98-02-11 bench Added MSPATCHC.dll to the TOOLS folder on
\\united\darwin. This is required by msipat.dll.
-----------------------------
Release 0.10.00.3811
-----------------------------
98-02-11 bench Patch table: added Attributes column - a bit field
for various patch attributes. Also moved the
Patch.Sequence column to the set of primary keys to allow
multiple patches for the same file. These schema
changes are merged in with the previous changes for version
26.
98-02-11 bench MSPATCH: changed the dropped dll from mspatch.dll to
mspatcha.dll. The new dll contains only the patch
application apis, whereas the old dll also contained
the patch creation apis. The new dll is of course
smaller. The new dll replaces the old in the COMMON
drop folder and in the files installed by instmsi.exe
and copymsi.exe.
98-02-11 bench Added new API: MsiCreateTransformSummaryInfo, which
creates and populates the summary information stream
of an existing transform file. This api correctly
fills in the properties with the base and reference
ProductCode and ProductVersion properties, which has
been broken for a while. Also, the
MsiDatabaseGenerateTransform api and MsiDatabase.GenerateTransform
methods no longer create the suminfo for a transform.
Updated MsiTran.exe to use the new api.
-----------------------------
Release 0.10.00.3810
-----------------------------
98-02-10 malcolmh URL source lists are now implemented.
98-02-10 malcolmh The minimum and maximum database versions have been
bumped. This means that your package must conform
to version 26.
98-02-10 malcolmh The new dual-sequence table model is in place. We
now have a UI sequence and an Execute sequence for each
of the top-level actions (Install, Admin,
Advertise). Changes to your package are required. See
my mail for details.
98-02-09 t-robmen Added (-k) flag to MsiDB.exe. This flag will allow
you to kill (remove) a file/table/storage inside a
specfied database.
ex: msidb.exe -dtestdb.msi -kBinary (removes
the Binary table from
the testdb.msi)
98-02-09 bench Implemented change to "transaction model." Transactions are
defined as the changes that may be committed and not rolled
back should an error occur. The new model is thus:
InstallValidate - check disk space/files in use
NestedInstall - outside parent transaction - failure
of parent won't roll back
InstallInitialize - mark start of transaction, lock server
NestedInstall - merged with parent's transaction
InstallFinalize - run script and unlock server
NestedInstall - outside parent transaction - failure
won't rollback parent install
Note that InstallInitialize is a new action. ExecuteFinalize is
renamed to InstallFinalize.
98-02-09 bench Fixed several problems with concurrent installs. We now detect
when an in-progress install is still running and don't ask the
user to rollback the install. If a running in-progress install
is found and there is UI, a retry/cancel dialog is displayed.
If no UI, ERROR_INSTALL_ALREADY_RUNNING is returned.
98-02-09 bench The question of whether to rollback a cancelled or failed
install is now handled in an error message, whereas before
it was authored into the final exit dialog. To keep this
behaviour optional, the ALLOWSUSPEND property must be set
for this question to be asked. If this property is not set,
rollback is always performed after a cancel or failed install.
98-02-09 davidmck Improved handler speed by adding AttributeEx
function which takes an enum rather than the string when we
know what we want.
Made the ProcessText function virtual so the rich
edit control could overload it. Improves the speed of
the rich edit control since we did all the work and
then threw it away before.
98-02-08 johndelo Removed Localize column from _Validation table. The
localizable attribute appears in the schema definitions.
98-02-08 johndelo ODBC: Removed Feature column from all table and
script opcodes. Advertised via PublishComponent table.
Attribute values are now nullable.
98-02-08 johndelo Updated headers to reflect change of message type
imtDiagnostic to imtFilesInUse (see relnotes 1/31).
Msi.h now uses INSTALLMESSAGE_FILESINUSE, and log
modes supplied via MsiExec and automation use the
letter 'f' for files in use messages.
98-02-08 bench Fixed the rollback of nested installs (that are
merged in the parent's execution script). In the
process, the ixoProductRestore operation was removed.
ixoProductInfo with no arguments has taken its place.
Bumped the script version to 13 as a result.
98-02-08 malcolmh Added args to msizap to make it less dangerous.
98-02-08 bench Added Upgrade table and Upgrade actions to
schema.msi and template.msi. Since the Upgrade table is not
populated, the actions currently do nothing.
98-02-08 bench Added MIGRATE property and MigrateFeatureSettings
action. The property is a ';'-delimited list of
product codes from which to migrate feature settings. This
property is set in the FindRelatedProducts action
and when applying a patch. The action sets the feature
states for the current install to the states of the
features in the existing products. It is assumed
that the features of the existing products have the same
names as the features of the installed product.
98-02-08 malcolmh The non-DBCS versions of MsiString.Compare and
MsiString.Extract now support embedded nulls. Embedded
nulls are treated like any other character.
98-02-08 malcolmh Fix for bug 3214 -- spit out ixoChangeMedia before
ixoDatabaseCache.
98-02-08 malcolmh Fixed bug 3983 -- assert when disconnecting network
card.
98-01-26 malcolmh Darwin now creates a mutex named "__MsiPromptForCD"
when promping the user for a disk during source
resolution. This is what we already do when prompting
the user to change disks during an install.
98-02-08 malcolmh For single disk installs the volume label in the
media table no longer has to match the actual volume
label of the media.
98-02-08 malcolmh Source management for redist packs (and nested
installs in general) is done. The nested install will use
its parents to find an available source, and will
also use its own sourcelist if it has been installed as
a top-level install. Added SourceProduct arg to
IxoSourceListRegisterLastUsed. Added ChildPackagePath,
ChildDiskId, and Parent to IxoProductPublish &
IxoProductUnpublish. Bumped script version.
98-02-08 malcolmh Consolidated exception handling. All exception
handling is now done in our unhandled exception handler
which is installed by the global message context
object. It is at this point that we generate the exception
message. In DEBUG builds we log the exception info
message to the debug log and display the message. In
both builds we'll write the message to the log if
logging is enabled, and we'll write the message to the
event log. The amount of exception information that we
gather is less in the ship build than in the debug
build. Also, we currently have a problem displaying the
correct symbol names for exceptions that occur in the
service.
98-02-08 mattwe ODBC: Added rollback for translators, drivers, driver
manager and data sources.
CMsiRegKey::ValueExists(), fixed a case that could result
in either a memory leak or a over-released error record.
98-02-07 chetanp schema change - SelfReg table no longer has
RegisterFn and UnregisterFn columns. We now only support the
default (DllRegisterServer and DllUnregisterServer)
98-02-07 chetanp selfreg action is now run as a separate process. we
use the capabilities of msiexec to selfreg. we call
msiexec as a customaction in execute
-----------------------------
Release 0.10.00.3807
-----------------------------
98-02-07 mattwe DATABASE VERSION 0.25. Minimum unchanged.
Internet download: Now does cabinets on a "as-needed"
basis. Basically, if you never need a file from the
cabinet, the cabinet won't get downloaded. You can now
put *any* source under a URL, and install as if from
any other source. (i.e. you can copy testdb into a web
site.)
Services: Added "vital" flag to ServiceInstall.ErrorControl.
Add 0x8000 0000 to the value, and the if the service
fails to install, you won't be provided with an ignore.
Note that the "old" mechanism is used if the vital isn't
set. (So you may not see an ignore even if vital isn't set.)
The flag won't be read (even if set,) on 0.24 and older
databases. We'll strip it and do the expected thing.
InitRegKey: fixed memory leaks for keys that couldn't
be opened due to access denied. It's now more stringent
about failing the install.
LockPermissions table: changed LockPermissions.Permissions
from a text field to a binary. <= 0.24 database will still
be read as a string. 0.25 and later are expected to be
binary.
TestDb: modified LockPermissions table to include
full control for administrators for all settings. Devs
now should have no problem doing full installs, as long
as you're an administrator. (So please unghost it.)
-----------------------------
Release 0.10.00.3806
-----------------------------
98-02-06 t-robmen MsiDb.exe NEW features. You can now:
o (-a) Add files (usually cabinets) directly into a
darwin database
o (-r) Add storages (usually nested darwin databases)
directy into a darwin database
o Do merges, do transforms, and the above two
options simply by specifiy a target database with (-d) AND
a source database with one of the following flags:
(-m), (-t), (-a), (-r)
NOTE: The target database MUST exist before using the last NEW feature.
Use (-c) if the database does NOT exist yet.
The (-?) option reflects the additions.
98-02-06 t-robmen Added FileSize and FileVersion to Installer OLE
Automation.
-----------------------------
Release 0.10.00.3805
-----------------------------
98-02-05 johndelo IMsiDatabase::GetTableState has been exposed, and will
soon replace FindTable, which can no longer be supported.
For internal automation, there is a TableState property.
FindTable will supported for this release only, to allow
tests to be converted to use (Get)TableState, which allows
a particular attibute of the table to be queried. See
MsiAuto.hlp, or itsEnum in database.h.
98-02-05 malcolmh Created MSIZAP.EXE. This is a more robust replacement
for clearreg. ** TESTING: this should be dropped instead
of clearreg. Clearreg doesn't work any more. MsiZap
does a more thorough job of cleaning your system. BE SURE
to do a msizap /? to see what it does before you run
it. Currently it's an all-or-nothing zap. If there's a need
to be more granular let me know.
98-02-05 malcolmh Our policies are now located in their final resting spot, in:
(HKCU/HKLM)\Software\Policies\Microsoft\Windows\Installer
98-02-05 malcolmh Implemented some new and changed policies:
- We now respect the policy values AlwaysInstallElevated,
DisableMsi, and DisableBrowse. For details on these see the
Policies, SourceList, and Security specs. In short:
- If both the user and machine AlwaysInstallElevated policies
are set then, unless we're disabled, we'll install all apps
elevated.
- DisableMsi can be set such that we won't install unmanaged
packages, or so that we'll refuse to install any package.
- DisableBrowse replaces EnableBrowse, so that we default
to allowing browsing from the source dialog.
98-02-05 malcolmh Implemented the Security spec:
- We create a key named "Secure" under our
HKLM\Sw\Ms\Win\CV\Installer key so that we won't ever
think the key is empty and therefore won't ever delete it.
- We now ACL (secure) our registry keys and files. For a
full description see the security design doc on http://jdelo3.
In short, we put an ACL on %WINDIR%\MSI, X:\config.msi,
%USERPROFILE%\Msi, our "publish" reg keys, and our local machine
reg keys.
- We ACL OLE goop for assigned apps.
- Our ACL gives SYSTEM full control and everyone else Read
access. To delete our ACL'd keys & files you must be an admin
and you must first take ownership of the key or file and
then give yourself delete access. Or you can use MsiZap.
- We now use the %WINDIR%\Msi directory as our TEMP dir
for any secure temp files.
- We should now be storing any temp file created while we're in
the server should in a secure location. If you have an NTFS drive
and are able to delete or change any of our temp files (rollback
scripts, install scripts, temp patching files, custom action DLLs
& EXEs, temp cached database) then something's broken.
- We now support an "Impersonated" mode. In this mode we'll
impersonate during the entire install, except when we
need to access our keys and files. For these we temporarily
revert to SYSTEM privileges. This necessitated identifying
all possible locations where we were accessing secure files
and adding the Elevate call. If I've missed any places you'll
see errors like "could not write reg key blah" or "access
denied writing file blah". We will operate in this mode unless
policy directs us to do otherwise.
- Here's the logic we use to determine whether we Elevate,
Impersonate, or Frustrate. Elevate mode is what we always
used to do when the service was registered; you pretty much
have free reign on the system. Impersonate mode is described
above. And if we must reject the installation then we're sure
to Frustrate the user...
IF DisableMsi policy == 2 THEN
Frustrate
ELSE IF the app is assigned THEN
Elevate
ELSE
IF DisableMsi policy == 1 THEN
Frustrate
ELSE IF (user & machine elevate policies == 1) THEN
Elevate
ELSE
Impersonate
FI
FI
- We now determine whether an app is Assigned or not by looking
at the ACL on the published product key and seeing whether
SYSTEM is the owner. If so, then the app is assigned. This implies
that we only ACL the published product key if the app is
Assigned.
- DEV: GetTempPath is now hard to call, as we really should be using
a secure location for most of our temp files. If you see a !!!
compiler errorthat you don't understand, it's probably this.
- Our service now ACLs some keys and files when it starts:
* HKLM\Software\Microsoft\Windows\CurrentVersion\Installer
* HKLM\Software\Microsoft\Windows\CurrentVersion\Installer\Secure
* %WINDIR%\Msi
- We only apply ACLs when we can. You won't get any ACLs on Win95 and
you won't see any ACLs on files or folders on your FAT drive.
- Added optional AdminAssigned arg to ixoProductInfo opcode. This
arg is simply a placeholder, and can be set to any value. The
ixoProductInfo operation will fill in the correct value.
98-02-04 chetanp enhanced component sharing and thrashing support to
accomodate nested merged installs. added global
component table to communicate the component client state
transitions. we now recalculate the component
installed and action states in ProcessComponents action.
98-02-04 tracyf Enhanced costing to support the removal of old files
via the RemoveFile table when the same file(s) will
also be installed via the File table. Without this
support, the RemoveFile costing was subtracting the
cost of removing the file, while the InstallFile
costing was also subtracting the cost of the existing file
(not knowing it was going to be removed by another
action). Now, InstallFiles costing knows if another
action is removing a file it is going to install, and
if so, reacts as if the existing file is not there
(i.e. no version checking, and it ignores the size of
the existing file).
98-02-03 bench Upgrades/Patching: Fixed several problems, mostly to
allow patches or upgrades that change the product
code. Also added the ability for an upgrade to remove
any obsolete patches.
98-02-02 davidmck Enhanched MSIEXEC /REGSERVER to see if msi.dll was
registered to handle the proxy code and if not, call
DllRegisterServer() in msi.dll.
98-02-02 t-robmen When an open database handle is passed to the
OpenPackage, Dawin now correctly sets the running path.
Also, UIPreview of a database is now internally
specified by iuiNextEnum in engine.cpp and msiquery.cpp
98-02-02 t-robmen Added FileSize and FileVersion info to runscrpt.cpp
98-02-02 eugend Fixed bugs # 1525, 2736 - CMsiText control formats
strings that contain a path or a registry key before
displaying
them. Fixed bug # 3244 - If there are no items in
CSelectionTree control, it empties text in other
controls and
disables buttons. I've added SelectionNoItems
control event and three new events into EventMapping.idt
table.
98-02-02 mattwe Note: I am NOT adding this to TestDB until it has
passed a round or two of testing. It mucks with
system settings which can pretty well hose you.
New optional table: Environment
Documentation forthcoming. Basically, you describe
names and values for environment variables.
New optional actions: RemoveEnvironmentStrings,
WriteEnvironmentStrings. Basically just the uninstall
and install placeholders.
New opcode: ixoUpdateEnvironmentStrings
Same opcode for 95 and NT. The AutoExecPath is only
used on 95, however. It should point at the location
where the AutoExec lives. The WIN95_ENVIRONMENT_TEST
property can be set to override this value to protect
your system.
On NT, this opcode modifies the registry directly.
On 95, it rewrites the autoexec.bat file.
98-02-02 mattwe DB Version 0.24. Backwardly compatible with 0.23.
See services below for schema change.
Services: Added ServiceInstall.Arguments column. It's
completely optional until such time as we move the mininum
database version to 24. This column allows you to provide
startup arguments to a service. They're passed in to the
WinMain at every start, as opposed to per-start arguments in
the ServiceControl table. (Per-start means each requestor
can pass different arguments.) Bug/feature request #3919
98-01-31 tracyf When InstallValidate detects an out-of-disk-space
condition, it now sends a message of the
imtOutOfDiskSpace type to the Message facility (instead of a
generic imtError message). The record accompanying the
message contains a string holding the path to the
out-of-space disk in field [2], the required space in field
[3], and the available space on that volume in field [4].
This allows an external Handler to intercept and process the
message as it sees fit.
98-01-31 tracyf Added the imtFilesInUse message type (the unused imtDiagnostic
type has been replaced). Now, instead of calling
DoAction("FilesInUse") from InstallValidate, the imtFilesInUse
message is sent through the MsiEngine::Message facility
instead. The record sent with the Message(imtFilesInUse, riRec)
call describes all modules currently in use whose associated
file needs to be replaced. The record contains two strings
for each module - the first containing the module name, and the
second containing the title of the module's main window. The
MsiHandler has been modified to accept this message and display
the same "FilesInUse" dialog it did before. Any external
Handler can process the message as it sees fit. This change
was necessary because the previous mechanism of adding rows
to the Listbox table from within InstallValidate breaks when
running nested installs, since the current engine and the
Handler may be reading/writing separate databases.
98-01-31 tracyf NT Event logging has been improved. On either
successful completion of an install, or termination due
to a fatal error, a single event is now written to the
Event log. The event text consists of the name of the
product, and either an "install operation successful"
message, or the full text of the error message resulting
from the fatal error. Note: for the Event Log text to be
formatted properly, msi.dll must be registered in the
Registry as a source of Event Log messages, under the
System\\CurrentControlSet\\Services\\EventLog\\Application\\MsiInstaller"
key. This registration is performed automatically when
DllRegisterServer is called on msi.dll.
-----------------------------
Release 0.10.00.3730
-----------------------------
98-01-30 johndelo MsiEnableLog now interprets a NULL log file path as
disable logging, in which case the logmode is
ignored. If a path is supplied, then the logmode must not be
zero. There were 5 nearly duplicate bugs related to
this.
98-01-30 johndelo To enable registraton of internal COM interfaces for
automation, the environment variable _MSI_TEST must
be set to a string containing the letter 'R'. By
default only the public API automation interface and the
custom marshalling code is registered. Temporarily
regmsi.exe sets this environment variable until tests
are fixed up. Using regsvr32 or direct call to DLL
will required the environment variable to be set for
internal automation registration. Other test options are
forthcoming.
98-01-28 mattwe Services: added disable/enable timeout wrappers.
For the most part, the service control manager (SCM)
has its own timeouts that will kick back to us.
98-01-28 mattwe Services: Fixed dependent services bugs. Two things
were hoked, one due to the complexity of the test case,
and another from misread documentation.
Reminder: The ServiceInstall.Dependencies column is a
list of service *names*, like the ones in ServiceInstall.Name
or ServiceControl.Name. Each name should be separated by
[~] (null), and the list should end with [~][~] double null.
98-01-28 davidmck Changed the interface between client and server from
using IDispatch to using IDL files and doing the RPC
calls directly.
This is a performance improvement.
98-01-28 mattwe Script: new opcode ixoStreamAdd. Bumped script version to 11.
This allows a stream to be added to a file. The last parameter
is an IMsiStream object, with the data. This does not rollback,
similarly to ixoStreamsRemove, as it is only used by the
admin database copy.
Property: Added AdminProperties (IPROPNAME_ADMIN_PROPERTIES)
This contains a ';' delimited list of properties that should
be saved for post-admin installs. This can include lower
or upper case (external) properties.
Network installs: during a network install, the properties
listed in AdminProperties are saved to a separate UNICODE
stream called AdminProperties in the destination storage.
Post admin install: property resolution now has an
intermediate step where properties from the admin install
override values in the database. These values, in turn,
are still overriden by the command line.
-----------------------------
Release 0.10.00.3727
-----------------------------
98-01-26 johndelo Timeout logic in the UI thread changed to provide
frequent (currently 50 msec) ticks which are
sent to the UI handlers to pump their messages,
eliminating some lockups and display failures.
After a given number of ticks (currently 20 seconds)
the timeout error is displayed allowing the user
to retry or cancel (except if in the debugger).
This timeout is disabled when running customs actions,
as they can't be assured of sending progress messages.
98-01-26 johndelo MsiCloseAllHandles is fixed to close only handles
allocated by the calling thread (not those used by
the engine, automation, or other custom actions).
MsiCloseHandle must be called in the thread where
the handle was obtained. An assert is now given
where this fails, but will be changed to an error.
98-01-26 bench We no longer register package codes under a
"Packages" key. Package codes are now only stored under the
appropriate product key. This change was made to
avoid the complications of merging the Packages key on
NT5.
98-01-26 bench Added new reinstallmode: REINSTALLMODE_PACKAGE, or
'v'. This mode ensures the source package is used and
cached, even if a cached package exists. This will
be used to reinstall from network images that have
been updated with patches that don't change the product
code.
98-01-26 t-robmen Modified MsiSpy to use MsiGetComponentPath instead
of MsiGetComponentLocation.
Removed references to INSTALLSTATE_DEFAULT as a
returned value.
OLE Automation:
o Added productCode to GetFileInfo and Query Component State
o Use GetComponentPath instead of GetComponentLocation
(in the near future GetComponentLocation will be removed)
98-01-26 mattwe TestDb: modified the TestDB service to uninstall
as expected, as well as not to be deleted during an
install if it already exists. (It used to delete it,
and then install it fresh. Now it just re-configures
what is already there.)
98-01-26 mattwe Rollback: Registry keys and files/folders will now
preserve security settings during a remove/rollback.
98-01-26 mattwe Services: you can now "re-configure" pre-existing
services on a machine, which includes re-installation.
Additional: Bug #4016, #3645
98-01-26 tracyf Darwin now creates a mutex named "__MsiPromptForCD"
when promping the user to change disks (the mutex is
closed after the user inserts a new disk, clicks OK
and Darwin has verified the disk label of the new
disk, or the user cancels). This allows CD autorun
applications to determine whether or not to run (or
disable UI).
98-01-26 tracyf New SelectionManager change/feature: If the user
applies a patch to an install, such that any feature
currently installed RunFromSource now references one
or more files that need to be patched, that feature will
be forced out of the RunFromSource state. This is
done by defaulting the action state of the feature to
Advertised, and disallowing RunFromSource as a
possible install state.
98-01-26 tracyf The DiskPrompt message displayed when Darwin needs
the user to insert a new disk has changed. It is now
built by treating the imsgPromptForDisk error string,
combined with the DiskPrompt property, as a
template, and using the DiskPrompt column of the Media table
as an argument for the template. A topic is being
added to the documentation to explain how this works
(see bug 4031).
98-01-26 johndelo Custom actions will now handle the various execution models.
Actions before InstallValidate will be sequenced twice if
full UI is used and the service is registered. Mode bits have
been defined to determine whether the action runs on the
client or server or both. This required changing the bit
values for deferred exection and rollback (need to add 768
if the type value was > 256). CustomAc.doc has been updated
(on \\JDELO3\MsiDoc and \\XLWEB2\DarwinDoc). TestDB updated.
98-01-26 johndelo Release notes for 1997 have been archived in RELNOT97.txt
-----------------------------
Release 0.10.00.3722
-----------------------------
98-01-21 johndelo INSTALLMESSAGE_OUTOFMEMORY replaced by INSTALLMESSAGE_FATALEXIT
encompassing out of memory, not responding, and premature termination.
New messages are defined in the Error table for each of these:
imsgTimeRemaining 16 "Time remaining: {[1] min }[2] sec"
imsgOutOfMemory 17 "Out of memory. Shutdown other applications before retrying"
imsgTimedOut 18 "Installer is no longer responding"
imsgException 19 "Installer terminated prematurely"
These messages are cached by the UI handler in case fatal exit
98-01-21 johndelo New message types may be requested by the external message handler:
INSTALLMESSAGE_INITIALIZE = 0x0C000000L, // sent prior to UI initialization, no string data
INSTALLMESSAGE_TERMINATE = 0x0D000000L, // sent after UI termination, no string data
INSTALLMESSAGE_SHOWDIALOG = 0x0E000000L, // sent prior to display of authored dialog or wizard
The SHOWDIALOG message passes the name of the action. If this message is handled
(i.e. doesn't return 0) then the UI dialog or wizard will not be called.
98-01-21 johndelo The UI handling of all types and logging is now handled outside
the engine in its own thread, which is the caller's thread when
using the install APIs, but which is a child thread when using
MsiOpenProduct and MsiOpenPackage and the session API functions.
The UI thread is shared by all engines/installs for the session.
The UI will time out if the engine thread fails to respond, in
which case a dialog will be displayed (if not debugging). Out of
memory will result in a dialog which allows a retry as well.
Premature termination (i.e. crash) is not handled silently in
this build. All three failures will result in an error return to
the caller, but the resource cleanup is not implemented in this build.
98-01-21 malcolmh DEV: g_fIsService has been changed to
g_scServerContext. This will be set to scService if we're running
as a OLE service, scServer if we're running as an OLE
server, and scClient in other cases.
98-01-21 bench Moved the location of the UpgradeCode information in
the registry. We no longer register the UpgradeCode
under the advertised product key. I have added an
UpgradeCodes key under the Installer key in HKLM.
Each upgrade code has a key under that, and has a value
for each product with that upgrade code. Removed the
UpgradeCode arg from ixoProductPublish/Unpublish and
added it to ixoProductRegister/Unregister. Bumped
script version to 10 as a result.
98-01-20 t-robmen Modified msispy.cpp and msispyu.cpp to clean up
major MSIHANDLE leaks (now use PMSIHANDLEs and no longer
use static MSIHANDLEs in Enum functions)
Also removed MsiCloseAllHandles() from ~CMsispy which
was crashing any OLE Automation attempted. MsiSpy
OLE Automation should work without crashing now.
98-01-20 mattwe CMsiRegKey: Removed the security descriptors from
CMsiRegKey.Create() Now, place the security descriptor
in the CreateChild() call. This allows the registry
key to get set either from the explicit Create, or
the implicit AddValue. If specified, this will allow
overwriting the security of an existing key.
Note: The CreateChild() without a security descriptor
will *not* inherit the parent's descriptor.
-----------------------------
Release 0.10.00.3720
-----------------------------
98-01-18 bench Added 3 new properties which can be queried with
MsiGetProductInfo: INSTALLPROPERTY_PACKAGECODE,
INSTALLPROPERTY_UPGRADECODE and INSTALLPROPERTY_VERSION. All
are advertised properties.
98-01-18 malcolmh We now display progress when copying our database to
the TEMP directory during first-run. We show
progress both when copying from a floppy and when doing an
internet download.
98-01-18 malcolmh If you send a "Master Reset" event to the basic UI's
progress bar, we reset the progress bar UI.
Previously the UI was reset only upon receipt of a subsequent
progress report.
98-01-17 malcolmh Moved appending of ".msi" or ".msp" from the API to
msiexec.exe. You have to pass the real file name to
the API now, but you can leave off the ".msi" or
".msp" when using msiexec.
98-01-17 malcolmh Changed our DebugString function to prepend "MSI: " to
debug messages if we're running on the client side,
and "MSI (s): " if we're running in the server.
98-01-17 malcolmh We now generate install scripts in the server. Our new
model allows for three possible configurations:
1) The entire install is run in the client space; we
never connect to the server.
We do this when the server is not registered. We'll
probably eventually always do this on Win95.
2) The entire intall is run on the server.
We do this when the UI level is Basic or None. In
this case the only thing running on the client side
is the Basic UI.
3) We run part of the install on the client and part on
the server.
We do this when we can connect to the server and the
UI level is reduced or full. In this case when a
sequence is run we process all actions through
InstallValidate on the client side. We then shift
to the server and run all actions from the beginning
of the sequence through ExecuteFinalize. We then
shift back to the client and run all actions after
ExecuteFinalize.
When we're running in this configuration certain
actions behave differently, and we skip all UI
actions. What we do differently when we're on the
server side:
- We don't cost.
- We don't do appsearch (NYI)
- We do a quicker CCP check (NYI)
- We don't reboot; the reboot status is
propagated back to the client side, which
will trigger the reboot.
As usual, I print out debug strings indicating when
we switch to the server and when we switch back in case
you're curious.
98-01-17 malcolmh Added reboot handling for child installs. The child
propagates its reboot status to the parent. The
parent will treat a child's reboot status just as it does
it's own. If a child returns saying it wants to
reboot now then the parent will reboot now, otherwise the
parent will wait until it's done and then reboot.
TESTING: I mucked with the code for reboot handling
and suspended installs. Regressions is advised.
98-01-17 malcolmh Automation changes: Added MsiConman.DoInstall.
Changed return value for MsiEngine.Terminate to an
iesEnum. See help file for details.
98-01-16 bench Added support for the UpgradeCode property. The
UpgradeCode is a guid that represents a set of products.
This property isn't used anywhere yet but if it is
defined in the Property table it is registered in the
product's advertised information. Added the
UpgradeCode to ixoProductPublish and ixoProductUnpublish and
bumped the script version to 9 as a result.
98-01-16 tracyf To prevent bug 3885 from locking up the install
process, the palette switching code in the Handler has
been temporarily disabled. As soon as the palette bug
is resolved, this code will be turned back on. Until
the true bug is fixed, the side effect will be that
bitmaps rendered in Darwin dialogs may be drawn with
improper colors, if any other application changes the
standard system palette.
98-01-16 tracyf Implemented detection of components containing files
that are either patchable or compressed in the source
image. Any component containing files fitting these
categories are now prevented from being installed
RunFromSource (i.e. the SelectionManager's GetFeatureValidStates
routine will never return icaBitSource for these components).
98-01-16 mattwe Fixed admin installs to NOT install services or
place security descriptors.
98-01-16 mattwe Updated ServiceControl.Events to support Uninstall
only actions. Now, to install/uninstall a service,
you use the ServiceInstall table, and add an entry
to the ServiceControl table to delete it during
uninstall. This gives you full control over
services outside your install as well.
98-01-16 tracyf In an effort to give *Sequence table merging a
fighting chance, all built-in Darwin actions have been
given "recommended" sequence values, as demonstrated
in the new versions of template.msi and testdb.msi
(see the InstallSequence, AdvtSequence, and
AdminSequence tables). The convention to be documented
for authors is that Darwin reserves all numbers that are
multiples of 10 for built-in actions (the standard actions
have been renumbered using increments of 100, and any new
build-in actions in the future will be inserted in the
appropriate place using values such as 140, 850, etc).
Authors should use these values for all standard actions,
and numbers ending in non-zero digits for custom actions
(again, see testdb.msi for examples of custom action
sequencing). If these conventions are followed for all
products intending to merge databases, all sequence tables
should merge together without problems.
-----------------------------
Release 0.10.00.3716
-----------------------------
98-01-15 bench Added the ixoDatabasePatch script operation for use in admin
install patching. The script version was bumped to 8 to
accomodate this addition.
98-01-15 bench Added support for patching admin installs. To patch an admin
install you may either
1) call msiexec.exe /p [patch package path] /n [admin database path]
2) call MsiApplyPatch(szPatch,szAdminDb,eNetworkImage,szCmdLine)
98-01-15 bench Added two arguments to MsiApplyPatch: szProduct and eInstallType.
These two arguments describe the product to be patched.
eInstallType defines the type of install
(network, local, advertised) and szProduct defines
the product code/descriptor/package path for the product.
Currently only the patching of network installs is supported.
98-01-15 bench Changed the package code (was product code) summary
information values for each released database
(testdb, schema, simple, msispy, etc..) to remove the
product version. This data is curently ignored by Darwin.
98-01-14 chetanp In order to allow the author to make permanent
components that do not have a file as their key path, the
"permanent" bit has been shifted to the
Component.Attributes column (the icaPermanent bit). We no longer
honour the iffPermanent bit from the File.Attributes
column for component permanency from the database
versions 23 onwards (we still honour the bit if you are
running an older database with the latest darwin).
98-01-14 chetanp The RunFromSource columns in Feature and Component
tables are now renamed to Attributes. This required
the database version to be bumped to 23. However we
still run with the old databases.
98-01-14 chetanp Changed SharedDll refcounting scheme for locally
installed component with key files.
Previously we used to refcount the key file of every
locally installed component (which has a file as the
key path) with the Shared Dll registry to ensure
sharing with non-darwin installations. This leads to
bloating of the registry since most of the components are
actually private to the product.
Now -
1. Whenever darwin installs a component locally, we
check to see if the key file of the component is
refcounted in the Shared Dll registry. If, yes we
increment the refcount to include ourselves (, otherwise we
do not refcount the component). We also make note of
whether we have refcounted the component (using a
special token within the key path registered in the
Darwin configuration information).
2. Whenever the product wishes to uninstall a local
component, we check if we have registered the
component in the Shared Dll registry. If yes, we decrement
the Shared Dll registry refcount for the key file. If
the refcount for the key file is greater then zero,
then we do not uninstall the component.
3. The above strategy breaks in the scenario where a
component is installed by Darwin, then by a
non-darwin installation and then the non-darwin installation
uninstalls. This will uninstall the component, since
there is no refcount for the Darwin install. This will
break the Darwin installed product (unless it is
using JIT and Darwin where we would simply reinstall the
component). To overcome this problem Darwin
provides the author with the "icaSharedDllRefCount" bit in
the Component.Attributes (RunFromSource) column. If
the author sets this bit for a component Darwin will
always refcount the component with the Shared Dll
registry irrespective of any existing recount.
98-01-14 malcolmh The FileName column of the RemoveFile table is now
nullable.
98-01-14 malcolmh Changed args to Conman.Registerfolder and
conman.IsFolderRemovable. See help/typelib for details.
98-01-14 malcolmh IxoFolderCreate and IxoFolderRemove no longer take a
component code. Instead they take a bool indicating
whether the folder is foreign (i.e. explicitly
authored to be created/removed). Bumped the script version.
98-01-14 t-robmen Created different _Summary.idt files for each type
of msispy.mis build possible [ship,debug,alpha] that
correctly reflect build type
-----------------------------
Release 0.10.00.3714
-----------------------------
98-01-14 t-robmen Discovered that some files were named incorrectly or
missing from %DARWIN%\src\tools\spy\idt
Removed: ActionText.idt, Directoy.idt, Extension.idt,
TestStyle.idt, Error.idt
Added: _Summary.idt, ActionTe.idt, AdvtSequ.idt,
ControlC.idt, ControlE.idt, Director.idt, EventMap.idt,
Extensio.idt, InstallS.idt, PublishC.idt,
RadioBut.idt, TextStyl.idt
98-01-13 malcolmh Fixed view object to support IS NULL and IS NOT NULL
on object fields.
98-01-13 malcolmh The RemoveFiles action now support removing
author-specific folders. These folders are specified in the
RemoveFiles table, just like files are, but with a
NULL FileName. The author-specific folders are removed
after the removal of author-specific files, and after
removal of the files installed by InstallFiles. A
folder is only removed if it is empty. The RemoveFiles
actions triggers the folder removal by generating an
ixoFolderRemove opcode.
98-01-13 malcolmh I think the full UI should work now. I've removed
GetComponentPath from the IMsiServer interface. It's
now a global function. I've re-enabled running the UI
in a separate thread. TESTING: GetComponentPath is no
longer a method of MsiServer or MsiConfigurationManager.
-----------------------------
Release 0.10.00.3713
-----------------------------
98-01-13 johndelo Separate UI thread logic is disabled in this build only,
to allow fullUI with the service. However, problems will
exist with nested installs and custom actions. This has
been fixed and all will be operational in the next build.
98-01-12 johndelo Full UI does not work with the service registered for
this build, due to RPC problems. The UI runs in a single
thread which allows UI from nested installs and custom
actions but currently gives problems when the handler
calls to the engine which then does RPC to the service.
98-01-12 mattwe Internet download: Modified volume and path
objects with minimal URL support. These are meant to be
sources, not destinations, so most APIs will return
errors with a URL volume. Automation forthcoming for
new methods. Modem support and progress/cancel coming.
You can now specify a URL on the command line for a
package to install.
Example: msiexec /i
http://phoenix.csc.calpoly.edu/~mwetmore/testdb/testdb.msi
(Try it, it works! Currently only the "typical" install
source is actually up on that server.)
Should see no net change to functionality to non URL paths.
TESTING: watch those path/volume tests/benchmarks, please.
98-01-12 malcolmh Fixed bug 3814. Transforms are again being cached in
the user profile.
98-01-12 malcolmh Fixed bugs 3847, 3861, 3863, 3864, 3865. These were
all regressions caused by recent code changes, mostly
related to SQUIDs.
98-01-12 malcolmh Fixed bug 3829. The Engine.Initialize automation function
now defaults to iuiBasic if you don't specify a UI level
98-01-12 t-robmen Modified %DARWIN%\src\makefile to build
%DARWIN\data\msispy.msi - x86 ship
%DARWIN\data\msispyd.msi - x86 debug
%DARWIN\data\msispya.msi - alpha ship
98-01-12 tracyf Changed the name of the Directory_Configurable
column in the Feature table to "Directory_" (the old name
will still work for a while).
98-01-12 bench Updated MsiTran.Exe to accept validation bits used
to validate transforms before applying them. See
command line help for more info.
98-01-12 t-robmen Added %DARWIN%\src\tools\spy\idt directory and
subdirectories.
The included files are used to create the
installation database for MsiSpy (msispy.msi)
during the build process
98-01-12 bench Added support for a "package code" or rather allowing
a different guid in the summary info of a package than
the product code. The guid in the package is now the
"package code" and may not necessarily equal the product
code. Also, the product version is no longer appended to the
guid in the summary info. We now register the "package code"
under HKCR\Installer\Packages and for each product
register the code of the package the product was
installed from.
98-01-12 bench fixed bugs 3850-3852. We now properly handle validating
transforms that change the product code and product version.
-----------------------------
Release 0.10.00.3709
-----------------------------
98-01-08 johndelo Logging can be specified only via MsiEnableLog.
(MsiExec /L simply uses this API). The properties
LOGFILE and LOGMODE are no longer supported.
Logging is per-process, independent of the
particular package or engine instance. Provided
logging is enabled, the property LOGACTION allows a
particular set of actions to be logged for a product.
98-01-08 chetanp fixed Darwin bug (3803) that registers run-from
source file in the Shared Dll registry.
98-01-08 chetanp changed ixfFeaturePublish/ ixfFeatureUnpublish
opcode to have a separate Absent flag.
98-01-08 chetanp implemented GUID squishing. We now store all
(internal) Darwin GUIDs - Product Ids, Component Id, Patch
Id, Qualified Component Ids, and the GUIDs in Darwin
Descriptors as SQUIDs (GUIDs squished to 20
characters) in the registry. Though this should not affect any
of the API tests, this would mean that test/tool that
itself looks around for Darwin GUIDs in the registry
would fail. Use the RunScrpt.exe tool to Pack and Unpack
GUIDs via script, using the PackGuid and UnpackGuid functions.
98-01-08 malcolmh Implemented TransformsAtSource. Transforms are not
cached, but assumed to be at the source, if any of the
following conditions are true: 1) you set the
TRANSFORMSATSOURCE property, 2) you specify an '@' at the
beginning of your list of transforms, or 3) when
executing the script we see that you have a
TransformsAtSource policy value set to 1.
98-01-08 malcolmh msiexec /P is now used to invoke a patch. msiexec /I
is now used to install. /X and /I will now accept
product codes, making the previous /T and /C obsolete.
/T is now used for transforms and /C has been
removed.
98-01-08 malcolmh The /A (Advertise) parameter to msiexec now takes a
Transforms list and a lanGuage, specified with the /T
and /G switches, respectively.
98-01-07 bench Renamed the AdminInstallFinalize action to
InstallAdminPackage. This is because the action should
come before InstallFiles, so we didn't want to give the
notion that the action should "finalize" anything.
The AdminInstallFinalize action will stay around for 30 days
and currently just calls the InstallAdminPackage action.
Also updated testdb.msi, template.msi, etc...
98-01-06 malcolmh Added /L as a switch to msiexec. This sets the log mode
by calling MsiEnableLog. Syntax: /L[<logmodes>] <log file>
98-01-06 malcolmh Added INSTALLPROPERTY_VOLUMEPREFERENCE to the list
of properties exposed by MsiGetProductInfo.
98-01-06 malcolmh The product code in the summary info stream *must* match
the one in the property table or you won't be able
to run maintenance mode. This will remain true until
we introduce the notion of a "package code".
98-01-06 malcolmh The script version has been bumped to 6 as a result of
source management opcodes changes.
98-01-06 malcolmh We now cache an MSI to the temp dir whenever we realize
that the database we're running from isn't the cached db
for the product.
98-01-06 malcolmh (dev concern only) IPROPNAME_ORIGINALDATABASE now contains
the launched-from database in maintenance-mode if there is
one (previously it contained the cached db).
98-01-06 malcolmh MsiGetComponentPath now returns the actual
installstate for installed components (INSTALLSTATE_LOCAL/SOURCE)
instead of INSTALLSTATE_DEFAULT.
98-01-06 malcolmh Removed 'advertise' section from validation and changed msival
accordingly. The schema's _InstallSequence table has been changed
to reflect this.
98-01-06 malcolmh The minimum disk ID in the media table has been changed from 0
to 1. Validation has been updated to reflect this.
98-01-06 malcolmh Moved PublishProduct, PublishComponents, PublishFeatures,
RegisterProduct to just before ExecuteFinalize.
98-01-06 malcolmh The DiskPrompt property is now used as a template. For each disk
the prompt from the media table is inserted into the DiskPrompt
property's [1] parameter. The result is used in the
"Please insert..." string that's in the error table.
98-01-06 malcolmh Source management:
- The UI's RFS icons now represent the actual source type
during first-run and the type of the LastUsedSource in
maintenance-mode.
- We now publish the source list only when we publish
the product (i.e. at advertise time or first-run if
no advertisement has taken place)
- When we publish the source list we also now attempt
to divine the media package path for the MSI at this
time if we're running from media and the
MediaPackagePath property is not set.
- When we publish the source list we implictly add the
source you're running from as a source for the product.
- If we're not advertising then we if we've resolved the
source (i.e. SOURCEDIR is set) then we set the resolved
source as the Last Used source for the product.
- We bypass source resolution if we're not running from
the cached database. This is because the source we've been
launched from has be a valid source, so we use it.
- Run-from-source components are now source resilient. We'll
find a valid source for them whenever their path is need.
We cache the most recent source in-memory, and we try
this source first, followed by the raw LastUsedSource,
before we fall back to our standard source resolution mechanism.
- The ixfSourceListMediaPublish opcode has been removed. Its
functionality is now in ixfSourceListPublish.
- The ixfSourceListRegisterLastUsed opcode has been added.
See msiauto.hlp.
- The ixfSourceListPublish opcode's arguments have changed
to accommodate media sources. See msiauto.hlp.
98-01-06 malcolmh ixfDatabaseCache now first removes any existing cached package
for the product before it caching the one given to it.
98-01-06 malcolmh Component registration changes:
- We no longer have an explicit state key for the component
state. We now derive this from the key file format.
- Run-from-source component format for key files and folders
has changed. We now store two digits followed by the relative
path of the component from the root of the source. The
two digits indicate the disk ID of the disk containing files
for this component.
- The component format for registry keys has changed.
We now store two digits followed by a colon followed by the
subkey. The two digits indicate the hive. For run-from-source
components we offset the hive by 50. For example,
CLASSES_ROOT, which is 0, would be stored as "00" for a local
component and "50" for a run-from-source component. We remove
the offset when returning the regkey.
- conman.RegisterComponent now takes a disk ID
- ixfComponentRegister now takes a disk ID
98-01-06 malcolmh Source management: changes were made in the way we
register sources:
- Under the SourceList key:
- the LastUsedSource value now has a trailing
backslash
- we now have a LastUsedIndex and LastUsedType
- Under the Net key
- we now use numbers instead of letters for
the indexes
- we now store a single form of net paths (no
more drive letter & UNC form)
- Under the Media key
- we now have a DiskPrompt value
-----------------------------
Release 0.10.00.3706
-----------------------------
98-01-05 bench Added UNICODE Darwin to \\united\darwin drops. The following
folders were added which contain the same files as their
ANSI counterparts:
DEBUGW
SHIPW
SHIPSYMW
LEGOW
98-01-02 chetanp Added support for registering and managing disabled
components in Darwin.
Following is the description of Darwin's behaviour in
handling disabled components.
1. A Darwin component gets disabled when the
corresponding Component.Condition column evaluates to
FALSE.
2. A disabled component is registered with the
configuration manager with an empty path and a state of
INSTALLSTATE_NOTUSED (which is defined as a negative
value in the INSTALLSTATE enum) when a feature that
contains that component is selected for install.
3. A feature is published with all the components it
comprises of, irrespective of whether the individual
components are enabled or not. This allows a feature
list to be independant of the machine, since the
result of evaluating the Component.Condition column may
vary from machine to machine.
4. The MsiQueryFeatureState API treats any
constituent disabled components (in state INSTALLSTATE_NOTUSED)
the same as INSTALLSTATE_LOCAL. This allows the
feature state to be determined by the install states of
enabled components.
5. The MsiGetComponentPath API returns the true
install state (INSTALLSTATE_NOTUSED) for a disabled
component.
6. The MsiProvideComponent, effectively ignores all
disabled components (of that or the parent features)
unless it is requesting a disabled component itself,
in which case the return is an error -
ERROR_INSTALL_NOTUSED.