Darwin Setup Development Notes for Testing Releases ----------------------------- Release 1.1.1209 ----------------------------- 99-12-09 eugend Fixed bug # 9909: the latebinding functionality got extended as not to attempt to load again a DLL it couldn't load on the first attempt. 99-12-09 eugend Fixed OEM bugs # 9931 & 9959. In the fix to 9959 I've replaced calls to GetFileAttributes with GetFileAttributesEx which is faster. 9919 addresses all other speed optimizations. See spec at http://dartools/dardev/Specs/OEM%20Fast%20Install.htm for the list. ----------------------------- Release 1.1.1029.1 ----------------------------- 99-11-30 mattwe Bug 10209: If the system Environment key in NT contains blank REG_EXPAND_SZ values, they'll be deleted by running instmsi/copymsi 99-11-30 mattwe Bug 10258: InstMsi/CopyMsi will silently succeed on Windows 2000 and later versions of the non-9X operating systems. 99-11-29 cnapier Fixed bug 10275. SDK. Changed hardwired product code used by msival2.exe to new product code (see bug 10002). Dropped release of msival2_100 from SDK. ----------------------------- Release 1.1.1029.1 ----------------------------- 99-11-23 cgouge Bug 12049. The GetTokenInformation call on NT4 TSE was failing when trying to grab the Session Id out of the impersonation token on NT4 TSE. WE now bypass that codepath because we don't support remote session installs on NT4 anyway. 99-11-21 bench Rebased msi.dll, msihnd.dll and msimsg.dll to avoid conflicts with Office10 files. New base will only apply for downlevel systems, as the NT build lab automatically bases these files in the system range. # # bases - our address range for downlevel systems # (reserved for us by the Office team) is 0x24400000-0x248FFFFF # # msi.dll : 0x24400000 - 0x246A0000 (approx. 2,750,000) # msihnd.dll : 0x246A0000 - 0x247A0000 (approx. 1,050,000) # msimsg.dll : 0x247A0000 - 0x248FFFFF (approx. 1,440,000) # # 99-11-19 cnapier Fixed bug 10259. SDK. Readme.txt date changed to December 1999. Redist.txt changed to reference 1.1 redistributables. ProductVersion in Property table changed to 1.1 99-11-12 cnapier Updated wimakcab.vbs to be able to generate a DDF on the fly with a sourcepath that contains spaces. Furthermore, fixed intelmsi.bat to be able to handle a release location with spaces when generating the SDK msi's. 99-11-09 eugend Fixed bug # 10199: I've checked in the latest RichEdit binaries: - RICHED20.DLL ver. 5.30.22.2300 - got it from - MSLS31.DLL ver. 3.10.337.0 - got it from GHeino - USP10.DLL ver. 1.325.2145.1 - got it from build 2714 fre.wks of NT. 99-11-08 cnapier Fixed bug 10201. Validation: ICE66. Warning of new functionality only output if column of table (with new schema) actually present in database. 99-11-02 cnapier Fixed bug 10175. MakeSDK.bat file for generating 1.1 SDK. Takes 3 arguments: %1 = release share target (placed in x86 directory that is created if not exist), %2 = MSI release build (instmsi.exe), %3 = TOOLS release build. Finally calls intelmsi.bat to create the msi's for the SDK. To test on own machine, you can set the COPYBLDSERVER and COPYBLDSHARE environment variables. Finally, the product and package code guids for the 1.1 SDK package have changed (as per arrangement with bug 10002). Note: we never register the SDK since we never call RegisterProduct in our sequence table. 99-11-01 cnapier Fixed bug 10002. Changed package and product codes for msival2.msi, orca.msi and msispy.msi (our SDK packages). Added a file to %DARWIN%\data called msipkgs.log which logs the product, package, and upgrade codes of our SDK packages from 1.0 SDK to the current SDK. This also lists the new GUID, {8FC7****-88A0-4b41-82B8-8905D4AA904C}, which we will use for subsequent SDK packages. 99-11-01 cnapier Fixed bug 10176. Validation. ICE73 (new). Verifies that your package does not reuse Windows Installer SDK packages package, product, and upgrade codes. The new GUID range for subsequent installer SDK packages (1.1 and on) is {8FC7****-88A0-4b41-82B8-8905D4AA904C}. ----------------------------- Release 1.1.1029 ----------------------------- 99-10-29 cgouge Bug 10185. Added missing StopImpersonating() call at the end of the CustomEXE thread which would throw off impersonation counts on future threads with the same ThreadID. 99-10-28 cnapier Fixed bug 10177. SDK. Added msiloc.cpp to SDK. The .cpp file as well as the msiloc.txt file (a readme) will be included with the other sample source files. 99-10-28 cnapier Fixed bug 10133. Msizap. Now removes a product's published component information from the components' keys in per user, per user managed, and per machine locations. The affected options of msizap are T and O. (RemoveAll unaffected since it deltrees the registry keys). ----------------------------- Release 1.1.1028 ----------------------------- 99-10-27 chetanp fixed bug 10167 - cleanup of orphaned disabled feature registration in roaming profile for "managed" user apps. 99-10-27 mattwe Bug 10164: LocalSystem or Local Administrators can now own managed app keys, instead of just system. 99-10-27 cnapier Fixed bug 9962. Fixed pullsdk.bat so that it did not copy over the ship bits for instmsi* since these are not the released bits (the lego versions). Also fixed pullsdk.bat so that msi.h and msi.lib were the public headers and libs and not our private ones. Previously we copied over the private header and lib to the SDK folder on united\darwin\darwin.rel\%build%. 99-10-27 cgouge Bug 10173. Deferred elevated custom actions in non-managed installs would be impersonated but not run through the CA server. This resulted in a non-elevated app gaining system rights if the custom action could bypass the thread token. 99-10-27 cnapier Fixed bug 10050. alpha removed from the SDK folder. The x86 had already been ALPHA-clean. The fix here was to change copybld.bat so that it would not call pullsdk.bat if the platform was Alpha. 99-10-27 cgouge Bug 10150. Script actions are now run through the custom action server to prevent spawned child processes from gaining elevated rights. 99-10-27 mattwe Bug 8218: We no longer clobber the policy settings in instmsi. We now only clobber them via service startup if not owned by the appropriate people. (That code is old, the instmsi is the only current change) 99-10-27 cgouge Bug 9899. Fixed ANSI orca validation problem when using qualified component CUB file, plus problem with orca installer that led to bad validation COM registration 99-10-27 cgouge Bug 9710. MergeMod.Dll. We no longer require the MSI sequence table schema in the module if the corresponding module table is empty and we are not generating any directory actions for that MSI sequence table. 99-10-26 cnapier Fixed bug 10092. Msiinfo handling of codepage validation updated to ignore the case where the property doesn't exist in the property stream (VT_EMPTY returned). This was added because internally Darwin supports this where it defaults to codepage neutral (0) if the PID_CODEPAGE property doesn't exist. 99-10-26 cgouge Bug 9894. Added a select subset of standard ICE validators to the merge module CUB file. These validators apply equally to modules and full databases. 99-10-22 cnapier Fixed bug 10143. Validation. ICE06. Changed error message so that arguments are correct (column goes with column, table goes with table). ----------------------------- Release 1.1.1022.1 ----------------------------- 99-10-22 eugend I revisited the checkin for bug # 10131: several screen-readers expect the text in the STATIC control that precedes an EDIT control to end in ':' so I've changed the functionality to append ':' to the text MaskEdit control serves the screen-readers. ----------------------------- Release 1.1.1021 ----------------------------- 99-10-21 mattwe 9718: The SFC dll will no longer be loaded on Win9X. 99-10-21 cgouge Fixed bug 10130. Exe custom actions on TS. STARTUPINFO.lpDesktop is now set to Winsta0\Default (instead of NULL) so that together with the TS sessionID, the UI is placed on the visible desktop of the appropriate session. 99-10-21 eugend Fixed bug # 10131: MaskedEdit control is now sensitive to screen readers. 99-10-20 cnapier Fixed bug 10096. Validation (MM). ICEM10. Verifies that a merge module does not contain disallowed properties. (Dev note: Disallowed properties are listed in the _Disallowed table stored in the mergemod.cub file). 99-10-19 cnapier Fixed bug 10091. Validation: ICE12. ICE12 can now validate type 35 and type 51 custom actions that also specify scheduling options (like TypeFirstSequence). 99-10-19 cnapier Fixed bug 10092. Msiinfo now will only set the codepage (/c option) of the summary information stream if the system supports the codepage supplied. Furthermore, the summary information strings are only displayed if the system supports the codepage of the summary information stream (this is only on a NT/W2K system...no such verification is done on Win9X since no translation from ANSI to WIDE occurs on Win9X platforms). 99-10-18 cnapier Fixed bug 10095. Schemalog.txt which is NOW SCHEMA.LOG (for 8.3 filename verification) has been updated. It includes the listing of tables, columns added since schema 100 (upto schema 110) plus any columns whose attributes changed within that time period. Additionally, the SDK msi was modified so as to pass the full validation suite. 99-10-18 cnapier Fixed bugs 9962 and 10050. 9962 dealt with the inclusion of the SDK drop in our regular builds. It was fixed, but made the assumption of pulling everything from the United\Darwin\...\Public folder, which is the folder that it now replaces. PullSdk.bat now picks up everything from the places that it can find the files at. 10050: ALPHA removed from SDK (directly). This basically means that msispy.msi no longer has ALPHA support. NONE of the msispy alpha files are dropped in the SDK or in msispy now (the ALPHA features, etc. have been removed as well). Furthermore, msispy only contains the SHIP version of the resource DLLs, however they are tied to a separate feature so are still available when installing the debug features (DEBUG=1 on msiexec command line) for msispy or installing the "ship/x86" features. 99-10-18 cnapier Fixed bug 9866. Resource DLL's for msispy (spyjpn.dll, spyenu.dll, spyara.dll, and spydeu.dll) now have versions. All msispy DLL's now track MSI version. Msispy's file table is now authored correctly (updated during build process by reading from spycab.ddf although msispy files are not actually cabbed). For resources to work with the resource DLL's, msitool.mak was modified. A .cpp file can now optionally specify a LANGUAGE and CODEPAGE in hex to work with properly languaging the DLLs. For example, spydeu.dll uses spydeu.cpp which specifies CODEPAGE = 0x04E4 (for 1252) and LANGUAGE = 0x0407 (for 1031 = GERMAN). Furthermore, a .cpp file can now specify both generation of a VERSION resource as well as inclusion of a separate resource file (.res). The spydeu.cpp files in %DARWIN%\src\tools\spy is an example that utilizes this new feature. 99-10-13 cgouge Bug 9892. Merge Module validation, ICEM09, checks that if you are installing to predefined directories that you have aliased the directory primary keys and either generated the appropriate custom actions and placed them in the right place in the sequence tables or that you have left it completely to the merge tool. 99-10-12 cnapier Fixed bug 10078. ICE72: new validator. The only customactions allowed in the AdvtExecuteSequence table are type 19, type 35, and type 51 custom actions. ----------------------------- Release 1.1.1012.1 ----------------------------- 99-10-11 mattwe Bug 9962: The SDK now replaces our release PUBLIC directory. All your favorites should be there, you may just need to look in a different spot. The SDK flat files are copied out, and the actual SDK package with the cabinets is at the root of the x86 branch. 99-10-11 mattwe Bug 10014: continued: removed WRITE_DAC and WRITE_OWNER from the custom action server process as well. ----------------------------- Release 1.1.1012 ----------------------------- 99-10-11 mattwe Bug 10014: The custom action server is now secured against being debugged by the current user. This is necessary to prevent the user from having a trusted channel back into the service to modify the install. 99-10-09 cgouge Bug 10024. A Work2000 CA was failing because COM is already initialized on the CA thread in a different threading model than they were trying to use. We now spawn a separate thread for the action and don't initialize COM. 99-10-07 cnapier Fixed bug 9955 (exempt). ICEM04. Merge Module validator that ensures that required empty tables are indeed empty in the Merge Module. ICEMAN was fixed up as well (ICEMXX validators no longer have hyphens). ----------------------------- Release 1.1.1007 ----------------------------- 99-10-06 cgouge Bug 10053. ANSI API calls with DBCS characters were returning the wrong buffer size for DBCS characters. We have gone back to the sub-optimal solution of returning twice the required buffer size in this situation. ----------------------------- Release 1.1.1006 ----------------------------- 99-10-06 eugend Fixed bug # 10042: if we were failing to open the destination file for any reason, we weren't closing the previously open source file handle. 99-10-05 cgouge Bug 9967. Several APIs were failing when passing NULL as an input string buffer when they should have been succeeding (such as clearing a property). These string arguments now correctly handle NULL arguments. 99-10-05 cnapier Fixed bug 9899. (exempt). Orca. Fix infinite loop if publish component information is not registered. 99-10-01 bench Fixed bug 10048: MsiConfigureProductEx is now exported from the public msi.lib. ----------------------------- Release 1.1.0930 ----------------------------- 99-09-29 cnapier Fixed bug 10013. Msi.rc. Network dialog resource chopped off parts of German text (and potentially Spanish as well). MsiDlgs tool was updated as well since its resources must match those in msi.dll. Msidlgs also did not have a large enough buffer to handle the German prompt string, possibly leading to not having found this bug sooner. 99-09-29 cgouge Bug 10018. Custom actions that throw exceptions now return failure instead of random value. 99-09-28 mattwe 9994: Updated readme in SDK to point new users to msi.chm as starting point for authoring, and to find descriptions of examples. 99-09-27 cnapier Fixed bug 9887. Msizap now has an undocumented option (o) for "orphaning" parts of a product. This was provided for OEMs to use. It works similar to the T option for removing a product, however it does not remove cached icons or clear shared DLL references ----------------------------- Release 1.1.0923 ----------------------------- 99-09-23 cgouge Bug 10017. MsiBreak on action running via custom action server was not activating JIT Debugging because the breakpoint exception was getting caught by the custom action entry point exception handler. 99-09-23 mattwe Bug 9966: Registering directories on 9X no longer fails the install when we run out of registry space. Registering fails, and orphans the directory, but allows install to continue. 99-09-20 cgouge Exempt - no bug #. Checked in code for the new version of the IceMan ActiveX control on \\dartools. This DLL is internal use only and is not part of the build process. 99-09-20 cgouge Bug 9897. Added ICE-M07, which ensures that the sequence order of files in the CAB matches the sequence of files in the file table. 99-09-20 cgouge Bug 9896. Added ICE-M06, which ensures that merge modules have no explicit feature references. ----------------------------- Release 1.1.0917 ----------------------------- 99-09-14 chetanp bug 9805 - we ignore installed component registrations if component path is not accessible for current user (in multi-user installation scenarios) 99-09-13 bench Fixed bug 9957: logging started during the install when an error occurs is now handled the same as logging started via policy, where we stop using the log at the end of the install. ----------------------------- Release 1.1.0904 ----------------------------- 99-09-10 cgouge Bug 9960: eliminated crash on NT4SP3 caused by too many release calls on a marshaling object. 99-09-04 bench Bug 9944: rebuilt the AXP64 and IA64 builds with the latest tools, libs and headers (from Win2000 build 2121). the IA64 compiler changed and a rebuild using the new compiler was necessary. ----------------------------- Release 1.1.0902 ----------------------------- 99-09-02 chetanp bug 9918 - latebind fix. dont call GetProcAddress with null hModule 99-09-02 chetanp bug 9913 - avoid expensive call to WNetGetResourceInformation with "filename only" args 99-09-02 cnapier Fixed bug 9895. MM validator. ICE-M05. This is the Merge Module validator that validates for stray components in the merge module. A stray component is defined as (1) Component listed in Component table but not in ModuleComponents table or (2) Component listed in ModuleComponents table but not in the Component table. In addition, it catches those Components listed in the ModuleComponents table whose ModuleID does not match the current ModuleID (signature) of the Merge Module. 99-09-03 cgouge Bug 9893, MM Validation. Added ICEM03, which checks that all Module*Sequence tables form a proper forest under valid root nodes. (Fixed for 0902, but relnotes added later) 99-09-03 cgouge Bug 9890: Added ICEM02, which checks that a merge module has valid exclusions and dependencies. (Fixed for 0902, but relnotes added later) 99-09-03 cgouge Bug 9752. Added initial merge module validation infrastructure. mergemod.cub file is now built and dropped with other CUB files. It is also installed in the msival2 installer. (Fixed for 0902, but relnotes added later) 99-09-02 cnapier Fixed bug 9669. ICE66. Changed warning message to place warning on the table instead of on the SummaryInformation stream. This affects Orca's graphical display (now on the table instead of the pop-up msg about the SummaryInformation stream containing errors). 99-09-02 cgouge Bug 9914, missing namespace on CoInitializeEx call short-circuited latebinding, which caused creating the process to fail on Win95 gold, even though the function was never called on that platform. 99-09-01 eugend Fixed bug # 9906: I've removed an unnecessary Assert I've added while fixing 9864. ----------------------------- Release 1.1.0831 ----------------------------- 99-08-31 chetanp bug 8062 - use case insensitivity for file path comparisons when determining when to clean up HKCR registrations 99-08-31 mattwe Bug 9796: On Win9X, the Environment actions are now more robust about recognizing "set" lines, including whitespace, and making the "set" optional. Example: path=foo, and set path=foo are now both acceptable in existing lines of the autoexec.bat 99-08-30 cnapier Fixed bug 9885. MsiZap. Deleting an UpgradeCode value from the UpgradeCodes key failed because the key was only opened with Read access. Delete requires KEY_SET_VALUE access. 99-08-30 bench Bug 9886: we no longer attempt to bind WFP-protected files (with the BindImage action, BindImage table, etc...) 99-08-30 cnapier Fixed bug 9868. EvalCom.dll. Two potential trouble areas where we could be calling through a garbage pointer or we could be attempting to get the length of a null string. 99-08-30 cnapier Fixed bug 9872. Use of CTempBuffer without services. Changed to use CAPITempBuffer. This was exposed on NT 4 Server when MsiUseFeature was called (it then called IsTerminalServerInstalled which is where the CTempBuffer was used). 99-08-27 cgouge Bug 9772, 9773. We now build merge modules for mergemod.dll and evalcom.dll. These will be build into the data directory and dropped at samples\modules. These are generally for MS use only. 99-08-26 eugend Fixed bugs # 9852, 9864 & 9880: all of these have to do with a bad fix I made to 9566. The fix to 9864 consists mainly of removing the calls to SfcConnectToService and SfcClose from DllMain and putting them into MsiUIMessageContext's Initialize and Terminate. 9852 is tracking the performance issue resulting from the condition that caused 9864, so that this one got fixed as well by the fix to 9864. The fix to 9870 consists of moving the call to SFC::Unbind from UnbindLibraries into MsiUIMessageContext::Terminate, right after the call to SfcClose. 99-08-25 cgouge Bug 9644, 9762. The custom action server was not secure and would fail when the client was not the same as the user owning the desktop. To work around this, Darwin has taken over management of the custom action server process. Security is now enforced through a combination of ACLs and cookies, and the owner of the server is now the determined by the impersonation token held in the service. See the bugs for details. 99-08-25 cgouge Bug 9857, thread problems with custom actions. When custom actions were run from the custom action server, there was no relationship between the thread in the service and the thread in the client (especially for async actions.) This meant that handle management was all goofed up, because the service would think that the wrong threads were trying to close the handles. We now pass the thread id of the caller across to the service to be used in these cases instead of using the real thread id. 99-08-24 chetanp bug 9818 - hack to prevent premature removal of class registration (to work around incorrect component definition) 99-08-23 cnapier Fixed bug 9803. Security. We now verify that the owner of our registry keys (Installer, Policy, and Managed) is system or admin. The MSI folder must also be admin or system owned (unless on a FAT system where there is no security with files or folders). Non-system or admin owned keys are deleted (and would therefore be recreated). 99-08-23 cnapier Fixed bug 9836. String pool corruption occured if a table was loaded in memory with no persistent data changes and the string pool index was bumped from 2 to 3 (over 64K strings). The table is then released (and no changes saved since no persistent data changed). Upon re-load, table is read in incorrectly since the index size bumped. We read in a 2 byte persisted format as 3 bytes. Fix was to include the string index bump as a "data change" and to mark all non-temporary tables when the string index was bumped. 99-08-18 mattwe Bug 9844/9845: Minor fixes to MsiGetShortcutTarget and its automation for buffers being too short for the null. Added logic for CFixedLengthParam to detect overruns in DEBUG only. 99-08-17 cnapier Fixed bugs 9832, 9833. ICES 44 and 45. Fixed so that the ICE UNKNOWN error is not returned. For ICE44, UNKNOWN was returned if you didn't have a Dialog Table but had a ControlEvent table. This was corrected to not report an error if ControlE table is empty and reports an error that the Dialog table is missing if ControlE table is not empty. ICE45 fixed the buffer problem when getting a summary information stream. We didn't handle the ERROR_MORE_DATA case correctly. 99-08-17 bench Fixed suggestion bug 9834: MsiFiler now sets the Language column of the File table along with the Version and FileSize columns. ----------------------------- Release 1.1.0816 ----------------------------- 99-08-16 mattwe Bug 9636: Implemented new API MsiGetShortcutTarget to retrieve product, feature, and component from a Installer shortcut. 99-08-13 chetanp bug 9801 - replace global feature cache semaphore with local one. 99-08-13 cnapier Fixed bug 9776 (regression). The ModuleDependency ModuleLanguage column was entered incorrectly in the _Validation table used with schema.msm and schema.msi 99-08-12 eugend Fixed bugs # 9566 & 9817: both of these two fixes improved Darwin's performance with regard to its interactions with SFP (system file protection). ----------------------------- Release 1.1.0811.1 ----------------------------- 99-08-11 chetanp bug 9381 - incorrect param to CreateFileMapping and premature return from fn, in case of error, w/o releasing semaphore causes hang. ----------------------------- Release 1.1.0811 ----------------------------- 99-08-11 bench Fixed bug 9820: regression of bug 9760. reset a global flag when necessary to prevent calling Wx86 apis when emulation not loaded. ----------------------------- Release 1.1.0810.1 ----------------------------- 99-08-10 cnapier Fixed bug 9813. ICE64 -- which validates directories in user profile are added to RemoveFile table. However, if the DefaultDir column uses the specification of ".:MyDir", then it is valid (provided all parents up to profile folder have .:). 99-08-10 bench Fixed bug 9819: we always return ERROR_INSTALL_FAILURE from MsiAdvertiseScript for invalid script problems. ----------------------------- Release 1.1.0809 ----------------------------- 99-08-09 cnapier Updated pullsdk.bat, copypub.bat, and makefile to handle building the msival2.msi 1.0 SDK refresh files to specific alpha and intel directories (since the cube file stuffed in the package is platform specific). Pullsdk.bat was modified to pull the correct package based on platform. Copypub.bat copies both versions to Alpha and X86 directories beneath the packages\100 archive. 99-08-09 chetanp bug 9816 - check return of while enumerating scripts on alpha for bogus script file. 99-08-09 chetanp bug 9719 - remove shared read/write section from msi.dll. Replace with shared memory mechanism ----------------------------- Release 1.1.0808 ----------------------------- 99-08-08 bench Fixed bug 9760: several problems with advertising x86 scripts on alpha machines. Emulation was not correctly being enabled. 99-08-08 bench Fixed bug 9810: AdminTools folder not properly handling cross-machine script generation/execution. 99-08-04 cnapier Fixed bugs 9699, 9765, 9776. These deal with the logo cube files and the 1.0 SDK refresh. We now cab the logo.cub file with msival2.msi and install it as well. For 1.0 SDK refresh, the original cub file was modified to work with 1.1 darwin (change schema in SumInfo from 28 to 100). An x86 and alpha version are available and built from %DARWIN%\public\packages\100 (x86 and alpha directories respectively). A 1.0 SDK refresh msival2.msi is built and put in the public\packages\100 directory. The _Validation table now contains entries for the MergeModule tables that could be merged into your database. 99-08-04 cnapier Fixed bug 9792. Removed line where we assumed a record had transform data during uninstall. Apparently this was overlooked when we changed how we obtained transform information (now from registry). During remove, we only populate the record with the names of the transforms, not name-data pairs. We now remove all transforms (not every other) on Per Machine installs. 99-08-03 chetanp bug 9731 - we no longer ACL the files (profile transforms and icons) that are put in the appdata folder during per user installs. ----------------------------- Release 1.1.0803 ----------------------------- 99-08-02 bench Fixed bug 9780. made a few Win64-only code changes and a couple of non-specific ones to get Win64 builds going with the latest build tools. We should now be dropping ship and debug Win64 builds to \\united\darwin. 99-08-02 bench Bug 9313 - fixed minor problem with previous fix. when profiles were enabled, a different user would be allowed to continue an install after reboot. an error would be thrown, but as a warning and not a fatal error. 99-08-02 johndelo Bug 9581 - sequence.msi built which has recommended sequence tables. Darwin 1.0 version for 1.0 SDK checked in under DARWIN\public\packages\100 Header files conditionalized with MSI version check for 1.1 definitions that are not available in 1.0 Version 110 (MSI 1.0) forced if _WIN32_MSI not defined AND _WIN32_WINNT >= 0x0500. Core components set _WIN32_MSI to 110, but tools use 100 to insure 1.0 compatibility. 99-08-02 cnapier Fixed bug 9726 (regression). Caused by bug 9751 fix which overwrote these changes. Removed trailing quote from WFP error strings in Error table. Updated inst1033.msi and error.enu. All localized files were correct. 99-08-02 cnapier Fixed bug 9684 (regression feature request). New ICE71 to verify that the Media table has an entry with DiskId = 1. ----------------------------- Release 1.1.0729 ----------------------------- 99-07-29 mattwe Bug 9767: Removed the full system path on system library loads on Win9X. This isn't necessary to security, and busts instmsi/copymsi. 99-07-28 cnapier Fixed bug 9766. Fix the S option with msizap so that it actually does work. (S removes rollback information). 99-07-28 cnapier Fixed bug 8905 (regression new feature request). X-ref components in same feature is a warning. X-ref components in different feature, parent feature, or child feature is an error. Verb-Ext, AppId-Class validations are all warnings (open to author interpretation). 99-07-28 bench Fixed bug 9313: on Win9X, allow a user to resume a ForceReboot install after reboot if profiles are disabled. This didn't work previously if the user started the install when logged in as themselves (or dialed up to the network) but after the reboot they cancelled the login prompt (or didn't dial up). ----------------------------- Release 1.1.0728 ----------------------------- 99-07-27 mattwe Bug 9601: Shell folder Admin Tools will be deleted if it is empty. Since our lookup mechanism may create it, we don't want empty copies lying about. ----------------------------- Release 1.1.0727 ----------------------------- 99-07-27 mattwe Bug 9763: added .DLL to system library loads 99-07-26 cgouge Bug 9643, cleaned up mergemod header file. 99-07-26 cnapier Fixed bug 9751. In all of the error.XXX tables in %DARWIN%\data\intl (and instXXXX.msi in %DARWIN%\src\intl) updated the 1301 error message by changing parameter from [3] to [2]. (Used a script for this and made sure I was on a machine with all of the language codepage supports). ----------------------------- Release 1.1.0722 ----------------------------- 99-07-23 cgouge Bug 9637 (regression) Wide versions of the APIs now will succeed when remoted. ----------------------------- Release 1.1.0722 ----------------------------- 99-07-22 cgouge Bug 9743. MergeMod was generating invalid sequence tables when multiple predefined directories were used in a module that already had multiple predefined directories from earlier modules. 99-07-22 cgouge Bug 9596 regression. Change to command line parsing had broken the ability to use merge modules from the command line (caused by a variable initialization in the wrong place.) 99-07-22 chetanp bug 9732 - We now accomodate the case where a CA calls Modify on a SELECT query w/o calling Execute. 99-07-22 mattwe Fixed bug 9722: "latebound" DLLs now are expected to be in the system directory, and will only load from there. Non-optional system components (like msi.dll) will continue to load normally. (So, you can still run msiexec from a private directory, as long as you have privileges to register the service there.) 99-07-22 cnapier Fixed bug 8811. Problems with costing cached patch packages. When we began recosting the engine cost (cached database, script, etc) we never re-intialized the cost of the cached patch package. This would result in our writing bogus values for the estimated size in the ARP uninstall key. 99-07-22 cnapier Fixed bug 9740. Propogate _Validation table changes (Class.Argument, Environment.Values have Category=Formatted) to all databases. Our 1.0 databases grabbed the _Validation table from %DARWIN%\public\packages\100. Updated _Validation table in 100 and 101 for those entries. Note that %DARWIN%\data\schema\_validat.idt was correct. Also, 1.0 Darwin supports these columns as formatted, we merely validated them as Text. 99-07-21 cnapier Fixed bug 9726. Error.enu corrected to remove trailing '"' in 1930,1931,and 1932 error messages. Error.idt and ActionTe.idt files delfiled from %DARWIN%\data\template. Makefile changed so that error.enu and actionte.enu files are imported into the databases from the %DARWIN%\data\intl directory. This required copying the .enu file to a .idt file in the TEMP directory since the bug to fix msidb to allow import of non idt files was punted way back when. 99-07-21 cnapier Fixed bug 9736. ICE69 in an infinite loop. Problem was we were not handling the case where a particular table was not found in the middle of a while loop. 99-07-21 cgouge Bug 9620: Fixed problem with new "smart merge" for validation COM object that would cause validation to fail if the Binary or CA tables were missing in the target database. 99-07-21 mattwe bug 9619: verb registration for .msi and .msp are now consistent on downlevel platforms as with NT5. InstMsi's registry table now contains %* for verbs, allowing command line arguments to be passed in a command line of the form: "foo.msi blah blah blah" ----------------------------- Release 1.1.0721 ----------------------------- 99-07-20 chetanp bug 9720 - honour existing "available" feature state, if readvtising a feature marked as absent via an advertisement script (during app deployment, relogon). 99-07-20 chetanp bug 9716 - error when attempting to get file security for a folder on the net. needed to impersonate the user. 99-07-20 chetanp bug 9676 - ORCA: Right Click on a .msi to "Edit with Orca" did not brings up anything on Win98. 99-07-20 chetanp bug 8882 - fixed behaviour where we were incorrectly allowing installs from disconnected CSC sources. 99-07-20 chetanp bug 9707 - fix crash when a CA calls MsiSetFeatureState w/o initializing the selection manager (calling CostInitialize , FileCost , and CostFinalize 99-07-20 cgouge Bug 9684. A multi-CD install would prompt for a disk when it needed to determine the source type, but would list and accept any disk disk from the product. The last used source would also get tossed in, even if it was the wrong disk. We now prompt for and accept only the disk that we actually need. 99-07-20 cgouge Bug 9637. The marshalling code for the CustomAction server was having serious problems marshalling across the users buffers when the provided size was 0. This manifested as random crashes and/or RPC_S_INVALID_BOUND returns from any API with an [out, string] buffer when called from the CA server. Our API calls now create dummy buffers of 1 char to use in these special cases. The only exception is MsiRecordReadStream, which maintains state and thus can't use dummy buffers. Instead, it explicitly passes across the remote interface a flag which says whether or not to use the provided buffer. 99-07-20 cgouge Bug 9166. When recaching a package from a product code, we don't verify that the sources in the source list have the same package code as the cached package, although they still have to have the same name. This allows recaching via product code when the source images have had a minor update applied. 99-07-20 cgouge Bug 9710: MergeMod. No longer populate the AdvtUISequence table with generated custom actions for GUID-ized predefined directories. The table is now left empty. 99-07-20 cnapier Fixed bug 9714. MsiDb must pass number bytes, not number of characters to WriteFile. in addition, updated msiinfo, msimerg, and msitran to do the same thing (they worked, but had a hard coded value instead of sizeof(TCHAR)). 99-07-19 cnapier Fixed bug 9685. ICE70. Reactivated to handle properties. Also added validation of #xHex syntax in registry value column. 99-07-19 cnapier Fixed bug 9370. ICE68. Reactivated due to disallowing certain customaction attributes for Text and Install Types. Text allows the Pass flags (except for InScript). Install only also allows continue flag. 99-07-15 cnapier Fixed bugs 8905, 9669, 9685. ICEs 66, 69, and 70. Reworked ICE 66 due to fix to bug 9536. Warns (based on your database schema) that functionality only availabe for certain tables (like Upgrade) if installed on Windows Installer 1.1 or greater. ICE 69 fixed to include Environment, Class, and AppId tables. Environment and Class table required changes to _Validation table so that Env.Value and Class.Argument are Formatted strings (originally listed as Text). AppId validation similar to Verb-Extension validation. ICE 70. Validates that registry values with only a single # preceding a string are followed by numeric characters. 99-07-15 cnapier Fixed bug 9694. Made return codes from MsiGetSourcePath consistent. Previously we returned ERROR_DIRECTORY for W version and ERROR_BAD_PATHNAME for A version. ERROR_DIRECTORY now standard for MsiGetSourcePath, MsiGetTargetPath for when directory isn't in directory table. 99-07-15 cgouge Bug 9686. Validation. We were checking the wrong attributes in the upgrade table. 99-07-14 mattwe Bug 9698: SourceList APIs were trying to call impersonation routines on 9X, and don't now. 99-07-14 mattwe Bug 9455: secure icons and Patch files are now marked to elevate their operations during rollback. 99-07-14 cnapier Fixed bug 9621. Instlr11.adm. Updated Terminal Server policy so that string looks better within the policy editor (previously you had to scroll forever) for down-level systems. 99-07-14 cnapier Fixed bug 9696. ORCA. Default SaveAs extension is now ".msi" instead of ".odb". The ".odb" extension was defunct and no longer supported in ORCA. ----------------------------- Release 1.1.0714 ----------------------------- 99-07-13 cgouge Bug 9674. Orca would crash if a repaint message came in the middle of the command handler for File/New when a document was already open. Fixed. 99-07-13 cnapier Fixed bug 9622. MsiZap. Fixed msizap to be more restrictive about zapping all. Also made it possible to remove a product with the product code or msi package. MsiZap no longer removes the Run-Once key (potential to mess up other apps). Msizap now removes the Rollback information (* or S option). Finally during removal of a product, MsiZap will remove the product from Patch Keys and Upgrade Keys. A particular upgrade or patch will then be removed if no other product references it. ----------------------------- Release 1.1.0712 ----------------------------- 99-07-12 chetanp fixed bug 9536 - we no longer use the database version to assume a particular schema type. On the other hand, for a particular table, we first attempt to check if it has the latest schema and fall back to the olders shcema(s) if not. What this allows is the ability to author a database in the most current schema and allow same database to run in older versions of Darwin with graceful degradation. 99-07-10 cgouge Bug 9620, Validation. The EvalCom validation object is now more tolerant of merge conflicts between the CUB file and Database. It ignores _Validation conflicts, and will work around schema conflicts in the Binary and CA table when possible. 99-07-09 cnapier Fixed bug 9621. Created a instlr11.adm file for non-W2K systems. Used the actual system.adm file included with W2K as the template. Extracted installer specific information and removed conditional statements and other keywords unavailable in versions 1 and 2 of the system policy editor. Instlr11.adm is located in %DARWIN%\sdk and the files for building the SDK were updated with this additional file. 99-07-09 bench Bug 9665: put back entries for the IsolatedComponents table in the _Validation table that were inadvertently removed. 99-07-09 bench Bug 9660: increased version to 1.10 from 1.03, and changed version of schema.msi to 110 from 103. 99-07-09 bench Bug 9659: msiexec.exe was entering non-localized event log entries. rather than localize these strings, they are sent to debug output rather than the event log. 99-07-09 cgouge Bug 9624, changed Orca installer to insntall to correct place on Win9X 99-07-08 cnapier Fixed bug 9662. Changed ICE54 to report a warning instead of an error when using keyfiles with versions from companion files in different components. This case can work but has some shortcomings as well. ----------------------------- Release 1.1.0707 ----------------------------- 99-07-07 mattwe bug 9651: Custom actions continue to be secure for elevated actions, but may be insecure for client side custom actions. A future bug will be filed. This fix is for RC2 release. 99-07-06 cgouge bug 9632: Schema.msm is now dropped along with schema.msi. ----------------------------- Release 1.1.0702 ----------------------------- 99-07-02 mattwe bug 9569: network files now only have their DACLs saved/restored due to limitation of impersonation/ elevation. ----------------------------- Release 1.1.0701 ----------------------------- 99-07-01 mattwe bug 9569: Patching now works against secured network files, and preserves the security correctly. DEV: See CSecurityDescription for new generic routines TEST: Removed the config flag from TempFileName automation 99-07-01 chetanp bug 8041 - fixed case where we were not clearing up HKCU com registration for component C1 installed in the context of Product P1 if the same component was also installed by some other user in another products (say P2) context. 99-07-01 Tracyf Bug 9635 - improved the log message generated when an attempt is made to reinstall protected files. 99-07-01 cgouge Orca bugs. 9574, 9596, 9074, 9336. Clean up UI, finish dropping ODB support, and fix a few Win95 Gold problems. 99-07-01 cnapier Fixed bug 9629. Ice 35. Changed RFS warning msg to include phrase "if running from media" as an admin install would not have the problem. 99-06-30 chetanp fixed bug 9617 - incorrect shared dll registration during rollback of component registration/unregistration. 99-06-28 cnapier Fixed bugs 6677, 7535, 7536. Documented MsiLoadString and MsiMessageBox (although they are not exposed thru automation). Added those API plus the ixoOdbc op codes to the contents file. ----------------------------- Release 1.1.0625 ----------------------------- 99-06-24 cgouge Bug 9599. mergemod.dll updated to support Darwin 1.1 shell folders. 99-06-24 cgouge Bug 9598. Mergemod.dll. We no longer fail if TARGETDIR does not already exist in the database. ----------------------------- Release 1.1.0624 ----------------------------- 99-06-23 cnapier Bug 8905. Validation. Added ICE69 which checks cross-referencing of components between formatted strings. Also does some cross-checking of components between formatted strings in the Verb table and components in the Extension table. Tables typically validated are the Shortcut, IniFile (and Remove), Registry (and Remove), and a few others. 99-06-23 cgouge Bug 9152. Validation. Added ICE66 which checks the schema of your package and the tables in your database to make that your schema is in the appropriate range. 99-06-23 eugend Fixed bug # 9507: instead of unconditionally removing all icon files, Darwin now performs a series of checks before removing any icon file (pls. see the bug for details). 99-06-22 johndelo Updated all localized strings to localizer Version9 InstNNNN.msi, Error.LLL, ActionTe.LLL, msiLLL.res Fixed parameter numbers for errors 1931,1932 - Bug 9389 99-06-22 bench Fixed bug 9587: we can now write negative DWORD registry values again (like "#-234"). this was broken by a regression for bug 9280. 99-06-22 cgouge Bug 9370. New ICE68, checks that custom action types are valid. 99-06-22 mattwe bug 9569: Patching will no longer overwrite files to which it has no access. (this means both the file and directory are secured correctly. See bug for more details.) 99-06-22 chetanp bug 9570 - fixed incorrect computing of default verb(s) in case the Argument column was null for the verbs. 99-06-22 cgouge Bug 9567. MsiAddSource no longer attempts to connect to the source or validate its existance. 99-06-22 bench Bug 9571: feature request to make the Upgrade.Remove column formatted, meaning you can have an expression instead of static text, allowing for the list of features to remove to be dynamic. 99-06-22 cgouge Bug 9503. Added ICE62, checks for a plethora of different problems in the IsolatedComponent table. 99-06-21 cgouge Bug 9563. Validation, new ICE67. Checks shortcut targets to ensure that they either belong to the same component as the shortcut or are restricted to source only or local only. This keeps the shortcut from becoming invalid when the target component transitions from RFS to local or v.v. 99-06-21 bench Fixed bug 9455: security bug where we were always elevating when running rollback scripts. now we only elevate when rolling back an elevated install. 99-06-21 bench Fixed bug 9568: clicking ignore to the error dialog for error 1328 would not ignore the error - now it does. 99-06-21 johndelo Bug 9564,9565. Fusion support added to schema. Darwin version bumped to 1.03 - core support for Fusion IsolatedComponent table, validation added to schema.msi IsolateComponents action added to template.msi Bug 9581 opened for mechanism to distribute sequence tables. 99-06-21 johndelo Bug 9163. All ODBC description fields non-localizable, as they are all registry keys, sometimes hard-wired. In addition to previous update driver, translators, and data source tables were updated with this recommendation. 99-06-21 cgouge Bug 7661. The ADMINTOOLS was failing because we were always calling ShGetFolderPath with an hToken value, which is not valid on non-NT5 machines. Thus our shell folder calls were always falling back on the registry checks when called from the service. This meant that a server-side install could hit cases where the folder did not exist and couldn't be created. We now pass a 0 value for the token on non-NT5 machines. 99-06-21 Tracyf Bug 9561: don't put up SFP error dialog when attempting to reinstall equal-versioned protected files. 99-06-21 Tracyf Bug 9560: Put up a dialog if SFP fails, instead of silently rolling back. 99-06-21 Tracyf Bug 9556: Always log the reason the install requires a protected file to be copied. 99-06-21 Tracyf Bug 9493: Change SFP error to fatal if required file is not copied at all. 99-06-17 mattwe Bug 9548: We now secure the files used for configuration data: scripts, caches for transform, patches, icons, databases, and the custom action temporary DLLs used during an install. We do *NOT* secure RBF files beyond the security they already possess. 99-06-17 mattwe Bug 9513: We now mark all RBF files as hidden/system. This prevents the RBF files from showing up on network share desktops, for example. 99-06-16 eugend Fixed bug # 9519: the Copyright information in Darwin source files has been brought up to date. ----------------------------- Release 1.1.0616 ----------------------------- 99-06-15 eugend fixed bugs # 9527 - buffer overflow in CA processing code and # 9552 - incorrect error string for ERROR_INSTALL_PLATFORM_UNSUPPORTED error. 99-06-15 cgouge Bug 9547. We no longer set the TerminalServer property or do TS-specific stuff when on a TS remote admin machine. The Global mutex prefix is still used on all NT5 machines and TS4 machines. We also set a new property on these machines, "RemoteAdminTS" 99-06-15 Tracyf Bug 9485: Due to an external change in sfc.dll to fix a memory leak problem, an extra parameter was added to the SfcIsProtectedFile API, requiring a Darwin change. 99-06-15 Tracyf Bug 9537 - Bug 9537: fixed late-binding for SFP calls to avoid asserts on non-NT5 platforms. 99-06-15 bench Fixed bug 9529: we now allow a non-localadmin user to deploy an app via the MMC on Windows 2000 if the app being deployed happens to be assigned to that user already. prior we would only allow admins to deploy in this case. 99-06-15 cgouge Bug 9362. Validation. Updated ICE45 to check specific control types for specific bits instead of just checking the whole table for any bit that is valid for any control type. 99-06-15 cgouge Bug 8382. Validation, new ICE65. Checks that the Environment.Value column doesn't have invalid formatting codes of the type [~]Value or the reverse. 99-06-15 cgouge Bug 7661. Support for new CSIDL values: LocalAppData, CommonAppData, MyPicturesFolder, AdminToolsFolder (with ALLUSERS support) and Win2000 ALLUSERS TemplateFolder support. See the Darwin1.1 Shell Folder spec for details. 99-06-09 cgouge Bug 9516. a DLL CA marked to impersonate ran in the same process as msiexec. This caused the process token to be LOCALSYSTEM when running from the service. Thus calling CreateProcess() from the DLL resulted in a new process running as the system. We now run all impersonated DLL CAs through the remote CA server when called from the service, not just for non-elevated installs. In-script actions marked icaNoImpersonate still run as before (in-proc). 99-06-08 cgouge Bug 9361. Validation, new ICE64, validates that created directories in the user profile are added to the RemoveFile table. 99-06-08 cgouge Bug 9253, New ICE63, validates the InstallExecuteSequence table with respect to the RemoveExistingProducts action. 99-06-08 bench Fixed bug 9512: the MsiApplyPatch api now accepts an empty string for szPackage where it only accepted NULL before. this change is to allow the api to be called through automation. 99-06-08 bench Bug 9506: InstallExecute in a merged nested install will now force execution of the script rather than waiting for the parent to execute the script. 99-06-08 cgouge Buc 9476. Fixed SourceList API on Win9X. Most critically, we were checking if the system owned a reg key, but the function always failed on Win9X. The check is no longer made. Also modified the way that we detect if the modification is to the current user on a Win9X system. 99-06-07 bench Bug 9525: to support remote-admin mode for Terminal Services, we now always prepend "Global\" to mutex names on NT5, even if we don't believe TS is installed. As before, we also do this on NT4 but only when TS is installed. Remote-admin mode is made to look like TS is not installed when it really is, and is only supported on NT5. 99-06-07 cgouge Bug 9475. Dropped product versions (msispy, orca, msival2) now track the MSI version. Note that sample databases (testdb, etc) currently keep the same versions. 99-06-07 mattwe Bug 9490: A user edited WinInit.INI without a newline at the end of the file had the next line appended incorrectly. This now works. 99-06-07 eugend Fixed bug # 9474. The following methods got added to the Installer object: - Installer.Patches(Product) - wrapper for MsiEnumPatches, but unlike that, it returns only the string list of patches, it doesn't bother with transforms. - Installer.PatchTransforms(Product, Patch) - calls MsiEnumPatches and returns the transform information for a given patch. - Installer.PatchInfo(Patch, Attribute) - wrapper for MsiGetPatchInfo. - Installer.RelatedProducts(Product) - wrapper for MsiEnumRelatedProducts. - Installer.AddSource(Product, User, Source) - wrapper for MsiSourceListAddSource. - Installer.ForceSourceListResolution(Product, User) - wrapper for MsiSourceListForceResolution. - Installer.ClearSourceList(Product, User) - wrapper for MsiSourceListClearAll. I've changed FeatureInfo.Attributes into a read-write property - it wrapps MsiSetFeatureAttributes. Doc bug # 9521 tracks this. 99-06-04 cgouge Bug 9497. A merged nested install on Win9X would fail if the parent was already in the registry (in this case due to an advt) but the child was not. We would then reject the child package because we think the parent is elevated. The check from bug 9400 (which rejects the nested install) now only happens on non-9X systems. 99-06-03 johndelo Bugs 9275-9278 MSI support for Fusion 1.0 For details, see implementation doc checked into the DARWIN project under: DOC\Fusion.doc 99-06-03 johndelo Bug 9496 - we have no Easter egg in Darwin (did we ever?) 99-06-03 cgouge Bug 9491. Added private MsiIsProductElevated() API for use by NT. This is not a public API, so is not in the public header file, public automation layer, or docs. 99-06-02 cgouge Bug 8972, part 2. LFN checks across components using the same Directory table entry now work in ICE30 99-06-02 cgouge Bug 8972, validation. ICE30 made case-insensitive, so that colliding files and directories don't have to match exactly before a warning is generated. 99-06-02 bench Fixed bug 9498: a problem with multiple transforms where the first transform adds a brand new string to the database and the second transform replaces that string with another. 99-06-02 mattwe Fixed bug 9495: /q on the command line had a buffer reading problem where it skipped a null terminator. 99-06-02 bench Fixed bug 9487: 2 problems: 1 is that we leave behind a half-baked InProgress key when failing to write one of its values. 2 is that when we encounter a half-baked InProgress key we are stuck and do not allow an install to occur until the key is manually removed. 99-06-02 bench Fixed bug 9451: type 23 nested installs with embedded cabs will now properly copy files when they are merged with the parent transaction. 99-06-02 bench Fixed bug 9484: updated MsiZap to clear the new cached databases and the LocalPackages key introduced by the recent fix to bug 9395. ----------------------------- Release 1.1.0602 ----------------------------- 99-06-01 cgouge Bug 9478. Drop _InstallValidate table, which was used by msival but isn't any longer. This is a change to the makefile only, but the file lived with the other CUB tables and was thus getting picked up still. It will no longer appear in CUB files either. ----------------------------- Release 1.1.0530 ----------------------------- 99-05-28 bench Fixed bug 9488 - error deleting a key on NT for non-managed, non-admin uninstalls. This was a regression of bug 9395. 99-05-28 chetanp bug 9373 - When fetching from a view in a read-only database, and selecting to insert a temporary row, we now prefetch the result set to avoid cursor misplacement 99-05-27 cgouge Bug 7852. The EvalCom DLL used in Orca and MsiVal2 was leaving a temp file behind in the temp directory after running validation. We now delete the file before exiting. ----------------------------- Release 1.1.0526.1 ----------------------------- 99-05-26 chetanp bug 9482 - nested installs failure - occured due to a change in status return code for MsiGetProductInfo that was caused with the database caching spec change. ----------------------------- Release 1.1.0526 ----------------------------- 99-05-26 cgouge Bug 9231. Initial checkin of SourceList API. Users can modify their own installs and per-machine installs based on Browse policy. Admins can also modify per-user managed installs for other users. Nobody can ever modify another users non-managed installs. This checkin consists of 3 calls, MsiSourceListClearAll, MsiSourceListAddSource, and MsiSourceListForceResolution. See the bug resolution and\or the API spec for prototypes and more info. There should be NO changes in Darwin behavior due to this bug, it consists solely of new API implementation. The automation wrapper is not a part of this checkin. 99-05-25 chetanp fixed bug 9395 - fixed security hole due to sharing of cached database by having individual copies of the cached database for every user and the machine (for per-machine installation). 99-05-25 chetanp bug 9442 - Changed FormatText to resolve paths correctly even if the action state is null if the requested action state is not on NT5 and for registry writes in the event we are writing HKCR info for a "lesser" component (see bug 8062). 99-05-25 bench Fixed bug 9472: an extension of the fix to bug 9233 - embedded nested installs with embedded cabs now work when copying more than one file in a cabinet. 99-05-25 chetanp fixed bugs 8041 - regression from bug 9381. Caused HKCR info to be left in multi-user scenarios. 99-05-25 chetanp fixed bugs 9461 - regression from bug 9381. Caused advertisement on non-shell aware systems. 99-05-25 cgouge Fixed Bug 9400. If a child install had a different elevation state than the parent, we elevate stuff that shouldn't be elevated. The child install will now fail. If the child install is set to ignore failures, we now correctly keep the parents elevation state anyway. 99-05-25 mattwe Bug 7283: very long lines (> 255 bytes) to the log are now broken up into pieces. Looks normal, except for extra linefeeds. 99-05-25 Tracyf Fixed bug 9365: ReserveCost values are now subtracted from the total disk cost at uninstall. 99-05-25 Tracyf Fixed bug 9047: fixed FDI problem in which the install cannot exit upon error in certain cases (such as filename same as a sibling folder name). 99-05-25 Tracyf Bug 9424: Added a new api: MsiSetFeatureAttributes, which can be used to change the default attributes for a feature at runtime (the defaults are authored in the Attributes column of the Feature table). 99-05-25 Tracyf Bug 8971: Added support for Win2000 System File Protection (SFP). In short, for any file Darwin decides it needs to install, it will now check with SFP to determine if the file is protected by Windows. If so, and the file is missing, Darwin will call SFP at install time to actually install the file. For details, see the PM spec at ttp://officeweb/specs/TCO/Darwin%201_1%20System%20File%20Protection.html and the dev spec at ttp://dartools/dardev/specs/System%20File%20Protection.doc 99-05-24 bench Fixed bug 9453: ODBC errors that are ignorable with UI are now ignored automatically in quiet mode. 99-05-24 eugend Fixed bug #9413: from now on event log strings will be written in the package's language. 99-05-24 bench Fixed bug 8811: the cost associated with caching .msp (patch package) files is now calculated and used when determining out-of-disk-space and reporting space requirements. 99-05-24 mattwe bug 8973: When we create shortcuts, we now delay notifying the shell of their existence until the end of the install script. This gives the icons and other files a chance to be copied. This sometimes results in shortcuts initially being displayed with default icons, but they will display correctly at the end. 99-05-24 mattwe bug 9456: Due to database version 0.28 now longer being supported (5/17/99), the localized transforms for instmsi and copymsi needed to be updated. ----------------------------- Release 1.1.0524 ----------------------------- 99-05-24 chetanp bug 9461 - fix lack of removal of all class and advertisement information upon uninstall. Regression from bug 9381 ----------------------------- Release 1.1.0523 ----------------------------- 99-05-21 cgouge Bug 9447. Hydra story, part 3. When modifying an INI file in the windows folder during a hydra per-machine install, we call the TermsrvLogInstallIniFileEx() API to notify hydra that the file has been touched. Hydra will then propogate the file to each user at logon time. 99-05-21 chetanp bug 9155 - fixed install error on locked down system when attempting to update the EstimatedSize property under the Uninstall key. 99-05-21 chetanp bug 9037 - shell notification for shortcut creation/deletion. Part of the bug was external and got fixed with NT 2040. 99-05-20 mattwe Bugs 9436: msiexec /q PROP=VALUE accidentally dropped the property. (/qb PROP=VALUE worked.) This is fixed. 99-05-20 mattwe Bugs 7593, 9256: On NT5, we now attempt to use the USERPROFILE and APPDATA environment variables for registry icon paths. When we do, the registry key gets a EXPAND_SZ type. Note that APPDATA is only available in NT5 starting with build 2042. 99-05-19 cgouge Bug 7767. Part 2 of the Hydra story. This part syncs up all of our GetWindowsDirectory calls so they have the same value on the client and server side. All calls to GetWindowsDirectory (which might result in a lie on TS5 from a non-system context when called via an API) have been replaced by a call to MsiGetWindowsDirectory(). This function automatically calls GetWindowsDirectory or GetSystemWindowsDirectory as appropriate. Any future uses of GetWindowsDirectory() should use MsiGetWindowsDirectory() instead. (except in msiexec.exe) 99-05-19 eugend Fixed bug #8984: MsiSetComponentState API now returns ERROR_INSTALL_USEREXIT if Cancel button had been hit. Doc bug # 9446 tracks this change. ----------------------------- Release 1.1.0519 ----------------------------- 99-05-18 johndelo Bug 9432: product registration property InstallDate now uses locale-independent date format: "YYYMMDD". 99-05-18 bench Bug 9426: multiple cabinets on the first disk are now supported even if the volume label in the Media table doesn't match the actual volume label. 99-05-18 bench Bug 9423: restored support for type 23 (relative path to msi) nested installs. 99-05-17 chetanp bug 8062 - if we are writing to the per user HKCR (HKCU\S\C) AND the key under which we are creating the value does not exist BUT the corr. key in the per machine HKCR (HKLM\S\C) exists, AND we are witing this value as part of a lesser component, then we skip creating the key-value altogether since this will then shadow the per machine HKCR. 99-05-17 chetanp bug 8809 fixed. we now honour the MIME_ column of the Extension table in writing the "Content Type" value under the extension key. !!!NOTE: we no longer allow for database versions < 30!!! 99-05-17 eugend I've added a twist to the fix to 6623: if the error exists in the table, but is defined as an empty string, I don't look anymore for it in the DLL. This is useful for packages that do not want to display certain errors. 99-05-17 cgouge Bug 8521. Part 1 of the Hydra story for 1.1. This checkin includes support for the registry propogation system in TS5. When beginning a transaction, we call a special Hydra API to make a snapshot of .Default. We then do all of our per-user registry writes to .Default instead of HKCU. At the end of the install, we call another API and Hydra diffs the snapshot with the current state, propogating any changes to their registry system and from there to all users. This fix also elevates custom actions on per-machine Hydra 5 installs so that registry writes go to .Default and will be propogated by this system. Note: msiexec.exe is now marked as a hydra aware app in the PE header. 99-05-17 cgouge Bug 8843. Quick validation fix for bug in ICE17. Now correctly skips properties that aren't the full string when controls reference the binary table 99-05-17 chetanp bug 9409 - added new msidbLocatorTypeRawValue = 0x00000002 value to enum msidbLocatorType 99-05-17 chetanp bug 9334 - We have removed the source resoution calls that happen in registry, ini file and shortcut costing. We now remember if source resolution failed during selfunreg and skip it for the rest of the files that were installed on source (logging a debug error). 99-05-17 mattwe Bug 9081: The network icon has been updated to the latest version in current Windows. ----------------------------- Release 1.1.0513 ----------------------------- 99-05-13 mattwe Bug 8872: instmsi.msi now thoroughly uppercased for Windows Installer. 99-05-13 mattwe Bug 9417: instmsi.msi is now thoroughly frozen on schema 30, with action text and error messages from current builds. These must remain backwards compatible. 99-05-13 cgouge Bug 8882. On NT5 with client side caching enabled, we no longer cache the results of a component path request for an RFS component. The source is still considered valid though. If a share is CSC enabled and offline, the source is rejected and we fallback on the complete resolution process. 99-05-12 bench Fixed bug 9411: If running from a media (CD or floppy) with a blank volume label while the Media table specifies a non-blank label, maintenance mode installs would not accept the media, even though first-time installs did. This now works in maintenance mode as well. ----------------------------- Release 1.1.0512 ----------------------------- 99-05-23 mattwe Bug 9416: Updated instmsi/copymsi media sequence table 99-05-11 bench Bug 9374: introduced a new custom action type best described as a "delayed launch condition". The new type, 19, will display an error message and return failure to end the installation. 99-05-11 bench Bug 9320: fixed problem with mismatching volume labels and Media table-specified labels after a patch is applied. 99-05-11 cgouge Bug 9260, Validation, ICE61, a new vbscript ICE, checks the upgrade table for various problems, such as removing newer versions, not having public properties, etc. Available only in the full CUB file. 99-05-11 chetanp fixed bug 9349 - we now dynamically resize the buffer that holds the command line that is generated from the MsiAdvertiseScript API. This allows for greater total transform path length than before (which was at @850). 99-05-10 mattwe Per hgrant's request, custexe1.exe in testdb now has a file version in the table. 1.0.0.0 99-05-10 mattwe 9410: msimsg is now going to be released in the commondir (and built in individual flavors.) It also has a file version now for copymsi/instmsi. 99-05-10 mattwe 9406: msimsg.dll is now included with instmsi/copymsi. 99-05-10 mattwe 9141: When the installer initiates a reboot, the fact will be recorded in the event log. 99-05-10 mattwe 9402: Async custom actions were giving false memory leaks, (and missing real leaks) because we were checking for open handles on the parent thread rather than the CA. 99-05-10 eugend I've fixed bug # 6623: if Darwin cannot find an Error ar an ActionText entry in a package's table, it looks it up now in MSIMSG.DLL. I've opened bug # 9406 just to make sure MSIMSG.DLL gets into InstMsi/CopyMsi.exe. 99-05-10 bench Bug 9405: fixed MsiRecord memory leak in error cases in ComPlus script operations. 99-05-10 bench Bug 9262: added ActionData messages for the RegisterComPlus and UnregisterComPlus actions, and the associated ActionText table entries. 99-05-07 davidmck Fixed bug 9404. Turns out the format of the Shell Change Notify Extended Event will not actually work on NT5 due to problems marshalling the product code string across. Raymond Chen has worked out a correct way of doing it and I've checked in the darwin change for it. 99-05-06 cgouge Bug 9380. Darwin was elevating in the case where a product was installed both per-user and deployed per-machine. The per-user registration was skipped when determining the managed state, but was used for all other actions. Thus the install would end up elevated even though the per-user install should shadow the per-machine install. We now correctly find the per-user install and report that the app is not managed. 99-05-06 cgouge Bug 9166. When told to recache the package and given a product code, we ignore the last used source and immediately begin source resolution. If the search order has "m"edia first, we demote it to second and promote the source type that was second to first in the search order. The resolved source becomes the source for the install and the last used source. The modified search order is then discarded. If given a full path to a package and told to recache, we use the provided source. 99-05-06 mattwe 9367: Modified various error strings based on recommendations from UA. 99-05-06 chetanp fixed bug 9155 - we now allow installs that do not write anything under the HKCR regsitry hive to succeed on systems where the user is locked out from updating HKCR. 99-05-06 bench Bug 8698: we now return a new error code, ERROR_PATCH_TARGET_NOT_FOUND, when a patch cannot be applied either because the product is not installed or a different version of the product is installed. 99-05-05 mattwe bug 7967 - We now disable cancel effectively for the full UI. Hitting escape or the 'x' on the dialog won't do anything when the cancel button is hidden. 99-05-05 chetanp bug 9381 - we never remove registration for "filename only" registrations. the "filename only" registrations allow sharing of com registration such that each app has its own private copy of the server. "fusion" specs recommend that the registration itself be refcounted so that we know when to remove it. this has been punted for 1.1 99-05-05 bench Bug 9306: nested installs and uninstalls performed by RemoveExistingProducts will now display an error for problems initializing the nested install or uninstall. ----------------------------- Release 1.1.0505 ----------------------------- 99-05-04 davidmck Checked in more 64-bit issues. We can now install on Alpha64. 99-05-04 davidmck Fixed bug 9337 - we now generate an exception fault when we are out of memory and there is no user interaction. 99-05-03 mattwe Bug 8993: BackupFile now restores file attributes correctly when it restores a file that wasn't removed initially. 99-05-03 bench Bug 9084: fixed but in path expansion code that sometimes added a second backslash after the drive letter. This caused failures with relative paths for the database or transforms, among other things. 99-05-03 cgouge Fixed bugs 7589, 7684, 8153, 9353. Five changes to the SourceList UI. This involved changes to 2 existing string resources, dropping 1 existing string, adding 1 new string, and changing error.idt for one error. Loc work required. For gory detials, see the doc attached to 7589. ----------------------------- Release 1.1.0429 ----------------------------- 99-04-29 eugend Bug # 7753 again: I've changed the value of the Password attribute to 0x0200000, 2097152 in decimal. I've updated doc bug # 9355 as well. 99-04-29 tracyf Bug 9280 - Darwin now writes an "EstimatedSize" value under the Uninstall key. This value represents the estimated size, in KB, that the associated product is currently consuming on the user's machine (if the product is spread across more than one volume, the EstimatedSize is the summation across all volumes). This value is updated each time the user add/removes features during maintenance mode. 99-04-29 davidmck Fixed bug 9360 - the sorting routine for the volume cost list called PutInteger rather than PutHandle. 99-04-28 bench Bug 9356: fix assert during admin install of a package with an embedded cabinet. The bug was caused by a regression of bug 9233. ----------------------------- Release 1.1.0428 ----------------------------- 99-04-27 eugend Fixed bug # 7753: I've added the Password edit control stylebit, its value is 131072. If specified in the Attributes field of the Control table, it creates an edit control that displays all characters as an asterisk (*) as they are typed into the control. Doc bug # 9355 tracks this. 99-04-27 malcolmh Fixed bug 9006: Fix problem resizing our internal buffer when you have backslashes in your registry keypath value 99-04-26 chetanp "bug 8041 - remove class registry left overs in multiuser scenarios. 99-04-26 chetanp bug 9344 - fix RemoveFile action for folders set to be deleted upon uninstallation of components (from the RemoveFile table). 99-04-26 bench bug 8499: error string displayed during a binary patch application failure is now an authorable ship error. 99-04-26 davidmck Checked in further changes for 64-bit builds. Updated the object pool for both the database and the handler. See 64bit.txt for more details. 99-04-23 mattwe Bug 9138: The FDI server (cabinet/compressed) will now restart correctly when it receives an Open request in the middle of reading a file. 99-04-23 bench Bug 9122: Validation of Upgrade table and Upgrade actions is in. 99-04-23 bench Bug 9233: addition fix to this bug to handle packages with the old stream naming convention. 99-04-23 bench Bugs 9208, 9214: the following nested install types are no longer supported: relative msi path (23), property name/key (55) and asynchronous (+128). an error message will be displayed when one of these types is attempted. 99-04-23 bench Bug 8709: fixed thread handle leak that occured when asynchronous custom actions finished before the end of the installation. 99-04-22 mattwe Bug 9248 - refix - We must elevate to acquire token privileges. Before, we grabbed them pell-mell, and we just happened to be impersonated in the right scenarios. Now we do it the right way. 99-04-22 cgouge Bug 9122. To support the upgrade actions (specifically, RemoveExistingProducts) ICE27 now has a PostExecution phase, which ocurrs after InstallFinalize. Currently, RemoveExistingProducts is the only action valid there. 99-04-22 cgouge Bug 9324. Added InstallExecuteAgain information to ICE validation. (ICE27). Restrictions are the same as InstallExecute. ----------------------------- Release 1.1.0421 ----------------------------- 99-04-20 malcolmh Fixed bug 8478: New behavior for secure transforms. 99-04-20 bench Fixed bug 9233: nested substorage installs will now work with embedded cabinets. 99-04-19 mattwe The following files have been updated for use with instmsi: shfolder.dll imagehlp.dll msls31.dll usp10.dll riched20.dll 99-04-19 chetanp fixed bug 9168 - we now handle permanent components that were installed to different locations via different products. We now use separate GUIDS from {00000000-0000-0000-0000-000000000000} to {000000FF-0000-0000-0000-000000000000} to represent the system as a client product for possibly 256 different locations for a permanent component to be installed (via different product). Afterwards we simply keep using the {00000000-0000-0000-0000-000000000000} GUID. 99-04-16 bench Added new Upgrade functionality. In short, the new functionality allows easy upgrades between products with different product codes. For more information, see the spec on http://officeweb/specs/tco/darwinupgrades1_1.html and the design doc on \\bench4\public\upgrade design 1.1.doc. Documentation in msi.chm is pending. 99-04-16 bench Added new action: InstallExecuteAgain. The action is identical to InstallExecute but since it has a different name it can be used with InstallExecute in the same sequence table. 99-04-16 bench Changed schema.msi schema version to 102 for several changes made to the schema. The changes are: addition of Upgrade table addition of Class.Attributes column addition of Services.Description column Also bumped minor version of Darwin files. The version is now 1.02.BBBB.U. 99-04-16 bench Added new Class.Attributes column to schema.msi as part of the schema 102 additions. See relnotes entry "99-03-23 johndelo Bug 9094" for more information. 99-04-16 mattwe Fixed bug: 9197. We now impersonate while setting icon paths into shortcuts. This gives the shell on Windows 2000 the opportunity to recognize these as roaming paths. Fixed bugs 9288,9289: Several columns in the ServiceControl and ServiceInstall tables are now formatted. Fixed bug: 8993. We now clear and re-set the hidden, read-only and system attributes on the autoexec.bat file on Win9X while writing environment variables. Fixed bug: 8381. At the end of script execution on NT, we broadcast a WM_SETTINGCHANGE message to let the system know we've change environment variables. This allows you to change variables for new processes without requiring a reboot. ----------------------------- Release 1.1.0415 ----------------------------- 99-04-14 malcolmh Fixed bug 8908: We now have a Description column in the ServiceInstall table which allows an author to specify a description for a service. This column is presumed to exist only in databases with schema versions greater than 101. 99-04-14 cgouge Bug 8122 (part 2). Validation, added ICE60, which does the check for the file table that internal validation used to do. Displays a warning if an entry in the file table has a version but no language, and is not a font or companion file reference. 99-04-14 cgouge Bug 8122. The requirement that all files with versions have languages has been removed from the internal field validation. Validation of the "Version" data type now only checks that the version is valid. The language requirement will be in a new ICE, ICE60. 99-04-14 tracyf Bug 9299 - removed the FixedSize attribute from bitmaps in sample MSI's. 99-04-14 tracyf Bug 9297 - disabled the ValidateProductID ControlEvent in sample MSI's. ----------------------------- Release 1.1.0414 ----------------------------- 99-04-13 johndelo Schema fixes - bugs 9120 and 9163 Note that these fixes were propagated back to schema 100, so as to be incorporated into the SDK. All active databases and idt files have been updated (as far I can find). The following changes: LaunchCondition.Description is now non-nullable ODBCDriver.Description is not localizable _SummaryInformation.Application is "Windows Installer" _Validation updated to reflect LaunchCondition change. 99-04-12 malcolmh Fixed bug 9114: We now automatically suppress autorun during installs. 99-04-09 malcolmh Fixed bug 8444: AD: In no UI case Darwin does not log failure of installs due to LaunchCondition table 99-04-09 malcolmh Fixed bug 9116: We now write OutOfDiskSpace messages to the event log. 99-04-09 malcolmh Fixed bug 9217: Security: Should remove "everyone" read access from config.msi security descriptor 99-04-09 malcolmh Fixed bug 9036: CCPSearch, AppSearch stop searching once it encounters a drive it cannot access 99-04-09 malcolmh Fixed bug 8744: MsiGetUserInfo returns 1 when Organization name is not set. 99-04-09 malcolmh Fixed bug 9037. Changed the way we do shell notification for shortcuts 99-04-09 malcolmh Fixed bug 9236: AD: Darwin does not recover completely from an install that causes an AV 99-04-09 cgouge Bug 8161. When merging a table via MsiDatabaseMerge(), if two columns string columns have different length limits, we take the larger of the two limits (or 0 for unlimited length if either column has that limit). 99-04-09 cgouge Bug 9252. uisample.msi (and thus all of our tools installers) was now allowing the Admin target location to be changed via the edit box in the dialog, only via the browse dialog. Added a control event to set the directory. 99-04-09 cgouge Fixed bug 9088. The Path data type was unnecessarily strict when it came to properties and filenames. I removed the requirement that properties be surrounded only be '\' characters and the restriction that all components of the path satisfy the short filename syntax. It is now the LFN syntax, except when specifying a single level deep subdir. In that case you can use the SFN|LFN syntax. 99-04-09 mattwe Bug 9248: We now acquire our token privileges once per process, instead of every time we'd need the particular privilege. (Each place still makes a call, but we see that've already requested.) Should be a *big* advertising performance gain. (On the order of 30% time savings in some scenarios.) 99-04-08 cgouge Bug 9147, Validation. Added ICE58, which checks that you don't have more than 80 rows in the Media table. The ICE is found only in the full darice.cub file. 99-04-08 chetanp fixed bug 9251so that we now simply log the SelUnreg failure w/o putting up an error dlg. 99-04-08 chetanp bug 9246 - We now have SCRIPTFLAGS_REGDATA_CLASSINFO and SCRIPTFLAGS_REGDATA_EXTENSIONINFO for whether to populate the class / extension information. The MIME and verb information is tied to the extension information while the Clasid key under the ProgId is tied to the class information. We defined SCRIPTFLAGS_REGDATA_APPINFO to SCRIPTFLAGS_REGDATA_CLASSINFO | SCRIPTFLAGS_REGDATA_EXTENSIONINFO for backward level source compatibility. Internally we translate SCRIPTFLAGS_REGDATA_APPINFO_OLD to SCRIPTFLAGS_REGDATA_APPINFO to maintain backward level binary compatibility. 99-04-08 davidmck Fixed bugs 8733 and 8818 - removed INSTALLPROPERTY_VOLUMEPREFERENCE since it is not used from msi.h. Removed INSTALLPROPERTY_ADVTFLAGS since it it not public. 99-04-08 tracyf Fixed bug 9225 - for files extracted from cabinets, we were incorrectly setting the date/time, such that it was 7 or 8 hours off (dependiing on daylight savings) from the source file's date/time. We now properly set the date/time as universal (not local) time. In addition, to be consistent with how we set the date/time for uncompressed files, the "created" and "modified" times are set to that of the source file, while the "last accessed" time is set to the current time (i.e. the time of the install). 99-04-07 eugend Fixed bug # 9206: CMsiDialog::WindowShow() does not fail anymore if the next window in the tab-order that can take the focus is a child window of a Darwin control. 99-04-07 eugend Fixed bug # 9232: ship errors do not start anymore in "Error nnnn: " string, but this piece of info is still written into the log file. 99-04-07 eugend Fixed bug # 9249: DirectoryCombo controls on AdminBrowse dialogs do not get updated now whenever the user selects a different directory in the DirectoryList control. ----------------------------- Release 1.1.0407 ----------------------------- 99-04-06 cgouge Bug 9235, Validation. ICE20 will not fail when looking for the name of the dialogs to validate in the UI sequence tables if the tables do not exist, but LIMITUI is not set either. 99-04-06 cgouge Bug 9077. Validation. ICE26 will no longer complain about required actions in the UI sequence tables if LIMITUI is set in the package. 99-04-06 mattwe Bug 9189: We now only set in the user's environment variables when we're running from the service. The client normally doesn't need this, and when we're running the client in somebody else's process, it's a bad thing. 99-04-05 eugend UI Sample uses now Tahoma font instead of MS Shell Dlg and buttons on Cancel dialog are 4 dlus appart. 00-01-05 chetanp bug 8062:we now write the HKCR information associated with a component on NT5 even if a higher versioned keyfile already existed, to ensure that HKCR entries are not missing because the better keyfile was installed by another user (or per machine and this installation is per user and vice versa). These writes are different from the regular writes in that we write the registry entries only if they are absent in an attempt to prevent overwriting possible writes from the better component. 99-04-02 eugend All the fixes suggested so far are in the UITESTDB.MSI. We're still waiting for the new icons. 99-04-02 tracyf Bug 7954: if any error occurs while attempting to copy a file, we now silently ignore (and log) the error if ALL the following conditions are true: 1) There's an existing file on the machine. 2) Our source file is unversioned. 3) Our source file is not authored as a Companion file. 4) The "Force All" reinstall mode (the 'a' flag in the REINSTALLMODE property) is NOT set. In addition, on uninstall, errors attempting to delete files will now be ignored and logged as well (in the delete case, regardless of whether the file is versioned/unversioned, companion or not, etc). Note that when logging ignored errors, we do not attempt to re-format the error string - we send it to the log as is. Thus, the message in the log will not explicitly mention that the error was ignored, but the fact that the install proceeds implies that. Not ideal, but per triage the extra work of adding a number of new error strings to explicitly call this out was punted. Also note that when logging ignored errors in a verbose log, you may see the error string appear more than once. The first is because of our automatic verbose logging of any posted error record. The second is explicitly sent to the log when we decide to ignore the posted error - this is done so that ignored errors get logged in the non-verbose case as well. 99-04-01 mattwe Bug 9209 - For remote volumes, we no longer create config.msi directories. This is to plug security holes where we can't adequately secure the backup directory. 99-04-01 eugend I've added new bitmaps to UISample. ----------------------------- Release 1.1.0331 ----------------------------- 99-03-30 cgouge Bug 9207. Validation. string buffer problems generating an error message in ICE03 if the primary keys were really long (collectively greater than 255). Fixed so that the length is not limited. 99-03-30 malcolmh Fixed bug 8962: Darwin does not handle well the installing of a package per user and per machine together on a machine. 99-03-30 eugend Fixed bug # 9156: Darwin doesn't cause anymore crashes in SHELL32.DLL on NT5. 99-03-29 cgouge Bug 9144. ICE56 has been updated to exempt from its check (for bogus admin installs) any directory which has no files and which has no descendants that have files. This is a relaxation of our restriction that every MSI has a single root dir so that Beagle can pass validation with their default shortcut component. 99-03-29 cgouge Bug 9122 (ICE45 part). Validation: ICE45 updated to handle in the new upgrade table schema and check for reserved bits in the appropriate column. 99-03-29 malcolmh Fixed bug 9140: Loop condition in FeatureCache. 99-03-29 davidmck Fixed bug 9145 - Mark our unicode log files as unicode. 99-03-29 malcolmh Fixed bug 8847: Sourcelist not being updated by /fvomus or /i REINSTALLMODE=vomus 99-03-29 malcolmh Fixed bug 8478. We now cache secure transforms on the local machine. Source transforms have been rolled into secure transforms. Any reference we see to a source transform will automatically be treated like a reference to a secure transform. 99-02-29 mattwe bug 8812 - The Product Icon is now written with %USERPROFILE% when possible for roaming. 99-03-29 chetanp bug 7883 - shortcuts were not being created for advertised features of published apps. 99-03-26 tracyf Fixed bug 8938. Darwin was duplicating multiSZ data in the registry when writing more than one multiSZ value under a single registry key. 99-03-26 tracyf Fixed bugs 9112 and 9138. 9112 involves the lack of automatic retry in some cases during a quiet install, if the net connection is lost. 9138 is similar, but specifically involves loss of the net connection when the source is a cabinet. 99-03-26 bench bug 9195: added a Language value to the per-machine configuration info. this may be used by future versions of Darwin to determine the language of an install that belongs to a different user. the exact key and value are: Key: HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall\[ProductCode GUID] Name: Language Data: language id (1033 for example) Type: REG_DWORD 99-03-26 mattwe Fixed bug # 9031: There is a new property REBOOTPROMPT, which when set to Suppress will prevent any user interaction before a reboot. It won't prompt any new reboots, it just prevents asking the user about it. 99-03-25 eugend Fixed bug # 9177: I've eliminated the Reinstall button from MaintenanceTypeDlg. 99-03-25 eugend Fixed bug # 7925: if CreateFontIndirect fails in CMsiControl::ChangeFontStyle, we report now the value of GetLastError(). 99-03-25 eugend Fixed bug # 8707: I've eliminated leaking thread created in FDI_Interface::LaunchFDIServer(). 99-03-24 malcolmh Fixed bug 9179: Too many cabinets can cause database cache failure 99-03-24 malcolmh Fixed bug 9006. We now handle registry value keypaths where the value name contains a backslash. 99-03-24 cgouge Bug 8739, 9151. The ability to select and browse to media is also gated by the user rights and elevation state of the package. If the user is not an admin, s/he can only use media on non-elevated installs. The policies that control this behavior are the new DisableMedia and AllowLockdownMedia policies. Note that DisableMedia is very similar, but not exactly the same as, leaving "m" out of the search order. Media being disabled for security/policy reasons will cause the lastused source to be rejected if it is a media entry, whereas removing "m" from the search order will accept the media entry as long as it is the LastUsedSource. This leads to the case where you could end up with a sourcelist dropdown that is compeltely empty. and browsing is also disabled, the sourcelist dialog is now utterly useless. In this case, if browsing is also disabled, we don't even bother to show the dialog, 99-03-24 cgouge Bug 8738, 9151. The ability to patch is now gated by the same admin/elevation logic as Browsing described below. The policies for this are DisablePatch and the new AllowLockdownPatch policy. 99-03-24 cgouge Bug 8737, 9151. The default security level for browsing in the sourcelist dialog is now more secure. If a user is not an admin, s/he cannot browse if the install is elevated. Users can browse for non-elevated installs, and admins can browse whenever they want. The DisableBrowse policy will always disable browsing, and the new AllowLockdownBrowse policy will allow anybody to browse. The ability to recache the msi from unblessed sources is gated by the same log and policies. 99-03-24 cgouge Bug 8320, logging is now correct when renaming files on reboot. 99-03-24 chetanp fixed bug 8417 - For RFS installed components having missing auxiliary registry key paths (on NT5), MsiQueryFeatureState used to return INSTALLSTATE_SOURCEABSENT instead of INSTALLSTATE_BROKEN even if the source was infact present. NOTE: We now return INSTALLSTATE_BROKEN if the auxiliary registry key path of a RFS installed component is missing (inplace of INSTALLSTATE_SOURCEABSENT) when the source is infact present. On the other hand if the source is missing, we still return INSTALLSTATE_SOURCEABSENT irrespective of whether the auxiliary registry key path is present. What this achieves is preventing the trigger of a repair when the user has cancelled the source resolution dialog. ----------------------------- Release 1.1.0324 ----------------------------- 99-03-24 eugend Fixed bug # 9164: text on ResumeDlg is corrected and sequence numbers in AdminUISequence and InstallUISequence tables match the respective values in TEMPLATE.MSI. 99-03-24 eugend Fixed bug # 9108: if Japanese KANA IME is used, MaskedEdit control switches properly to English keyboard when any of its edit fields receives focus. 99-03-24 eugend I've fixed bug # 8468: GetLastError() will return the correct value if LocalLoadLibraryEx() fails on Alpha machines. 99-03-23 bench bug 9154: MsiCreateTransformSummaryInfo will no longer fail if either db is missing the PageCount suminfo property. Instead the current Darwin version is used as the minimum version to process the transform. This is a change to the fix made for bug 8781. 99-03-23 bench uisample.msi is now built with just the necessary tables. It no longer contains empty tables like File and Registry. 99-03-23 johndelo Bug 8290 Automation FileVersion now uses internal routines. Optional 2nd argument is a boolean, default is False: False to return version number string for a file True to return language ID as a string for a file 99-03-23 johndelo Bug 8332 Disabled ODBC drivers/translators don't register 99-03-23 johndelo Bug 8420 Updates not allowed after execution of queryies having no result set, e.g. CREATE TABLE... Note that all views must be executed before any update operations can be performed (there were a few cases where the execute could be omitted - no more). 99-03-23 johndelo Bug 8453 Cabinet file extraction is now case-insensitive 99-03-23 johndelo Bug 8689 Packages with neutral codepage resolved late to prevent BiDi handling of English text. When database codepage is neutral, the codepage used for font selection is determined by the install language. 99-03-23 johndelo Bug 8795 MsiRecordGetFieldCount returns -1 if bad handle 99-03-23 johndelo Bug 8982 Fix to prevent failure of simple installs with non-registered components (NULL ComponentId) 99-03-23 johndelo Bug 9062 Prevent AV when GetDateFormat fails (was due to use of language unsupported by NLS) 99-03-23 johndelo Bug 9094 Allow bare file name for COM servers. Attributes column added to Class table. (but not put into schema until it is bumped to 102). If column is present and msidbClassAttributesRelativePath is set (low order bit), then the file name only is registered instead of the complete path, allowing the server in the current directory to take precedence, and allowing multiple copies of the same component. 99-03-23 davidmck Checked in code and tools for 64-bit Intel builds. Still have work to do and this should not affect the Win32 builds. 99-03-23 cgouge Bug 8353, msival2 installer space requirements updated, CUB file now part of the install. 99-03-22 mattwe Fixed bug 8469. You can now apply patches from URLs. This involves several changes to opening storages, devs should see msiutil.cpp for OpenMsiStorage, and OpenAndValidateStorage for all your read-only storage opening requests. 99-03-22 mattwe Fixed bug 9146. We no longer unload URLMON between installs from the service. This has a performance hit, but prevents hangs caused by bugs in URLMON. 99-03-22 bench Added the ComPlus table, bring the schema version to 101. 99-03-19 malcolmh Fixed bug 9046. The potential reboot race condition has been eliminated. We should now reboot whenever we trigger a reboot. 99-03-19 chetanp bug 9131 - fixed code defect handling DBCS reg. key paths when "\" is the trailing byte of a 2 byte char which is the last char in the registry value. Was causing key path detection to always fail. ----------------------------- Release 1.1.0319.1 ----------------------------- 99-03-19 bench bug 9153: fixed regression from bug 9013 that caused patch application to fail. ----------------------------- Release 1.1.0319 ----------------------------- 99-03-18 malcolmh Fixed bug 9001: AD: per-user registry leak in darwin in services.exe 99-03-18 cgouge Bug 9143, validation: ICE18 no longer checks directories that are root directories. 99-03-18 bench bug 6933: ixoUpgradeCodePublish/Unpublish are now written to advertise scripts in the MsiAdvertiseProduct api. 99-03-17 bench bug 9064: fix for nested installs that require a reboot. when a nested install replaces a file-in-use, or triggers a reboot in some other way, the reboot request is held by the parent install and used to prompt at the end of all installs. previously if a nested install required a reboot the install would immediately fail ungracefully. 99-03-17 cgouge Bug 7265. Validation. Limit on max components per feature reduced to 800 due to registry limitations. 99-03-17 cgouge Bug 8118. Validation. ICE56 was not reporting an error for long root directories that were not TARGETDIR. 99-03-17 malcolmh Fixed bug 9123. We have a new api: MsiEnumRelatedProducts. It can be used to enumerate all products with a particular upgrade code. 99-03-17 chetanp fixed bug 8862 - There are scenarios where darwin did not re-register the component during a reinstall of the component. 1. When darwin does an implicit reinstall of the component. 2. A (broken) component has been set up for an explicit reinstall and a custom action of type 35, changes the target path for the component. Fixed so that we re-register the component in cases 1. and 2. above. NOTE: case 2 is being used by office today but might not work in the future if we decide to never allow changing directories of installed components (no matter if they are broken as in this case). 99-03-17 eugend fixed bug # 9055: Darwin's basic UI won't come up anymore maximized/minimized. 99-03-16 chetanp fixed bug 8425 - bogus shortcuts created if feature is advertised on a system with the updated shell AND the DISABLEADVTSHORTCUTS property is set. 99-03-16 bench bug 9110: fixed uninitialized variable that prevented the ServicePackLevel property from being set in certain builds (but not 1.0.5104) 99-03-15 bench bug 9097: picked up new mspatcha.lib and mspatchc.lib files, which are compatible with the VC5.0 link.exe. The previous versions were not. This change effects the SDK only - not the bits used by Office 2000 or Win2000. 99-03-10 tracyf Bug 9013 - added the ability to copy files decompressed from cabinets to multiple locations. A doc bug to explain this is imminent, but the basic idea is to include multiple entries in your File table, each with the same FileKey, except differing only by case. These files should have the same sequence numbers (or at worst, there should be no unrelated File table entries with intervening sequence numbers). Each of these files can be linked to different components, or can be tied to the same component, in which case the destination name given in the FileName column must be different. 99-03-10 malcolmh Fixed bug 9038. Cannot install Office from CD when AllocateCDRom policy is set. We now impersonate when attempting to access the CD or removable drives. This allows us to operate in lock-down environements where _only_ the user has access to the drive (not even LocalSystem has access). 99-03-09 tracyf Bug 7493 - fixed so that file copy errors now return iesFailure instead of iesUserExit. 99-03-09 chetanp bug 8568 - fixed code so that we publish advt information (shortcuts, class, publishcomponents) tied to a child feature in advertised state during a reinstall where a transitive component becomes enabled 99-03-08 bench Bugs 7793, 7853 and 8316: added two new return codes for cases where a reboot is required. The return codes are returned from the APIs, msiexec.exe and instmsi.exe. ERROR_SUCCESS_REBOOT_REQUIRED: returned when a reboot is required to complete the install but the reboot was rejected by the user or suppressed with REBOOT=Suppress or ReallySuppress. ERROR_SUCCESS_REBOOT_INITIATED: returned when a reboot has been triggered by Darwin. note that this is a new error code added for this bug. it is defined in msi.h and will be added to the NT5 winerror.h. 99-03-08 eugend fixed bug # 8785: "can't install product when uninstall is interupted in the middle". 99-03-08 malcolmh Fixed bugs 8390, 8389, 8392. - Hydra installs from user sessions now work (fixed the mutex problem) - Installs from user sessions are prevented unless the user is an admin and the EnableAdminTSRemote policy is set. Admin installs and the creation of advertise scripts are exempt from this restriction (if you're an admin) Test automation note: we have a new return value from engine.initialize: ieiTSRemoteInstallDisallowed 99-03-05 malcolmh Fixed bug 7799: When SCRIPTFLAGS_CACHEINFO is set, MsiAdvertiseScript doesn't strip off the filename from the transform path. This means that profile transforms can now be used through app deployment. 99-03-05 mattwe Bug 8323: During reinstall (patching counts,) where shortcuts or machine data is being set, icons will be re-cached. The REINSTALLMODE property doesn't need to be set. 99-03-05 eugend fixed bug # 5296: I've changed the format of the notification sent to the NT5 shell at the end of the installation. Doesn't affect other OSes. 99-03-05 mattwe Bug 9045: Fixed potential global atom leak when client window can't be found for verbose logging. 99-03-04 chetanp bug 8991: fixed crash in font registration code during a repair. 99-03-03 malcolmh Fixed bug 8842: RemoveFile infinite loop when removing readonly folder Fixed bug 9027: Path::GetSelfRelativeSD fails to read large descriptors Fixed bug 9028: SECURITY: rollback of RemoveFolder on a folder with big security descriptor wipes all security 99-03-03 mattwe Bug 8989: You can now write 0x80000000 to the registry as a DWORD. Involves several small changes as we've added a flag to GetIntegerValue that returns more information about the value returned. 99-03-03 mattwe Bug 8812: We've changed the PRODUCTICON property to ARPPRODUCTICON. The GetProductInfo name hasn't changed. 99-03-03 johndelo Bug 8435: Vietnamese text corrupted on Unicode build. Removed use of WC_COMPOSITECHECK in Unicode->ANSI conversion. 99-03-02 cgouge Bug 8917: Validation. Due to an earlier bug fix (7846), several ICEs were generating info messages if critical tables were missing. These messages would be filtered away by tools and never be seen again. They should actually be errors. The offending ICEs were ICE18, ICE21, and ICE22. They now explicitly create error messages in these cases. 99-03-02 cgouge Bug 8899: Validation, ICE43 modified to exempt from this ICE shortcuts that are created in non-profile directories, as these shortcuts would fail one of ICE57 or this ICE no matter what they did. (and this one was wrong). 99-03-02 cgouge Buc 8843: Validation, ICE17 updated to allow entries in the control table to use properties to reference items in the Binary table. (Bitmaps, Icons, etc) 99-03-02 cgouge Bug 8826: Validation, ICE33 updated to check for TypeLib entries in the registry table. 99-03-02 cgouge Bug 8702. Validation: Added ICE57, which checks that components don't contain both per-machine and per-user data. It also does a few checks on -1 root reg-keys to ensure that you don't get any goofy install or detection problems. TestDB was modified to pass this ICE by splitting several components that contained both types of data. 99-03-02 chetanp fixed bug 9000. This was a leak of registry keys that we failed to close during app deployment, when MsiAdvertiseScript was called with the SCRIPTFLAGS_VALIDATE_TRANSFORMS_LIST flag. One can see this leak with previous leaks when MsiAdvertiseScript is called with the SCRIPTFLAGS_VALIDATE_TRANSFORMS_LIST when the product is already advertised/ installed on the machine. No transforms are needed, just setting the flag causes this. 99-03-02 malcolmh Fixed bug 8797: msipath.findfile fails when accessing inaccessible directory. AppSearch will now continue even if a directory that it's searching is inaccessible. 99-03-02 chetanp fixed bug 8462. We should not count products who installed components as disabled as true clients during uninstallation. We should remove the entities tied to a component when the last product that did not install the component disabled is uninstalling. This bug leads to files/ registry entities being orphaned if the product that installed that component disabled is uninstalled last. 99-03-02 chetanp fixed bug 7412. Fixed code that invokes an implicit reinstall of a feature to pass in the REINSTALLMODE_USERDATA as well. This code is used when a feature is detected to be broken, when MsiProvideComponentFromDescriptor and MsiProvideQualifiedComponent or the MsiProvideComponent API is called with the dwInstallMode arg = INSTALLMODE_DEFAULT. This is what is used by the shell and OLE when calling MsiProvideCFD. This can cause scenarios where clicking on the shortcut causes darwin to keep reinstalling over and over again (there is a component in the feature or in the ancestry that has a HKCU registry key path that is broken). 99-03-01 eugend Fixed bug # 9008: in CONTROLS.CPP we better handle missing or incorrect values of PROMPTROLLBACKCOST property. 99-03-01 cgouge Bug 9002: _Validation table update. Control.Text column is now type "Formatted" 99-03-01 davidmck Fixed bug 8066 again, this time checking in the bld1402.16 version of shfolder.dll. 99-02-26 eugend As a result of fixing bug # 8922, AppId table's RemoteServerName got changed into Formatted (from Text). I've opened DOC bug # 9011 to track this. 99-02-26 mattwe Fixed bug 8812: New property PRODUCTICON is used to support a per-package primary icon. It is registered during advertisement/publishing/installation, and the final path is available through MsiGetProductInfo(..., INSTALLPROPERTY_PRODUCTICON) This is available on all platforms, but will primarily be used by the new ARP panel on Windows 2000 99-02-25 cgouge Bug 8322. DisableRollback policy is now per-machine as well as per-user. If either location has the policy set, Rollback will be disabled. 99-02-25 mattwe Fixed bug 5535: The Environment operations now have consistent error messages in all cases, and will absolutely not kick off rollback without warning. 99-02-25 bench fixed bug 8781: MsiCreateTransformSummaryInfo checks the Page Count (minimum installer version) properties of the two dbs and uses the larger of the two for the transform Page Count property. Previously it always set the minimum version for the transform to the current installer version, but this made transforms incompatible with older installer versions when they weren't necessarilly so. 99-02-25 davidmck Fixed bug 8066 - took version 5.0.2014.204 of shfolder.dll to be in sync with IE5. 99-02-25 davidmck Fixed bug 8983 - updated to usp10.dll version 1.175.0.1 to be in sync with Office. 99-02-23 mattwe Bug 8343: checking the ownership of registry keys and and security descriptors has been streamlined, and now isn't affected by DACLs in the SD. 99-02-23 mattwe Bug 7730: GetTempDirectory on NT now calls GetTempPath instead of the work-around for 9x done for #4036. The end result is that when tmp and temp are undefined, NT now goes to the windows folder instead of the windows volume\temp. (c:\temp) 99-02-23 cgouge Bug 8463. IsAdmin check extended to use NT5 specific CheckTokenMembership API that handles special NT5 only cases. 99-02-23 eugend UISample.msi and UITestDb.msi got checked in. UISample.msi is a template database featuring a UI that wants to be in line with current wizard design requirements. UITestDb.msi is the old TestDb.msi driven by this new UI. I've just checked in the changes I've made to the makefile; the IDTs and IBDs were already checked into the \data\UISample directory. 99-02-23 malcolmh Fixed bug 8793: Darwin: Unable to deploy app that has already been assigned and installed by admin. 99-02-23 mattwe Bug 8500: InstMsi now closes its service and service manager handles correctly. 99-02-23 cgouge Bug 8832. Typos in schema _Validation table. 99-02-22 cgouge Bug 7722: Mergemod.dll: Support added for Darwin predefined property directories in a merge module. Previously it was very common to get merge conflicts when using one of these directories. Now you can GUID-ize these directories (as you do other module directories) and the merge tool will dynamically generate actions that set this GUIDized property to the appropriate non-guidized property. 99-02-22 cgouge Bug 8130: Mergemod.dll. Added logging when base action is completely missing from Module*Sequence tables. 99-02-22 cgouge Bug 8229, Mergemod.dll. Logging when action in Module*Sequence tables does not get processed because it doesn't have an ancestor which was a standard action with an assigned sequence number. 99-02-22 cgouge Bug 8321. Mergemod.dll, logging for CAB extraction. 99-02-22 cgouge Bug 8391. Mergemod.dll. Log message had spaces between characters. 99-02-22 malcolmh Fixed bug 8875: RFS shortcut fails to provide Network Resource Dialog when Explorer.exe FEATURECACHE returns SOURCE_ABSENT. Fixed the regression from bug 7854: we no longer do feature caching from MsiProvideComponentFromDescriptor. We also no longer feature-cache the INSTALL_SOURCEABSENT state. 99-02-22 malcolmh Fixed bug 8933. Fixed our failure to run EXE custom actions on Win9X. 99-02-22 bench bug 8906: file replacement operations in wininit.ini are now accomplished by a single rename line. Prior to this change such operations were done with a delete followed by a rename. This fix was made to allow for a workaround to a Win98 bug. The bug would sometimes cause the wininit.ini file to be processed multiple times, and the delete lines would remove the new files the second time through. 99-02-22 bench bug 8949: removed unsupported property INSTALLPROPERTY_UPGRADECODE from msi.h. ----------------------------- Release 1.1.0212 ----------------------------- 99-02-12 malcolmh Fixed bug 8845. We now prevent EXE custom actions from elevating when the install is not managed. 99-02-12 malcolmh Fixed bug 8841 -- Added these properties to our secure list: > FILEADDSOURCE, > FILEADDDEFAULT, > AFTERREBOOT, > EXECUTEACTION, 99-02-12 cgouge Bug 8837. Summary info of packages updated to 100, schema version removed from title. ----------------------------- Release 1.1.0210 ----------------------------- 99-02-10 davidmck Fixed bug 8821 - Changed copyright in instmsi to 1999. 99-02-10 murate Implemented COM+ Registration support. ----------------------------- Release 1.1.0000 -----------------------------