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

5745 lines
293 KiB

  1. Darwin Setup Development Notes for Testing Releases
  2. -----------------------------
  3. Release 0.10.00.3702
  4. -----------------------------
  5. 97-12-31 johndelo Unicode builds are now functional. A known problem is
  6. that the rich text edit control does not format.
  7. It is important at this point that the database
  8. functions work win Unicode to facilitate localization.
  9. 97-12-29 bench added support for applying a patch to an advertised-
  10. but-not-installed product. In this case we simply
  11. register the patch for future use without installing
  12. anything. When the product is finally installed, it
  13. will be patched at the same time.
  14. -----------------------------
  15. Release 0.10.00.3630
  16. -----------------------------
  17. 97-12-29 davidmck Added DllGetVersion call to msi.dll. Standard for
  18. system dlls.
  19. 97-12-29 davidmck Checked in the delay-load linker from OTOOLS9. We
  20. now delay loading of User and GDI.
  21. 97-12-28 malcolmh Added ixoMediaSourceListPublish. Removed
  22. media-related arguments to ixoSourceListPublish. We now register
  23. all volume labels and disk prompts for a product,
  24. not just Disk 1's. We also now register the relative
  25. path to the MSI on the CD.
  26. 97-12-26 malcolmh Source Management: Added the ability to have a
  27. package located at an arbitrary location on a CD, not just
  28. at the root. Added a parameter to the
  29. IxoSourceListPublish op to support this. Bumped the script version.
  30. Added registration of a relative path as the
  31. default value under the Media sourcelist key.
  32. -----------------------------
  33. Release 0.10.00.3626
  34. -----------------------------
  35. 97-12-23 tracyf Fixed bug 3520. As noted in the bug resolution, the
  36. fix required the removal of the up-front directory
  37. writability checks that were being performed during
  38. the CostFinalize action. See also related bugs 817,
  39. 1162, and 1824.
  40. -----------------------------
  41. Release 0.10.00.3623
  42. -----------------------------
  43. 97-12-22 malcolmh Almost all of the sourcelist spec is now
  44. implemented. Product level source management works except nested
  45. installs and URL sources.
  46. 97-12-22 malcolmh The IxoSourcesListPublish opcode now has 3
  47. arguments: a media label and disk prompt have been added. The
  48. script version has been bumped to 4 as a result of
  49. this change.
  50. 97-12-22 malcolmh Fixed bug 3106. We now support inserting temporary
  51. rows via SQL, using the syntax: INSERT INTO {table}
  52. ({column-list}) VALUES ({constant-list}) [TEMPORARY].
  53. 97-12-19 malcolmh Fixed bug 3714. We now handle UNICODE messaging through
  54. external UI handlers correctly.
  55. 97-12-19 malcolmh Fixed bug 3674. We now correctly rollback product
  56. and user registration and unregistration.
  57. DEV: The conman's RegisterProduct,
  58. UnregisterProduct, and RegisterUser functions have moved into
  59. execute.
  60. TEST: MsiConfigurationManager and MsiServer no longer
  61. have the RegisterProduct, UnregisterProduct, and
  62. RegisterUser methods.
  63. -----------------------------
  64. Release 0.10.00.3619
  65. -----------------------------
  66. 97-12-18 johndelo ODBC database access has been removed from MSI.
  67. Eventually a tool will be finished to import/export
  68. from ODBC databases (including Access .MDB files).
  69. Only MSI databases are supported by the installer now.
  70. No external API changes, but internal automation has
  71. deleted the database type argument (for a short time
  72. the old 3-argument CreateDatabase calls will be supported).
  73. 97-12-18 johndelo Localizable columns are now indicated in the database
  74. schema internally with the icdLocalizable bit, and in the
  75. .idt files with "L" or "l", rather then "S" or "s".
  76. Schema, Template, Testdb, Simple, Minimum, OdbcTest are updated.
  77. Other databases need to updated to be compatible with the
  78. localization tools.
  79. 97-12-18 johndelo Merge and Transform schema comparison checks have been
  80. relaxed to ignore differences in the localization bit
  81. (S vs. L) and SQL column width specifications, i.e. S32.
  82. 97-12-18 malcolmh Checked in msidiff.cpp. This tool compares msi
  83. packages and tells you whether they're the same. It sets
  84. an errorlevel of 0 if they're the same, 1 if they're
  85. different, and >1 on error. This tool is not currently
  86. dropped but can be made by using the MSIDIFF target.
  87. 97-12-17 malcolmh Fixed bug 3642. We now reject invalid modes to
  88. MsiProvideComponent.
  89. 97-12-17 malcolmh Fixed bug 3630. This was a bug in MsiEnumClientsW.
  90. 97-12-17 malcolmh Fixed bug 2224 (again). We now support leaving off the
  91. ".msi" extension when launching an install. If we can't
  92. find the path you specify then we'll tack on ".msi" for
  93. you if you don't specify your own extension.
  94. 97-12-17 malcolmh Fixed bugs 3684, 3698: Changes in transform
  95. generation:
  96. 1) If you attempt to generate a transform between
  97. databases that are the same you'll get an error
  98. (ERROR_NO_DATA from the API or a Darwin error from the
  99. automation layer).
  100. 2) If you encounter an error during transform
  101. generation the transform file is not written.
  102. 3) MsiDatabase.GenerateTransform's storage object can
  103. now be Nothing. If you pass in Nothing then we'll
  104. simply compare the databases, returning when the first
  105. difference is found. Return values are as described
  106. in 1), above.
  107. 4) MsiDatabaseGenerateTransform can now take a NULL
  108. or empty string for its file parameter. This has the
  109. same effect as passing in Nothing as described in 3),
  110. above.
  111. 97-12-17 bench Fixed bug 3683. We no longer format property values with
  112. FormatText before writing them to the log in the property
  113. dump, since the code doesn't format the values of a property
  114. before using it.
  115. 97-12-17 malcolmh Fixed bug 3498. We now support language neutral in
  116. the Template summary info property. Specifying 0 or no
  117. language indicates that a package is
  118. language-neutral. A language-neutral package will run on any
  119. language and we won't apply any language transforms. Note
  120. that languages are now separated by commas. (see below
  121. for details on the Template summary info property
  122. format).
  123. 97-12-17 malcolmh Fixed bug 3561. We now validate the platform
  124. specified in the summary info. This required the following
  125. changes:
  126. 1) A new ieiEnum return from Engine.Initialize has
  127. been added: ieiPlatformUnsupported. This caused some
  128. ieiEnum values to change.
  129. 2) The syntax of the Template summary info property
  130. has changed. The new syntax is: [platform
  131. property][,platform property][,...];[language id][,language
  132. id][,...].
  133. Some examples of different platform designations:
  134. Alpha,Intel;1033
  135. Intel,Alpha;1033
  136. Alpha;1033
  137. Intel;1033
  138. ;1033
  139. 3) Specifying no platform implies that the package
  140. is platform-independent, and we'll allow it to be run
  141. on any platform. Otherwise, if the current platform
  142. doesn't match one of the platforms you specify then
  143. we'll return ieiPlatformUnsupported and refuse to run
  144. the package.
  145. 4) A new external error code,
  146. ERROR_INSTALL_PLATFORM_UNSUPPORTED, has been added.
  147. 97-12-17 davidmck Added version checking to instmsi and created
  148. copymsi which does not do version checking.
  149. We version check just msi.dll and if instmsi has a
  150. newer one, we copy over msi.dll, msiexec.exe and
  151. msihnd.dll.
  152. If any of those three are in use, we schedule them
  153. all for replace on reboot.
  154. Also added a timebomb to instmsi.
  155. -----------------------------
  156. Release 0.10.00.3616
  157. -----------------------------
  158. 97-12-15 johndelo Fixed conditional expression evaluator to correctly
  159. processs feature and components states. They were using
  160. internal state values rather than those published in
  161. the doc and MSI.H, and were failing on removed components.
  162. 97-12-15 johndelo Nested installs are now functional, according to the
  163. Custom Action spec. Reboot handling may be incomplete for
  164. child installs, and progress info is not display correctly.
  165. Nested installs sequenced between InstallValidate and
  166. ExecuteFinalize will be merged into the parent's script.
  167. 97-12-15 chetanp Provided the ability for sharing advertisement
  168. information for the Extensions, ClassIds, ProgIds,
  169. TypeLibs, Published Components (and Shortcuts) amongst
  170. products. This is needed because there are several
  171. components (building blocks like VBA) that are shipped with
  172. the several products which may individually advertise
  173. this information. Here we allow the advertisement to
  174. be around till the very last product chooses to
  175. unadvertise it. This is achieved this sharing of
  176. advertisement information via Darwin Descriptor lists. This
  177. is simply a MULTI_SZ list of Darwin Descriptors.
  178. For a feature of a product that serves as a server
  179. for an advertised entity (like Extension, ClassId,
  180. ....) we follow the following rules:
  181. 1. Whenever the feature is advertised, installed or
  182. reinstalled, its Darwin Descriptor is (placed at)/
  183. (moved to) the beginning of the list.
  184. 2. Whenever the feature is uninstalled its Darwin
  185. Descriptor is removed from the list.
  186. 3. The entire advertised Class/ Extension/ ProgID/
  187. MIME/ TypeLibrary/ Published Components information is
  188. removed only when the last Darwin Descriptor in the
  189. associated list goes away.
  190. 4. The MSI APIs that deal with Darwin Descriptors
  191. (MsiProvideComponentFromDescriptor and
  192. MsiProvideQualifiedComponent) will use only the first Darwin
  193. Descriptor in the list.
  194. Support for sharing shortcuts has not been
  195. implemented due to certain limitations with the amount of
  196. information we can store within the path field of
  197. shortcuts.
  198. 97-12-15 chetanp changed ProcessFileFromData function to call
  199. RemoveFile on uninstall. This fixes the icons not being
  200. removed issue.
  201. 97-12-15 chetanp Changed opcodes ixo -ComponentPublish,
  202. ComponentUnpublish, RegClassInfoRegister, RegClassInfoUnregister,
  203. RegExtensionInfoRegister, RegExtensionInfoUnregister,
  204. ShortcutCreate, TypeLibraryRegister,
  205. TypeLibraryUnregister to take a Feature, Component rather than a
  206. Darwin Descriptor so as to compose the DD on the execute
  207. side.
  208. 97-12-12 malcolmh Fixed bugs 3617, 3592. Incorrect resolution of
  209. SOURCEDIR when running from media.
  210. -----------------------------
  211. Release 0.10.00.3612
  212. -----------------------------
  213. 97-12-10 johndelo Opcodes: added Parent as first arg for ProductRegister and
  214. ProductUnregister. Replaced unused opcode Secuity with
  215. ProductRestore, used to restore product info following a
  216. nested install. Nested installs are not fully operational yet.
  217. 97-12-10 bench Patching: added ability for patches to remove obsolete patches
  218. that they "contain." Updated the Engine code that handles
  219. patch application. Also updated the MsiPat tool to stuff a list
  220. of old patch codes into the patch package to enable this
  221. functionality. See MsiPat.hlp for more info.
  222. 97-12-10 malcolmh Removed ixoProductRegisterControlPanelInfo and
  223. ixoProductUnregisterControlPanelInfo. This is now done by
  224. ixoProductRegister/Unregister. Added 3 more icmrpf
  225. values to Conman::RegisterProduct's ProductInfo
  226. argument to support this.
  227. 97-12-10 malcolmh Bumped script version to 3 as a result of removing control
  228. panel opcodes. New scripts are not compatible with the old ones.
  229. 97-12-10 davidmck Added EncodeString() that takes const ICHAR * since
  230. we did not need an MsiString& and this was causing
  231. some routines to create a unnecessary object.
  232. 97-12-10 davidmck Added /Y and /Z for selfreg and selfunreg to
  233. msiexec. Format is /Y dll_to_register.
  234. 97-12-10 malcolmh Added ixoSourceListUnpublish operation. This removes
  235. information registered by ixoSourceListPublish.
  236. 97-12-10 bench Fixed bugs 2470 and 3587. 2470: we now handle cases where the process
  237. holding a file is explorer.exe and we have the full path and not just the
  238. file name. Previously we were just comparing the name to "explorer" and
  239. not catching this case, where we shouldn't put up the FilesInUse dialog.
  240. 3587: Re-allow the calling of Engine.ExecuteRecord(ixoActionStart,...) for
  241. testing purposes.
  242. 97-12-09 bench Fixed bug 3583. The change was made to require passing
  243. ACTION=[Admin|Advertise] on the command line when calling either of those
  244. actions, rather than not passing that property and just calling DoAction(Action)
  245. after Engine.Initialize. However, certain apis like MsiAdvertiseProduct were
  246. not doing this so they needed to be fixes as well. The fix was to have all
  247. apis calling either action to pass the ACTION property on the command line
  248. to Engine.Initialize.
  249. -----------------------------
  250. Release 0.10.00.3609
  251. -----------------------------
  252. 97-12-07 malcolmh Fixed bug 3443. We now correctly apply a list of transforms
  253. specified at advertise time.
  254. 97-12-07 malcolmh Changed behavior of MsiDirectoryManager.GetSourcePath and
  255. MsiGetSourcePath. The directory key may now be either a key
  256. in the Directory column for any folder or the DefaultDir
  257. value for a root folder. The latter allows passing either
  258. the target or source property name to obtain the source path
  259. for a folder. For example, you can call now
  260. GetSourcePath("SOURCEDIR") to get SOURCEDIR's path.
  261. 97-12-07 malcolmh Fixed bugs 3363, 3364. Removed obsolete iei* value:
  262. ieiUpgradeInstaller, ieiServerInaccessible,
  263. ieiConfigDatabaseError.
  264. 97-12-07 malcolmh We now write a network source list to
  265. HCKR\Installer\Product\{PCODE}\SourceList\Net. See the
  266. SourceList spec for details.
  267. 97-12-07 malcolmh Changed HCKR\Installer\Product\{PCODE}\SourceList\Package
  268. registry value to "PackageName".
  269. 97-12-07 malcolmh Changed HCKR\Installer\Product\{PCODE}\SourceList\LastUsedNet
  270. registry value to "LastUsedSource".
  271. 97-12-07 malcolmh Costing of registry values that contain paths referencing
  272. the install source has become a bit less granual. We
  273. want to avoid resolving the source until as late as possible
  274. and doing exact costing for these values requires us to
  275. know the source up front.
  276. 97-12-07 malcolmh Added the SOURCELIST property. This is used to specify a list
  277. of alternative sources for a product.
  278. 97-12-07 malcolmh We now defer resolving SOURCEDIR until it is necessary.
  279. For example, during a "Remove All" operation we don't
  280. ever need the source and therefore don't resolve SOURCEDIR.
  281. When a source path is requested we'll resolve the source
  282. and process the Directory table to create the source paths.
  283. The Browse Dialog currently forces an early source resolution.
  284. In the future it will not.
  285. Events that can trigger source resolution include:
  286. - The user chooses to install file from the source.
  287. - The local cached package is missing so we need to
  288. fetch a new one from the source.
  289. The current implementation doesn't do much resolving, as it
  290. still only uses the LastUsedSource. In the next few days
  291. the final implementation will be done and the source resolution
  292. will include scouting through the sources to find a good one,
  293. possibly prompting the user for a source if necessary.
  294. DEV: As a consequence of this change SOURCEDIR should
  295. now be accessed through Engine::GetSourcePath.
  296. 97-12-07 malcolmh Setting SOURCEDIR on the command-line now has no
  297. effect. Packages must be at the root of the source.
  298. 97-12-07 malcolmh Removed the SourcePath argument from ixoProductInfo.
  299. The argument is no longer necessary as the last used
  300. source is now registered by ixoSourceListPublish.
  301. 97-12-07 malcolmh Added ixoSourceListPublish opcode. As its name
  302. indicates, this opcode publishes the product's list of
  303. possible sources.
  304. 97-12-07 bench Changed the way the iefAdmin and iefAdvertise Engine
  305. mode bits are set. Previously, these were set in
  306. the ADMIN and ADVERTISE actions. As these bits are
  307. needed in Engine.Initialize for patch handling and
  308. proper detection of maintenance mode, they are now set in
  309. Engine.Initialize by checking the value of the ACTION
  310. property passed in the command line. The ACTION and
  311. ADVERTISE actions now return iesNoAction if they are
  312. called when the appropriate mode bits are not set.
  313. In short, to run in either Admin or Advertise mode,
  314. the ACTION property must be set on the command line
  315. passed to Engine.Initialize.
  316. 97-12-07 bench Checked in version 1.5.104 of mspatch.dll and
  317. mspatch.lib for alpha and x86. This new drop contains a
  318. fix for a bug that prevented patching bound files.
  319. 97-12-06 bench Removed the file
  320. \\united\darwin\darwin.rel\[build]\[platform]\samples\testdb\instmsi.exe. This was a
  321. remnant of the launcher days when this file was
  322. required to sit next to the launcher. Whoever needs to
  323. install testdb from this point can get Darwin from one of
  324. the main folders.
  325. 97-12-06 bench Added two new databases to the \\united\darwin drop.
  326. This first is in the tools folder. The second is in
  327. the samples folder.
  328. minumum.msi - contains the minimum number of tables,
  329. plus an InstallSequence table with all
  330. built-in actions. The purpose of this
  331. database is to prove (and test) that a
  332. small set of tables are required in any
  333. database.
  334. simple.msi - contains only tables necessary to provide
  335. simple UI and install a single file. This
  336. database is also used by a custom action of
  337. TestDb for a nested install.
  338. 97-12-06 bench Bumped the script version to 2 as a result of adding
  339. new opcodes. Old scripts are not compatible with
  340. the new Darwin.
  341. 97-12-06 bench The first phase of Darwin patching support is implemented.
  342. All documentation is pending.
  343. 1. Support for patch packages. Patch packages are storage
  344. files like install packages, but contain only transforms
  345. and cab files, and information about what products they
  346. may be applied to. Patch packages have .msp extensions,
  347. their own OLE storage ids, an association with MsiExec /b and
  348. their own shell verb menus. "Opening" a patch package
  349. calls MsiExec /b with the path of the patch.
  350. 2. The MsiPat.dll tool may be used to create patch packages.
  351. See help for CreatePatchPackage and
  352. CreatePatchPackageFromImages.
  353. 2. Added the MsiExec /b option, which calls MsiApplyPatch with the
  354. path of a patch package.
  355. 3. Added the MsiApplyPatch api. The API takes the full path
  356. of a patch package and applies the patch to all advertised
  357. products the package designates as valid targets. This
  358. is accomplished by setting the PATCH property on the command
  359. line passed to Engine.Initialize.
  360. 4. Added support for the PATCH property in the Engine. This
  361. property defines the path of a new patch package to be applied
  362. to the product. Engine.Initialize applies all valid transforms
  363. from the package as well as transforms from previously applied
  364. packages.
  365. 5. The PublishProduct and UnpublishProduct actions handle the
  366. registration and unregistration of patch packages, and the
  367. caching of new patch packages to the %windows%\msi folder.
  368. The PublishProduct detects if a new patch has been
  369. applied and dispatches the ixoPatchRegister and
  370. ixoPatchCache operations for it. The UnpublishProduct action
  371. automatically unregisters all patches currently applied to the
  372. product.
  373. 6. Added the ixoPatchRegister and ixoPatchUnregister operations,
  374. which register and unregister patch packages for a product.
  375. Each patch is registered under
  376. HKCR\Installer\Patchs\{patch guid}
  377. which contains the SourceList for the patch. Each product
  378. registers the patches applied to it under
  379. HKCR\Installer\Products\{product code}\Patches
  380. which contains an ordered list of the patches (in the order
  381. the patches are to be applied) and the list of transforms
  382. from the patch that may be applied to the particular product.
  383. 7. Added the ixoPatchCache operation, which moves a patch package
  384. from a temporary location (like "Temporary Internet Files") to the
  385. %windows%\msi folder. This op also registers the path of the
  386. cached package under the key
  387. HKLM\SW\MSFT\Windows\CurrentVersion\Installer\Patches\{patch code}
  388. 8. Added the Patch and PatchPackage tables. The Patch table defines
  389. the various file patches belonging to all patch packages applied
  390. to the product. The PatchPackage table defines all Patch packages
  391. currently applied to the product. These tables will only be added
  392. to a database by patch transforms.
  393. 9. Added the private APIs MsiEnumPatches and MsiGetPatchInfo. The first
  394. enumerates all patches currently applied to a given product. The
  395. second queries for various properties of an applied patch.
  396. Major remaining items for patching: patch resiliency, patches that change
  397. the product code, patches with cabinets outside the package, PatchValidate
  398. action, removal of old patches when a new patch overrides them, digital
  399. signatures for patch packages, admin install patching and RFS component
  400. handling.
  401. 97-12-06 malcolmh A number of fixes have been made to transform
  402. generation, transform application, the database, and
  403. msitran to correct problems related to exceeding the 64K
  404. string limit. (see bug 3537 for full details).
  405. -----------------------------
  406. Release 0.10.00.3605
  407. -----------------------------
  408. 97-12-05 chetanp the szQualifier arg in MsiEnumComponentQualifiers is
  409. now mandatory (cannot be null).
  410. 97-12-05 davidmck Made DllMain the entry point for msi.dll. This
  411. removes the standard clibrary initialization from the
  412. loading of msi.dll. We now rely on internal functions to
  413. do some of what the standard clibrary did for us.
  414. Most notably - FIsdigit for isdigit, strtol for atol
  415. or atoi, PchMbsStr for mbsstr.
  416. 97-12-05 davidmck Removed DCT_FLOAT support for JPEG pictures. The
  417. routines were never called anyway (we use Slow Integer
  418. versions currently) and this saves us code size and
  419. standard c library calls.
  420. -----------------------------
  421. Release 0.10.00.3605
  422. -----------------------------
  423. 97-12-05 johndelo Implemented MsiSetExternalUI - with message filter.
  424. Order of message processing is as follows:
  425. If an external message handler is supplied
  426. AND the message mask bit for the message is TRUE,
  427. the message is sent to the external UI handler.
  428. If the handler returns other than imsNone, then
  429. UI handling is complete. If it returns imsNone, then
  430. normal UI handling proceeds as if external not called.
  431. If UI mode is None (quiet), no further UI is done.
  432. If UI mode is Reduced or Basic, MSI handler DLL is called.
  433. If UI mode is Basic, the internal message handler is called.
  434. None of this affects logging or dialog handling.
  435. 97-12-05 chetanp Added support for machine assignment - bug 2304
  436. Affects
  437. 1. Where we write OLE and Darwin goop.
  438. 2. Where we cache the icons and the transforms.
  439. 3. Where we create the shortcuts.
  440. 4. Where we write the HKCR entries from the Registry table
  441. 97-12-05 chetanp 3. Darwin packages can be assigned to machines or
  442. to users. The decision is made during deployment when
  443. calling the new MsiAdvertiseScript API.
  444. The old MsiProcessAdvertiseScript API will call into
  445. the new MsiAdvertiseScript API with
  446. SCRIPTFLAGS_MACHINEASSIGN bit set. This is for the older NT5 Beta1
  447. builds that did not "truly" support user assignments.
  448. 97-12-05 chetanp 4. Changed MsiAdvertiseProduct API in order to
  449. support machine and user assignments for the stand-alone
  450. scenario
  451. 97-12-05 chetanp 5. There are two distinct flags /am and /au to
  452. msiexec.exe on the command line to trigger machine or
  453. user assignment respectively ( /a with no modifier
  454. will initiate a per machine assignment).
  455. 97-12-05 chetanp 6. Changed the MSI API to first attempt to read its
  456. configuration data from under
  457. HKU\\<sid>_Merged_Classes and if that fails then from under HKCR.
  458. 97-12-05 chetanp 7. Changed Darwin Descriptor types in the Registry
  459. from REG_SZ to REG_MULTI_SZ for the coming Darwin
  460. Descriptor Lists support - bug 2213.
  461. 97-12-04 malcolmh Fixed bug 3545. We now delete the cached database on
  462. uninstall.
  463. 97-12-04 malcolmh Fixed bug 3547. Msiexec /i works again.
  464. 97-12-03 MattWe MsiSpy: So far, updated all but Japanese (unused)
  465. x86 international DLLs. Updated german alpha DLL.
  466. Waiting on arabic.
  467. 97-12-03 MattWe MsiSpy:
  468. Icons: Added 32x32 variants of all icons
  469. Added absentcomponent icon for future use
  470. Advertising: added advertise on feature level,
  471. from JBelt.
  472. Removed usage of MsiLocateComponent
  473. 97-12-03 davidmck Removed the static constructors and destructors.
  474. Constructors needed either code to change or MichMarc's
  475. PreExec tool to be run on the objs.
  476. Destructors required code changes. As part of this I
  477. changed the CActionEntry class and moved the built-in
  478. actions to a table. This table needs to be kept in
  479. order. A check is run in the debug version to assure
  480. this.
  481. -----------------------------
  482. Release 0.10.00.3528
  483. -----------------------------
  484. 97-11-26 davidmck Added code to instmsi that binds the darwin exes and
  485. dlls that we install. Improves loading performance
  486. of msi.dll.
  487. 97-11-26 bench Fixed bug 3456. In basic UI when an error message
  488. (MessageBox) is displayed, the progress dialog is
  489. disabled, meaning you cannot select it or click the
  490. cancel button.
  491. 97-11-25 malcolmh The way we validate spaces and periods in paths has
  492. changed slightly. We now mimic the Explorer,
  493. following these rules:
  494. For a path segment:
  495. 1) Leading spaces are removed
  496. 2) Trailing spaces and periods are removed
  497. 3) Leading periods are an error
  498. Note that the removal of spaces and periods
  499. operates like this: Remove the leading/trailing character.
  500. Now, take the new path and validate it using the
  501. rules.
  502. Some examples (where _ represents a space):
  503. Before * After
  504. -----------------
  505. C:\..Foo * Error
  506. C:\Foo.. * C:\Foo
  507. C:\__Foo * C:\Foo
  508. C:\.Foo. * Error
  509. C:\.. * Error
  510. C:\Foo__. * C:\Foo
  511. C:\Foo._._ * C:\Foo
  512. Among other things, this affects both the "New Folder"
  513. button in the Browse Dialog and the PathEdit control.
  514. 97-11-25 davidmck Implemented the Office memory manager. This should
  515. give us more control over our allocations. More
  516. cleanup is probably needed to remove some features we do
  517. not need.
  518. -----------------------------
  519. Release 0.10.00.3525
  520. -----------------------------
  521. 97-11-24 MattWe Engine: removed dependency on InstallSequence,
  522. AdvtSequence, and AdminSequence. Minimum.msi no longer
  523. has these tables.
  524. 97-11-21 malcolmh Fixed bug 2224. We now support leaving off the
  525. ".msi" extension when launching an install. If we can't
  526. find the path you specify then we'll tack on ".msi" for
  527. you if you don't specify your own extension.
  528. -----------------------------
  529. Release 0.10.00.3521
  530. -----------------------------
  531. 97-11-21 chetanp added ixoProgressTick operation to "fill in" gaps
  532. for the progress bar.
  533. 97-11-21 chetanp changed the system files refcounting mechanism to
  534. use the increment/ decrement registry value operation -
  535. so that the entire read registry value and
  536. increment/ decrement is atomic.
  537. 97-11-21 chetanp added increment regvalue and decrement regvalue
  538. operations. If one specifies "#+" for a registry value,
  539. Darwin increments the existing integer registry value.
  540. If the value is not an integer or absent, we set it
  541. to 1. Similarly if one specifies "#-" for a registry
  542. value, Darwin decrements the existing integer
  543. registry value. If the value is not an integer or reaches
  544. 0, we remove the registry value.
  545. 97-11-20 johndelo The ODBC support is working. What is missing the the
  546. changing of the directories to reflect where an older
  547. version of a driver lives, and the unregistration of
  548. existing drivers before upgrading to a newer version.
  549. Rollback of the ODBC-managed registration is not yet
  550. supported. I will be checking in an ODBC MSI package
  551. shortly that installs all Office97 ODBC components.
  552. 97-11-20 johndelo The stand-alone script executor, RunScrpt.EXE is now
  553. built and delivered. A variety of useful scripts are
  554. checked into DARWIN\src\tools\script. They generally
  555. have a Help sub that can also be invoked with "?".
  556. The validation functions are also supplied as in the
  557. single line format for use within the CustomAction table.
  558. Other functions list scripts or show MSI registration.
  559. 97-11-20 tracyf Costing performance has been SIGNIFICANTLY improved,
  560. through optimizations in both MsiEngine, and in
  561. MsiHandler.
  562. First, at maintenance mode time, directory
  563. resolution has been altered significantly to avoid
  564. excessive "Writable" and costing checks.
  565. Second, the internal costing code itself was optimized.
  566. Third, when the full or reduced UI is present (i.e.
  567. running with MsiHandler), all up-front costing is
  568. now done in the background, allowing the first wizard
  569. sequence dialog to pop up quickly. If the user manages to
  570. navigate to the feature selection dialog before costing
  571. is complete, and selects a feature, the string that
  572. normally displays the feature cost is replaced with a
  573. new string from the UIText table, "SelCostPending"
  574. (which in TestDB says "Compiling cost for this
  575. feature"). If running with the basic UI, up-front
  576. costing is not needed at all, and is no longer done
  577. (a final full costing pass is still done at
  578. InstallValidate time, regardless of UI).
  579. 97-11-20 tracyf RemoveFiles action now supports "RemoveFilesOfType"
  580. functionality. Specifically, the FileName field of
  581. the RemoveFile table now supports * and ? wildcards,
  582. allowing deletion of all files that match the
  583. specification (such as *.doc, d*, etc). The RemoveFiles
  584. table also has a new integer "InstallMode" column,
  585. allowing specification of when to perform the deletion (1:
  586. at install time, 2: at remove time, 3: at either
  587. time). If the column is not present, the InstallMode
  588. value defaults to 1 (at install time).
  589. 97-11-20 bench fixed bugs 2497 and 3219. We now log when an action
  590. starts and when it ends. These messages are Info
  591. messages so the "i" logmode is required. The two
  592. messages are 15 and 16 in the error table.
  593. 97-11-20 MattWe Security: Updated CreateFolder, AddRegistry, and
  594. InstallFile actions to use security from the
  595. LockPermissions table. Rollback and the additional actions
  596. specified for lockpermissions are holding pending
  597. finishing touches/test plan.
  598. 97-11-20 MattWe Services: Added ServiceInstall action. Added
  599. classification of errors for ServiceControl. (Better
  600. resolution of fatal versus ignorable errors.) Also
  601. added rollback to DeleteService.
  602. 97-11-20 MattWe Schema: Added optional ServiceInstall table. Describes a
  603. service to be added to an NT system. Note that this is
  604. basically the registration, it requires a file, and
  605. can be supported via the registry table for
  606. additional parameters.
  607. Schema: Added optional LockPermissions table. Describes
  608. permissions to be set via actions on various other
  609. tables. (registry, file, CreateFolder, et cetera.)
  610. 97-11-20 MattWe MsiVolume: Added FileAttributes property, with
  611. attendant automation. Allows determination of useful
  612. things like whether the volume supports ACLs.
  613. 97-11-20 MattWe Engine: Added value to ComponentID for temporary
  614. costing components. This allows us to make the
  615. ComponentId column in the schema non-nullable. (As it
  616. should be.)
  617. 97-11-20 malcolmh Fixed Handler bugs 2594, 3011, 3012, 3415, 3446 and
  618. Path bug 3240.
  619. 97-11-19 CHETANP Changed the dwReserved parameter of
  620. MsiProvideComponent and MsiProvideQualifiedCompoent to the
  621. installation mode. This can be either INSTALLMODE_DEFAULT (the
  622. original behavior), INSTALLMODE_EXISTING (provide the
  623. path, only if feature is installed and valid, else
  624. return ERROR_FILE_NOT_FOUND) or a combination of the
  625. REINSTALLMODE flags (trigger a reinstall using this
  626. and then return the path).
  627. 97-11-19 CHETANP We now refcount EVERY file for a component that is
  628. installed to the system folder. At the time of
  629. install, we increment the refcount for each of the files. At
  630. the time of uninstall we recrement the refcount for
  631. each of the files. If ANY of the files have a
  632. refcount greater than 0, the entire component is not
  633. uninstalled.
  634. -----------------------------
  635. Release 0.10.00.3518
  636. -----------------------------
  637. 97-11-17 johndelo MsiOpenPackage supports a database handle in place of
  638. the path, as well as InstallProduct, e.g. "#123".
  639. After MsiOpenPackage, you can set properties and
  640. call actions (built-in or custom) and sequences.
  641. 97-11-17 johndelo The stand-alone script executor, RunScrpt.EXE is not
  642. part of the normal build, but may be built using
  643. "make debug runscrpt". It has command-line help.
  644. Several useful VBScript files have been checked in,
  645. DARWIN\src\tools\script\*.vbs , which will display
  646. various MSI information about products and scripts,
  647. will run custom actions and installs, etc. To find
  648. out what functions are available in each, use the
  649. command "RunScrpt {scriptfile} ?" (calls Sub Help).
  650. 97-11-17 johndelo The internal functions EnumerateScript & OpcodeName
  651. have been removed, along with the MsiExec -L option.
  652. The functionality is now only available through the
  653. API functions MsiOpenDatabase, MsiDatabaseOpenView,
  654. which will accept a script file and return fetched
  655. records, complete with format strings. See the script
  656. function ListScript(script) in ShowMsi.vbs for usage.
  657. 97-11-17 bench Added the CreatePatchPackageFromImages method to
  658. msipat.dll. See help for more info.
  659. 97-11-16 bench Added WindowsVolume property, which is the path of
  660. the volume the Windows folder resides on. Like all
  661. path properties, this path always ends with a
  662. backslash. This can be used to set the default install point
  663. if the author want the install to be on this volume,
  664. since ROOTDRIVE will not necessarily be set to this
  665. volume.
  666. 97-11-16 bench Added script versioning. Darwin now maintains 3
  667. script version values: the current script version, which
  668. is written to each generated script file (install or
  669. rollback) in the ixoHeader opcode, and the minimum
  670. and maximum script versions that are supported. If an
  671. attempt is made to run a script whose version is not
  672. supported, an error will occur.
  673. -----------------------------
  674. Release 0.10.00.3514
  675. -----------------------------
  676. 97-11-13 darwindev Considerable progress made in reducing the amount of
  677. required empty tables. DARWIN\data\minimum contains
  678. to current minimum required with a full sequence table.
  679. Goal is to only require tables that are actually used.
  680. 97-11-13 johndelo Added a SEQUENCE action, that simply calls the engine
  681. Sequence method with the value of the SEQUENCE property,
  682. which MUST be the case-sensitive table name of a sequence
  683. table. This is only intended for use by authoring tools
  684. to be able to run custom sequences of actions for tasks
  685. such as validation, builds, imports, etc.
  686. 97-11-13 johndelo Added the ability to launch an install or any other
  687. public action from an open database handle, using
  688. MsiInstallProduct. The database handle must be passed
  689. as the package path using the string value of the
  690. integer database handle prefixed with a pound sign '#',
  691. i.e. "#27". This is intended only for use during
  692. authoring sessions, to allow the install to be tested,
  693. and to support running custom sequences, such as validation.
  694. Currently, the summary properties are required to be
  695. set as in a normal install, but this may be relaxed in
  696. future builds if the action is not "Install".
  697. 97-11-13 chetanp added support for Registry key (+ value) to be the
  698. Key Paths of components. The Component.KeyPath may now
  699. null (denoting that the Component.Directory_ be used
  700. as the key path) or be either a key into the File
  701. table or into the Registry table (governed by the
  702. irsRegistryKeyPath bit of the Component.RunFromSource
  703. column).
  704. 97-11-12 tracyf A new "unified" progress bar scheme has been
  705. implemented (i.e. a single, weighted, progress bar across
  706. all actions). Also, we've now got a "time remaining"
  707. indicator, which typically gets displayed just below
  708. the progress bar. IMPORTANT: database authoring
  709. changes are required to take advantage of this new
  710. functionality (without the changes, progress bars will go
  711. dead, but the install should otherwise behave
  712. normally). A description of the new scheme, and the
  713. authoring changes required, is posted at
  714. \\jdelo3\MsiDoc\Progress.doc.
  715. 97-11-12 tracyf Support for advancing the progress bar either forward or
  716. backward is now built into the Handler and the basic UI
  717. (simpler, and necessary so that the "time remaining"
  718. feature still works properly when advancing backward).
  719. 97-11-12 tracyf The IMsiEngine interface now supports an ActionProgress
  720. function, which is a simplified replacement for the
  721. Message(imtProgress, ...) calls that were being made by
  722. actions that run before InstallValidate. These actions don't
  723. report actual progress (since there can be no meaningful
  724. progress bar before script execution time), so they now just
  725. call ActionProgress to keep the Cancel button alive.
  726. 97-11-11 malcolmh The DATABASE property is now private. It's now
  727. Database. This property can therefore no longer be set on
  728. the command line.
  729. 97-11-11 malcolmh Added the GetName property to the MsiStorage object.
  730. Regression of the "delete on release" functionality
  731. is advised, as the code that does the deleting at
  732. release time was changed to take advantage of this new
  733. property.
  734. -----------------------------
  735. Release 0.10.00.3511
  736. -----------------------------
  737. 97-11-10 chetanp added component thrashing. If there is a different
  738. component (id) installed in the same location with the
  739. key file matching the key file of our component,
  740. then we forcefully install all the files of our
  741. component (disregarding the file versions) and mark the other
  742. component as absent.
  743. 97-11-10 chetanp changed InstallFiles action such that we do not
  744. compute files in use, unless we have full UI. Needed to
  745. add a new "read-only" UILevel property.
  746. -----------------------------
  747. Release 0.10.00.3507
  748. -----------------------------
  749. 97-11-07 davidmck Added version numbering to instmsi.exe.
  750. -----------------------------
  751. Release 0.10.00.3507
  752. -----------------------------
  753. 97-11-06 malcolmh In the IxoDatabaseCache opcode the database is now
  754. specified as a full path instead of a folder and file.
  755. 97-11-06 malcolmh We now drop cabinets when we cache packages in the
  756. MSI directory. If we need the cabinets again we'll
  757. look for them on the source.
  758. 97-11-06 johndelo ODBC tables, actions, opcodes added, not implemented yet.
  759. 97-11-06 johndelo When exporting MSI tables that have extended (>127)
  760. characters, the codepage will be stored in the .idt file.
  761. If the database codepage is not set, the current
  762. codepage will be used. When importing tables with a
  763. codepage specified, the database will be set to that
  764. codepage. Full details in codepage.doc. (\\jdelo3\msidoc)
  765. 97-11-06 davidmck We now link with the libcmtl objects rather than the
  766. lib itself in the ship build. This should keep us
  767. from accidentally adding std clib dependancies. Use
  768. extlib.bat in \darwin\tools to create the objects when
  769. we take a new lib.
  770. 97-11-06 bench "Directory Aliasing": added the feature to allow a
  771. path in the Directory table to resolve to its parent's
  772. path. Previously each record was required to have a
  773. valid sub-directory which was appended to the
  774. parent's path. Now, the DefaultDir value may be a '.',
  775. which indicates that it resolves to its parent's path.
  776. This allows a path to be set to a directory like
  777. SystemFolder by default but also be changed by AppSearch.
  778. 97-11-06 bench Fixed bug 3228. This caused a slight change in the
  779. behaviour of the DirectoryManager. Previously when a
  780. path was changed with SetTargetPath (as is done with
  781. the browse dialog) all other paths objects whose
  782. paths were either equal to or children of the path being
  783. changed would also be changed. Now, this criteria
  784. must be met AND the path must be a child in the
  785. Directory table of the path being changed.
  786. 97-11-06 malcolmh I've added a new Control Event, "DoAction". This
  787. control event is intended to be used to invoke custom
  788. actions. For example, you could have a button on a
  789. dialog that, when clicked, invoked a custom action that
  790. emptied the recycle bin.
  791. 97-11-06 davidmck Changed ship build to use LIBCMTL.LIB, the lego
  792. version of the c-runtimes. This should not affect the
  793. build since the symbols in this lib will be stipped by
  794. the linker.
  795. 97-11-06 davidmck Removed the use of malloc from the jpeg routines. We
  796. now use the darwin memory allocator
  797. Changed the debug memory manager to use a hash table
  798. rather than a single linked list for keeping track of
  799. allocated memory. Should only affect debug.
  800. 97-11-05 malcolmh Msiinfo has been updated to handle validating the
  801. strings pools of databases that have 64K+ unique
  802. strings. It also now prints the codepage of the string
  803. pool.
  804. 97-11-05 malcolmh Fixed bugs 3312, 3326. 1) In engine::initialize we
  805. now verify that the database storage file has the MSI
  806. database storage ID. 2) Views now supports joining
  807. long & short columns.
  808. 97-11-04 johndelo Note: database schema will be changing to specify the
  809. icdLocalizable attribute, changing column specifications
  810. from 'S' to 'L' where appropriate. Make preparations now.
  811. 97-11-04 johndelo Expanded string pool implemented. When the number of
  812. unique strings exceeds 64K, 3-byte indices will be used
  813. in the persistent table streams only, allowing up to
  814. 16 million unique strings. Of course, these larger
  815. databases are not readable on older MSI versions.
  816. -----------------------------
  817. Release 0.10.00.3504
  818. -----------------------------
  819. 97-11-03 bench Added MsiSpy directory to the \\united\darwin drop
  820. under Samples. This addition should be propogated to
  821. \\united\darrel.
  822. 97-11-03 malcolmh Made two changes to MsiPath.SubFolders. 1) It now
  823. excludes the recycle bin. 2) It takes an optional
  824. parameter that can be used to exclude hidden sub folders.
  825. 97-11-02 johndelo Column attribute letter 'L' added: localizable string.
  826. Returned by MsiGetColumnInfo, used by Export/Import.
  827. Currently in column catalog as bit 9 (512), but may
  828. change to return string when querying column catalog.
  829. 97-10-31 malcolmh Fixed bug 3034. We now support the LOCALIZABLE SQL
  830. keyword to indicate that a column is localizable.
  831. 97-10-31 chetanp SharedDLL refcounts for component keypaths are now
  832. being incremented once for each Darwin-installed
  833. product.
  834. 97-10-31 chetanp put a check in to assert and fail during component
  835. registration/unregistration if the key path of the
  836. component is a file that does not belong to that
  837. component.
  838. 97-10-29 johndelo Fixed OLE registration problems on original Windows95.
  839. OLEAUT32.DLL doesn't support current typelib format or
  840. UnRegisterTypeLib, so typelib is ignored on Windows95.
  841. Programs that can use the typelib also require OLEAUT32.
  842. -----------------------------
  843. Release 0.10.00.3431
  844. -----------------------------
  845. 97-10-31 chetanp fixed external shared dll count bug 3148.
  846. 97-10-30 malcolmh Fixed bug 2506. We no longer allow creation of a
  847. column named "_RowState" via SQL.
  848. 97-10-30 malcolmh The BindImage table is no longer required. A missing BindImage
  849. table now behaves just as an empty one did in the
  850. past.
  851. 97-10-30 malcolmh The Icon table is no longer required. A missing Icon
  852. table now behaves just as an empty one did in the
  853. past.
  854. 97-10-30 malcolmh Fixed bug 3286 and 3288. These were both SQL
  855. problems. IS NOT NULL didn't work and using the <> operator
  856. in an expression with a string literal didn't work.
  857. 97-10-30 chetanp Added PuyblishComponent.AppData column for author to
  858. specify application specific data associated with
  859. Qualified Components. See help on PublishComponent
  860. table and MsiEnumComponentQualifiers for more.
  861. 97-10-30 chetanp Added Class.Argument column so that authors can
  862. provide arguments to LocalServers when invoked by OLE.
  863. Made changes to the RegisterClassInfo and
  864. UnregisterClassInfo action. See help on Class table for more.
  865. 97-10-30 chetanp Changed MsProvideQualifiedComponent to account for
  866. optional ApplicationData that may follow the Darwin
  867. Descriptor. See doc on PublishComponent table for
  868. more.
  869. 97-10-30 chetanp Added functionality to MsiEnumComponentQualifiers to
  870. return back ApplicationData. See doc on
  871. PublishComponent table and MsiEnumComponentQualifiers for more.
  872. 97-10-30 MattWe Fixed the UNICODE version of FailAssertMsg(char*) to
  873. truncate asserts, rather than allocating memory.
  874. (Fixes the problem of an assert because you ran out of
  875. memory then trying to allocate more memory...)
  876. 97-10-30 bench MsiPatch: support for retaining/ignoring bytes in
  877. CreatePatch() is now supported. See help for more
  878. info.
  879. 97-10-29 malcolmh Fixed bug 3110. Generating tranforms with binary
  880. streams should work now.
  881. 97-10-29 MattWe Fixed AssertSz variants to no longer allocate
  882. memory. They'll now truncate at the maximum length of the
  883. internal buffer. (512 bytes ansi/512 characters
  884. UNICODE) Also fixed a #define that forced a cast on
  885. AssertSz that hid the UNICODE variant.
  886. 97-10-28 bench Added ServicePackLevel property which is set to the
  887. numeric service pack level if a service pack is
  888. installed.
  889. -----------------------------
  890. Release 0.10.00.3428
  891. -----------------------------
  892. 97-10-27 johndelo Provided mechanism to reset a stream in a record field..
  893. Calling MsiRecordSetStream(hRecord, iField, 0) on a
  894. field actually containing a stream will reset the
  895. stream to the beginning. If the field does not contain
  896. a stream, it will fail. Feature request - Bug 1380.
  897. 97-10-27 malcolmh Added a CopyTo method to the Storage object. This
  898. method wraps the IStorage::CopyTo method which allows
  899. you to copy one storage to another, while excluding
  900. certain streams and substorages.
  901. 97-10-27 bench Fixed bug 2934. The problem was that
  902. MsiString.Compare(iscWithin...) was returning the number of bytes
  903. into the string the sub-string started, rather than
  904. the number of characters. All other MsiStrings deal
  905. with characters, so this caused problems when this
  906. value was passed to other MsiString functions. This is
  907. very low-level code but should only effect DBCS string
  908. handling.
  909. 97-10-26 bench Added AdminUser property, set in
  910. Service.SetPlatformProperties, which is set if the user has
  911. Administrator priveleges. By convention, this property is always
  912. set on Win95.
  913. -----------------------------
  914. Release 0.10.00.3421
  915. -----------------------------
  916. 97-10-21 chetanp Component Manager change -we now prevent a
  917. Component, which is in the Absent state from going into the
  918. Absent state (we make it go to the null state).
  919. 97-10-21 MattWe MsiSpy: updated all the installation databases to
  920. get the correct column type definitions, and added
  921. empty blank tables from schema so that the ISVs can
  922. immediately start populating these. (Chetan fixed the
  923. column names last night, but we missed the definitions
  924. themselves for nullable/size/type)
  925. You should now be able to merge these databases into
  926. schema, and they pass validation without any errors/
  927. warnings.
  928. -----------------------------
  929. Release 0.10.00.3421
  930. -----------------------------
  931. 97-10-20 chetanp the ixoComponentRegisterClient and the
  932. ixoUnregisterComponentClient operations are obsolete.
  933. -----------------------------
  934. Release 0.10.00.3420
  935. -----------------------------
  936. 97-10-19 johndelo Changes made to Database Import/Export per 9/25/97 e-mail.
  937. Binary streams are exported into a subdirectory named the
  938. same as the base file name supplied for the table. (no extension)
  939. Subdirectories are created only when necessary to hold streams.
  940. The files in the subdirectory will be named the same as the
  941. primary key value for the row containing the stream column.
  942. If there is no dot in the name, the extension .ibd is appended.
  943. Thus if you use the file name as the table key value, it will
  944. be preserved on Import/Export and uniqueness will be enforced.
  945. Current database exports can be converted by simply moving the
  946. .ibd files into the proper subdirectory, typically "Binary".
  947. The MsiDb tool has be updated to preserve the table names by
  948. default in the *.idt archive files. If this is not acceptable,
  949. there is and option, "-s", that truncates export names to 8.3
  950. with possible collisions resulting in loss of data. Stream
  951. names are determined by primary key value and aren't truncated.
  952. 97-10-19 johndelo Internal API for IMsiServices::CreateDatabase changed
  953. to take an idoEnum instead of a Bool for open mode.
  954. This enum is now the same in both automation objects,
  955. and matches the external API as well. It is now passed
  956. through intact, enabling all open modes to function.
  957. 97-10-19 johndelo Custom action support is now complete, supporting all
  958. modes as described in customtb.doc currently on:
  959. \\jdelo3\darwin\doc\ or \\xlweb\darwindoc\.
  960. -----------------------------
  961. Release 0.10.00.3417
  962. -----------------------------
  963. 97-10-17 chetanp Advertisement Changes -
  964. We have added a new ProgId table to allow for
  965. multiple progids for a given CLSID and to be able to
  966. associate an icon with an extension which has a progid but
  967. no corr. CLSID. Also several column names have been
  968. rectified to adhere to naming conventions see bug
  969. 3161.
  970. 97-10-17 chetanp Component Management changes -
  971. Prior to this build component with the same
  972. Component ID used to be redirected to the same physical
  973. location for a local installation.
  974. Hence there could not be more than one local
  975. instalation on a machine.
  976. The component detection mechanism (for
  977. MsiLocateComponent) was allowed to return ANY of several
  978. installations of a component (even if not installed by the
  979. requesting product).
  980. The new logic is that a product do not use a
  981. locally installed component that it has not installed. Also
  982. we do not share sources. A locally installed
  983. component is shared by virtue of 2 products wanting to
  984. install the component in the same physical location. A the
  985. physical files of a locally installed component are
  986. removed when the last client of *that* install
  987. location uninstalls the component. A component is removed
  988. (the rest of the stuff - registry entries,...) when
  989. the last client of the component uninstalls the
  990. component. Hence we have a new iisFileAbsent state within
  991. the Selection Manager that allows us to uninstall files
  992. but not uninstall the component.
  993. 97-10-17 tracyf Fixed bug 2975, modifying the Selection Manager
  994. initialization process so that the installed states of
  995. features and components are resolved BEFORE the
  996. conditions specified in the Component Condition column, and
  997. in the Condition table, are resolved. This allows
  998. conditional expressions to make use of the current
  999. installed states of features and components.
  1000. -----------------------------
  1001. Release 0.10.00.3417
  1002. -----------------------------
  1003. 97-10-17 johndelo MsiDatabaseGenerateTransform and
  1004. IMsiDatabase::GenerateTransform arguments swapped to match doc
  1005. and usage requirements. The current database (new) is compared
  1006. to the base database (old). MsiTran command-line args
  1007. unchanged. MsiTran gives formatted error messages now.
  1008. 97-10-16 tracyf Modified the Selection Manager so that if a parent feature
  1009. is changed to the advertised state, and has one or more
  1010. children that are authored as non-advertisable, the child
  1011. feature(s) will be set to the absent state. (Before, the
  1012. child feature's state would not change, potentially
  1013. leaving it in the uncomfortable position of being
  1014. installed while the parent is not installed (only
  1015. advertised).
  1016. Also fixed a problem in which a parent set to the
  1017. advertised state was inadvertently being changed to the
  1018. absent state if any child was changed to the absent state.
  1019. 97-10-16 bench bug 3132: renamed the "Enable" rollback registry
  1020. value to "Disable". If this value exists with any data,
  1021. rollback is disabled.
  1022. 97-10-16 bench Bumped the database version to .21 to coincide with
  1023. the schema changes.
  1024. 97-10-16 bench Changed the interpretation of the Shortcut.WkDir
  1025. column. It is no longer a foriegn key to the Directory
  1026. table, it is simply the name of a property defining
  1027. the working directory (which could be the name of a
  1028. directory in the Directory table)
  1029. 97-10-16 bench Made the following table and column names:
  1030. FileSignature --> Signature
  1031. Shortcut.IconLocation --> Shortcut.Icon_
  1032. Shortcut.WkDir_ --> Shortcut.WkDir
  1033. ListView.Image --> ListView.Binary_
  1034. Icon.IconName --> Icon.Name
  1035. Icon.IconData --> Icon.Data
  1036. 97-10-16 bench Removed all help topics for Tables and Actions from
  1037. msiauto.hlp. Jumps that reference those topics have
  1038. been updated to reference msi.hlp.
  1039. 97-10-15 johndelo AutoApi is now merged into Msi.Dll, most of the size
  1040. increase being the typelib. AutoApi is still built
  1041. separately for a while (who ever registers last wins).
  1042. 97-10-15 johndelo Shortcuts will be written to the new CLSID-based format
  1043. if the IE4.01 or greater shell is detected.
  1044. 97-10-15 MattWe Added ServiceControl table, and three new actions to go
  1045. with it: StartService, StopService, and DeleteService
  1046. Updated testdb to copy a couple of new files (see
  1047. my first entry today,) and a set of Services sub-features
  1048. (with related components.) Right now, this just
  1049. copies the files over. Until InstallService is ready,
  1050. see me for how to set up a test for these NT only actions.
  1051. 97-10-15 MattWe Added ClearReg to files built on darwin.rel, and updated
  1052. copybld to place clearreg in %TOOLSRELDIR%
  1053. TESTERS: please drop TOOLS\clearreg.exe to darrel.
  1054. 97-10-15 malcolmh Fixed bug 3143: Crash in MsiInstallProduct.
  1055. 97-10-15 MattWe Added darwin\data\test\Services,
  1056. darwin\data\test\Services\simple.exe and client.exe.
  1057. This is a simple Service for testing the new services
  1058. actions. To use, run "simple.exe -install" (or testdb
  1059. will install it automatically when I finish InstallService,)
  1060. and then run client.exe to make sure it started
  1061. successfully. You can remove the service via testdb,
  1062. or run "simple -remove"
  1063. TESTERS: these files should be added to the drop of
  1064. testdb.
  1065. 97-10-15 tracyf Added another level of caching to the process of creating
  1066. MsiVolume objects. Bottom line: the number of
  1067. WNetAddConnection calls Darwin needs to make when
  1068. reading/writing network shares is greatly reduced,
  1069. speeding up the initialization and file copying processes.
  1070. 97-10-15 tracyf Fixed bugs 2447, 3125, and 3129, all dealing with the fact
  1071. that Darwin's WNetCancelConnection calls were failing,
  1072. particularly on Win95. This was leading to errors involving
  1073. "Too many net connections" .
  1074. -----------------------------
  1075. Release 0.10.00.3414
  1076. -----------------------------
  1077. 97-10-14 chetanp fixed self reg bug 3139.
  1078. we were failing on n/w files. we always impersonate
  1079. for self reg now.
  1080. may not run on tied down systems. if we do not
  1081. impersonate certain selfreg's fail
  1082. as they themselves try to access the file system from
  1083. within the call ifthe selfreg file is on the
  1084. network,
  1085. this does not work.
  1086. -----------------------------
  1087. Release 0.10.00.3414
  1088. -----------------------------
  1089. 97-10-13 malcolmh We now use SEH (C exceptions) instead of C++
  1090. exceptions. This elminates the code bloat of C++ exceptions
  1091. while still providing us with the functionality we
  1092. need.
  1093. 97-10-13 johndelo Most database and engine API set the last error record,
  1094. for use by MsiGetLastErrorRecord. The cached record will
  1095. be cleared after this call or a successfule API call.
  1096. Functions that set error records denoted in MsiQuery.h.
  1097. 97-10-13 johndelo MsiFormatRecord will now support a null install handle,
  1098. in which case only the record parameters are formatted.
  1099. The API automation uses this to support MsiRecord.FormatText.
  1100. 97-10-13 bench Changed return of MsiFilePatch.CanPatchFile from a
  1101. BOOL to an icpEnum. See help for more info.
  1102. 97-10-12 johndelo Custom action support is now fully implemented according
  1103. to the 10/12 design spec, except for scripting support.
  1104. Additional test cases have been added to testdb.msi,
  1105. but deferred execution and rollback have not been tested.
  1106. 97-10-12 johndelo API changes as follows:
  1107. MsiGetFeatureValidStates now returns bit flags, not enum
  1108. MsiGetLastErrorRecord added
  1109. MsiVerifyDiskSpace added, simply calls engine function
  1110. MsiGetComponentPath added, MsiLocateComponent replacement
  1111. (product code not used yet, until component detect updated)
  1112. 97-10-10 malcolmh Fixed bugs 3318, 2449, 2450, 2451, 2730, 2446, 2334.
  1113. -----------------------------
  1114. Release 0.10.00.3410
  1115. -----------------------------
  1116. 97-10-10 chetanp Added support for the Advertise state for individual
  1117. features in Darwin.
  1118. This has affected the Selection Manager as well as
  1119. the Handler code.
  1120. It has also affected the Advertisement code
  1121. (shortcuts, Class, Extension,
  1122. TypeLib, MIME).
  1123. 97-10-10 bench Moved all files not dependent on the build of Darwin
  1124. (DEBUG/SHIP/LEGO/...) to a folder called COMMON in
  1125. the \\united\darwin drop. These files are:
  1126. msi.h
  1127. msiquery.h
  1128. msi.lib
  1129. msierror.msg
  1130. mspatch.dll
  1131. cabinet.dll
  1132. imagehlp.dll
  1133. When riched20.dll is dropped it will also fall into
  1134. this folder.
  1135. 97-10-10 bench Added the file mspatch.dll which is used by Darwin
  1136. and the MsiPatch tool to create and apply patches.
  1137. This file is dropped to the COMMON folder and is
  1138. installed by instmsi.exe. It is required for the MsiPatch
  1139. object to run and for Darwin to perform any patching
  1140. operations.
  1141. 97-10-10 bench INSTALLFILES: fix bug 3104, caused by the addition
  1142. of compressed file copies during a "non-cabinet"
  1143. install. This required re-writing much of the code that
  1144. deals with source media and cabinets in the
  1145. ixoChangeMedia and ixoFileCopy operations (outside of the
  1146. MsiFileCopy object). This code should be fully tested for
  1147. regression, with an emphasis on cabinets, split
  1148. files, mixed compressed/uncompressed files, and missing
  1149. media.
  1150. 97-10-10 bench Patching: The MsiFilePatch object (built into
  1151. Darwin) is ready for testing. See MsiAuto.hlp for more
  1152. info.
  1153. 97-10-10 bench Patching: The MsiPatch tool (msipat.dll) is ready
  1154. for testing. See msipat.hlp for more info.
  1155. 97-10-10 bench ixoChangeMedia: minor change: the cabinet path is
  1156. now required to be a full path when the cabinet is a
  1157. file and not in a stream of the package. Previously it
  1158. was possible to use a file name relative to the path
  1159. set by ixoSetSourceFolder. No more.
  1160. 97-10-10 bench MsiPath.TempFileName: added an optional flag. True
  1161. to return only the file name, false to return the
  1162. full path. See help for more info.
  1163. 97-10-09 davidmck Changed how we read in bitmaps to be more efficient.
  1164. We now read them in a block rather than in chunks.
  1165. 97-10-09 chetanp Fixed Darwin view object such that the temporary
  1166. tables created by it do not appear in the catalog
  1167. tables.
  1168. Now Scopes need not have special logic to skip the
  1169. temporary tables when displaying to the user in the
  1170. Table view.
  1171. 97-10-09 tracyf Fixed a problem that was affecting Office's oprep:
  1172. MsiPath was trying to add a net connection each time
  1173. a path object was created using a UNC path, which
  1174. would eventually lead to an "extended" network error
  1175. (too many net connections).
  1176. 97-10-09 malcolmh Fixed bugs 3113, 1585. Eliminate const IMsiString&
  1177. problems. Do a shell notify when we register or
  1178. unregister the .MSI extension.
  1179. 97-10-09 davidmck Added Imagehlp.dll to instmsi. We now pull
  1180. cabinet.dll from the tools directory rather than the common
  1181. directory.
  1182. 97-10-09 davidmck Added extra stack backtracing to our memory logging.
  1183. Also made it so we actually log to the debug log if
  1184. darwin logging is off.
  1185. 97-10-08 malcolmh Added exception handling to the server's RunScript
  1186. Function. When an exception occurs in the server you
  1187. should be greeted by a dialog with relevant
  1188. information, including the function and offset into that
  1189. function where the exception occurred. This code is debug
  1190. only.
  1191. -----------------------------
  1192. Release 0.10.00.3407
  1193. -----------------------------
  1194. 97-10-06 johndelo Darwin is now built with VC5. The PDB format for VC5
  1195. has changed and is incompatible with VC 4.2 debugger.
  1196. All tools needed to build are now under DARWIN\tools.
  1197. 97-10-06 davidmck Removed internal imagehlp code for symbols. We now
  1198. always use imagehlp.dll for resolving function names.
  1199. -----------------------------
  1200. Release 0.10.00.3403
  1201. -----------------------------
  1202. 97-10-02 johndelo Darwin now builds with VC5 and runs, but we have not
  1203. updated the build yet. All the tools required have
  1204. been checked into the project, including the new SLM
  1205. that supports long file names. I'm aiming for the
  1206. next release after this one for the switchover.
  1207. 97-10-02 davidmck Added support in instmsi for replacing the cabinet
  1208. file while it's in use. Not a big deal for the cabinet
  1209. file, but probably will be important for
  1210. riched20.dll which I'm adding later.
  1211. Changed instmsi to not use Windows apis
  1212. VerInstallFile and VerFindFile so the in use handling would work.
  1213. Added version checking to instmsi.
  1214. -----------------------------
  1215. Release 0.10.00.3330
  1216. -----------------------------
  1217. 97-09-29 johndelo Tables exported with extended characters will be
  1218. typed with the codepage of the database, or system
  1219. codepage if database codepage not set. When importing, the
  1220. database codepage will be set to the first
  1221. non-neutral table imported. For details, see design spec
  1222. codepage.doc.
  1223. 97-09-29 malcolmh Fixed bug 3046 -- processing of /Q option to
  1224. msiexec.
  1225. 97-09-29 MattWe Disabled building of gen, util, acme2msi, and the
  1226. repackager.
  1227. TESTING: this will result in not dropping several
  1228. files anymore. I'll send mail with the full list.
  1229. 97-09-29 tracyf Fixed up the ValidateTargetPaths routine (internal
  1230. to MsiEngine) to execute significantly faster.
  1231. Previously, this routine was responsible for about 85% of
  1232. the time spent in executing the CostFinalize action.
  1233. Now, it's only 10%, and CostFinalize executes about 6
  1234. times faster than before. Look for more costing
  1235. optimizations coming soon.
  1236. 97-09-29 tracyf Added support for the ADDDEFAULT install property.
  1237. This property has long existed, but if assigned a
  1238. value, it would previously always install the specified
  1239. feature in the iisLocal state. Now, the specified
  1240. feature(s) will be installed in the authored state (as
  1241. determined by the RunFromSource column of the Feature
  1242. table).
  1243. 97-09-25 chetanp Added reg_multi_sz support to the IMsiString
  1244. classes.
  1245. Added support to IMsiEngine::FormatText to support
  1246. the sequence [~] which stands for the null character.
  1247. IMsiRegKey::RemoveValue interface changed - now
  1248. also takes the value - for reg_multi_sz
  1249. Added reg_multi_Sz support to the IMsiRegKey object
  1250. -----------------------------
  1251. Release 0.10.00.3325
  1252. -----------------------------
  1253. 97-09-25 tracyf Fixed a bug in MsiPath which was blocking testing -
  1254. MsiPath was rejecting any UNC path that included a
  1255. trailing backslash.
  1256. 97-09-25 tracyf Fixed code in path.cpp that was breaking UNICODE
  1257. builds.
  1258. 97-09-25 tracyf Added an extra parameter to CreateFilePath - in
  1259. addition to accepting a full path to a file and returning
  1260. a path object, it now returns the filename portion
  1261. to the caller. To allow this routine to be fully
  1262. automated, a RipFileNameFromPath automation wrapper has
  1263. been added to MsiServices; internally, this wrapper
  1264. calls CreateFilePath, and just returns the filename
  1265. string.
  1266. -----------------------------
  1267. Release 0.10.00.3324
  1268. -----------------------------
  1269. 97-09-24 tracyf Support for non-NT networking protocols has been
  1270. added to MsiPath. This required the eradication of code
  1271. in MsiPath which was trying to separate incoming
  1272. paths into a volume part and a directory part. We now
  1273. call the system (which in turn calls the installed
  1274. network provider) to split and validate volume
  1275. specifications. This required a lot of change in the way that
  1276. MsiPath connects to remote volumes (for instance,
  1277. for NetWare shares, we now prompt for the user name and
  1278. password when necessary).
  1279. 97-09-24 tracyf Fixed bugs 2747 and 2748 (involving updating the
  1280. documentation for IxoFileCopy and IxoChangeMedia).
  1281. These were blocking bugs for testing.
  1282. 97-09-24 tracyf Changed the GetDriveTypeFromPath method. It is now
  1283. called GetImpersonationFromPath, and now returns a
  1284. Bool. It was only being used to determine whether
  1285. impersonation was necessary based on a path, this being
  1286. done by checking whether the returned drive type was
  1287. 'Network'. GetImpersonationFromPath now returns fTrue
  1288. if the drive type is either 'Network', or 'Unknown'.
  1289. 97-09-24 tracyf Added a CreateFilePath method to the IMsiServices
  1290. interface. This allows a path object to be created
  1291. with a full path to a file (the file part is stripped
  1292. off by the method before creating the path object).
  1293. 97-09-24 tracyf Internally, the MsiPath object now stores only
  1294. relative path information (it no longer keeps the volume
  1295. information as part of the path). This was necessary to
  1296. avoid parsing off the volume part at various times, which
  1297. leads to problems when dealing with non-NT network protocols.
  1298. (As an aside, making this change got rid of 5K worth of
  1299. code!). There should be no externally visible effect
  1300. (i.e. interfaces such as GetPath and GetFullFilePath
  1301. still return the full path, including volume information,
  1302. making use of the internal volume object).
  1303. 97-09-23 bench Added the ability to install compressed files from a
  1304. cabinet not located in the source tree for the
  1305. package, both during a "compressed" or "uncompressed"
  1306. install. This will be useful for patches that want to
  1307. add files to an install. This required the following
  1308. changes:
  1309. 1.) Added the Media.Source column, which defines
  1310. the folder containing the cabinet referenced by that
  1311. record. This column is essentially optional as the
  1312. code works file without it. If either the column is
  1313. missing or the field is blank, SOURCEDIR is used.
  1314. 2.) Added the iffCompressed bit (16384) to the
  1315. possible bits in the File.Attributes column. This bit
  1316. means that the file is compressed regardless of the
  1317. value of the MSI Source Type suminfo property. This is
  1318. the opposite of the iffNoncompressed bit which says
  1319. the file is non-compressed regardless of the source
  1320. type.
  1321. 3.) Modified ixoChangeMedia to accept a full or
  1322. relative path to the cabinet file. If the path is
  1323. relative, it is relative to the folder set by
  1324. ixoSetSourceFolder.
  1325. See help for more info.
  1326. -----------------------------
  1327. Release 0.10.00.3323
  1328. -----------------------------
  1329. 97-09-22 johndelo Custom action support for DLLs, EXEs, and property &
  1330. directory assigsnment has been completed. All modes
  1331. are functional, sync & async, Custom actions crashes
  1332. are recoverable. Debug breakpoints may be set with
  1333. the environment variable "MsiBreak=YourActionName". A
  1334. debug break will occur just ahead of the call into
  1335. that action. Samples have been added to testdb.msi; the
  1336. property TESTACTION must be set to the appropriate
  1337. type number to fire the action. New custom action doc
  1338. is available separately.
  1339. 97-09-18 johndelo Enhanced custom action support.
  1340. A couple of simple lines of code allowed us to implement a new
  1341. type of custom action: icaTextData = 3. If icaProperty is also
  1342. set (48) = 51, then FormatText is called on the Target string
  1343. and the result set into the property specified in Source.
  1344. Samples are in the testdb CustomAction table, example:
  1345. Custom051 51 USERNAME [LogonUser] on[ComputerName]
  1346. These actions are called by placing their name in the appropriate
  1347. place in the sequence table, such as just ahead of custom actions
  1348. that you want to pass properties to. Note that you can use a
  1349. conditional expression in the sequence entry, and you can
  1350. invent new property names. Of course this mechansim can be
  1351. used to conditionally set any property to a formatted text string.
  1352. If you use icaTextData with icaDirectory (32) = 35, then you
  1353. can conditionally set a directory path to a formatted text string.
  1354. For instance, you can insert the user's logon name into a
  1355. directory path. The example in testdb:
  1356. Custom035 35 MonthDir [Test][LogonUser]\Months
  1357. Note that this action must be called after CostFinalize,
  1358. as that is where the directories are initialized. If you wanted
  1359. to conditionalize a setting only for Alpha then put "Alpha" in
  1360. the Condtion column; likewise you could test for platform,
  1361. version, installed products, whatever.
  1362. To help debug custom actions, a debug break can be forced
  1363. immediately ahead of the call to the custom action, by
  1364. setting the environment variable "MsiBreak" to the name of
  1365. the custom actions (case-sensitive). Works in SHIP or DEBUG.
  1366. 97-09-17 davidmck Removed our usage of fdi.lib for decompression.
  1367. We now use cabinet.dll. Added cabinet.dll to the
  1368. instmsi cabpack.
  1369. -----------------------------
  1370. Release 0.10.00.3316
  1371. -----------------------------
  1372. 97-09-15 johndelo Bug 2658, where on NT5 with MSI on server failed
  1373. when accessing table stream for InstallSequence, Assert
  1374. replaced with FatalError report and exit. Problem
  1375. still exists in remote file mapping.
  1376. 97-09-15 johndelo Date and Time properties now work, which update
  1377. their internal data whenever the string value is
  1378. requested. These are now used in the Log header/trailer, and
  1379. Time is put into the ActionStart template for
  1380. performance measurements. These templates are in the Error
  1381. table, built with each build, but which must be
  1382. inserted into older databases. The old printf format will
  1383. be supported for a few builds.
  1384. 97-09-15 bench Fixed bug 2629, which was a problem with FormatText.
  1385. In the process of doing so, both Engine.FormatText
  1386. and Record.FormatText have been essentially
  1387. re-written to share all common code. These functions should
  1388. be thoroughly tested to make sure they work correctly.
  1389. 97-09-12 johndelo MSI base DLLs have been rebased to avoid collisions
  1390. upon load. Non-core system DLLs are now late-bound:
  1391. OLE32, OLEAUT32, COMCTL32, SHELL32, MPR. There could
  1392. be some glitches, but Asserts will be displayed on any
  1393. bind errors in DEBUG.
  1394. 97-09-12 ivanw Added a new control type: Line. This is simply a
  1395. line, as the name suggests, used as a visual separator
  1396. on a dialog.
  1397. 97-09-11 malcolmh Bug 2938. msiexec's /F option has been updated to support the
  1398. following:
  1399. /F[r]|[o]|e]|[d]|[c]|[a]|[m]|[u]|[s] <package>|<product code>
  1400. ... where the letters are a reinstall mode.
  1401. New support: allow specific reinstallmode. Not
  1402. specifying a reinstall mode does the same as before..
  1403. i.e. a default set of reinstall modes.
  1404. TEST
  1405. ~~~~
  1406. Command-line parsing changed to support this option
  1407. so testing around command-line options is advised. If
  1408. you use the debugmon utility (or something similar)
  1409. you'll be able to see exactly what msiexec thinks the
  1410. command-line options are and what properties are
  1411. getting passed to Darwin, thus negating the need for you
  1412. to actually verify that Darwin did the correct
  1413. reinstall.
  1414. 97-09-10 ivanw Bug 2248: The engine calls the "Browse" dialog (this
  1415. is a hardwired name) when the target directory is
  1416. not writeable. To catch if the user cancels the engine
  1417. sets a property called "BaseBrowse" that changes the
  1418. behavior of the Cancel button on the Browse dialog.
  1419. This way the same dialog can be used in more than one
  1420. place.
  1421. 97-09-10 tracyf Support for cabinets stored as resources has been
  1422. removed (since launchers are no longer supported). As
  1423. a side effect, the CreateCopier function no longer
  1424. takes an HINSTANCE argument, and the Media table no
  1425. longer accepts the "@cabinet" syntax.
  1426. 97-09-10 tracyf Fixed several bugs in MsiPath dealing with DBCS
  1427. characters in path names. See bug 1237 for details.
  1428. -----------------------------
  1429. Release 0.10.00.3310
  1430. -----------------------------
  1431. 97-09-09 ivanw At this point the UI supports all the international
  1432. issues that I know of to the degree that I could test.
  1433. This is limited by the fact that other parts
  1434. of Darwin still have unresolved issues with DBCS and
  1435. codepages. There is some caveat for the UI too: only the
  1436. Edit and the PathEdit controls support fully all the
  1437. weirdnesses of different writing systems. Other
  1438. controls have limited support (this is a limitation of
  1439. the system), for example comboboxes do not handle all
  1440. the issues correctly if the input contains a mixture
  1441. of characters from different writing systems. The
  1442. MaskedEdit control (used for the PID) is strictly ANSI,
  1443. this control does not support entering characters from
  1444. other writing systems. When testing these issues,
  1445. please keep in mind that one needs the correct (and
  1446. different) RichEd20.dll versions for BiDi and
  1447. Far-Eastern systems. To test the BiDi issues one has to set the
  1448. three BiDi control stylebits and the three BiDi
  1449. dialog stylebits to have the expected behavior.
  1450. 97-09-09 ivanw There are massive changes in the behavior and
  1451. implementation of the Browse dialog. There is a new
  1452. controlevent: DirectoryListIgnoreChange published by (you
  1453. guessed correctly!) the DirectoryList control. The
  1454. DirectoryCombo control typically subscribes to this one.
  1455. There is a new control attribute: IgnoreChange. If
  1456. this attribute is turned on the control does not redraw
  1457. on the property changed message. This was needed to
  1458. implement the new behavior. The most visible change
  1459. is that just highlighting a folder in the listview
  1460. changes the path, but does not change the folder shown
  1461. in the combobox. On the other hand double clicking on
  1462. an already selected folder will change the the
  1463. combobox but will not change the path. We also got away
  1464. with the confusing Open button on the dialog. Also
  1465. given up on the idea of splitting the path into two parts
  1466. and displaying them separately. We also removed the
  1467. constraint that the previous specification enforced
  1468. that a user is not allowed to select the root of a
  1469. volume. All these changes mean that one has to re-author
  1470. the browse dialogs in existing databases. The best
  1471. bet is probably to copy the dialog from the Testdb.
  1472. 97-09-09 ivanw The DirectoryComboPath and the DirectoryListPath
  1473. control events have been removed.
  1474. 97-09-09 MattWe MsiSpy: updated copybld to move DEBUG MsiSpy into
  1475. the Tools\DEBUG, and added the SHIP in the Tools.
  1476. Added a third file SpyENU.dll to the list. This does
  1477. NOT go to \\united\darrel yet. See T-GuhanS for drops.
  1478. (There's an installer, and a bunch of localized
  1479. files that we haven't decided to drop yet.)
  1480. 97-09-09 malcolmh Fixed bug 2620:
  1481. Cleaned up the impersonation code.
  1482. TEST:
  1483. ~~~~
  1484. All impersonation code is affected. Also affected is
  1485. getting the user-profile directory from within the
  1486. service.
  1487. The following automation interfaces changed:
  1488. Removed completely:
  1489. MsiServices.AttachClient,
  1490. Removed token parameter:
  1491. MsiConfigurationManager.ValidatePackage
  1492. MsiServer.ValidatePackage
  1493. MsiConfigurationManager.RunScript
  1494. MsiServer.RunScript
  1495. MsiConfigurationManager.InstallFinalize
  1496. MsiServer.InstallFinalize
  1497. DEV:
  1498. ~~~
  1499. As we've found the holy grail, CoImpersonateClient,
  1500. we no longer pass the client token around. Thus the
  1501. elimination of Attach/DetachClient. All
  1502. impersonation calls are now routed through
  1503. Start/StopImpersonating in vertrust.cpp. Also,
  1504. GetUserSID and GetUserToken should now be used in lieu
  1505. of opening the thread token yourself.
  1506. -----------------------------
  1507. Release 0.10.00.3309
  1508. -----------------------------
  1509. 97-09-08 ivanw As part of reworking the Browse dialog, removed the
  1510. SplitPath control style.
  1511. 97-09-08 malcolmh Fixed bug 2712. MsiMerg now persists the errors
  1512. table.
  1513. 97-09-08 bench Changed the meaning of the imtCommonData message
  1514. passed to Engine.Message and Handler.Message.
  1515. Previously, the parameters of this message were [1]: language
  1516. id, [2]: dialog caption. Now the parameters are [1]:
  1517. message type, [2,3,...]: arguments. This change was
  1518. made to add a new type of message to show or hide
  1519. the cancel button on the basic UI and to make the
  1520. message more extensible. See help for more info.
  1521. 97-09-08 bench MsiTran.exe: Added ability to specify error
  1522. conditions to suppress when creating or applying transform.
  1523. See help (or command line help) for more info.
  1524. 97-09-08 bench Transforms: the iteUpdNonExistingRow constant has
  1525. been added. This is used to suppress the error that
  1526. occurs when a transform attempts to update a
  1527. non-existing row.
  1528. 97-09-08 bench Transforms: The meanings of the bit flag used when
  1529. creating and applying transforms has changed.
  1530. Previously, setting the bit for a particular error condition
  1531. would force an error to occur when the condition was
  1532. true. Now, all errors are on by default and the bit
  1533. must be set to suppress an error. See help for
  1534. Transform apis for more info.
  1535. 97-09-05 johndelo MsiApi.Hlp not built, content migrated to Msi.Hlp
  1536. 97-09-05 johndelo Added arguments for future use for the following API
  1537. functions, all in Msi.H, non-functional at this time.
  1538. MsiSetExternalUI: add message filter
  1539. MsiProvideComponent: add reserved DWORD
  1540. MsiQualifiedComponent: add reserved DWORD
  1541. MsiEnumComponentQualifiers: add return for description
  1542. 97-09-04 ivanw Removed the NewFolder and Browse dialog style bits.
  1543. These bits were never used on Windows.
  1544. 97-09-04 ivanw Bug 2065: We want to be able to hide the cancel
  1545. button on the minimal UI by sending some message. To
  1546. accomplish this we changed the imtCommonData message type
  1547. to imtControl. It has three subtypes at this point:
  1548. icmtLangId, icmtCaption, icmtCancelShow.
  1549. 97-09-04 chetanp fixed darwin bug 2811, addign SHChangeNotify() calls
  1550. whenever we create/delete shell shortcuts/ folders.
  1551. rcollie has reported hitting this bug on random
  1552. occasions. We need to make sure it is not occuring now.
  1553. -----------------------------
  1554. Release 0.10.00.3303
  1555. -----------------------------
  1556. 97-09-02 ivanw The SelectionTree control behaves differently if a
  1557. screen reader is detected on the system. In this case
  1558. the popup menues are not userdrawy (contain no icons)
  1559. in order to better support the screen reader. Also
  1560. the main view of the SelectionTree is different in
  1561. this case. Since the screen readers can't handle the
  1562. icons that convey important information in the tree, if
  1563. we find a screen reader we modify the text displayed
  1564. in the tree, so it gives the same information in text
  1565. format that is normally conveyed by the icons. To
  1566. test these changes, one has to run the dll both on
  1567. systems with and without screen readers installed.
  1568. -----------------------------
  1569. Release 0.10.00.3302
  1570. -----------------------------
  1571. 97-08-29 chetanp PISearch (product inventory search) is dropped from
  1572. Darwin.
  1573. 97-08-28 chetanp fixed beta1 bug 2780. We now have a modified SQL
  1574. syntax that allows us to hold and free tables (LockTable
  1575. and UnlockTable) using SQL.
  1576. The syntax supported is -
  1577. CREATE TABLE <tablename> (<columns info>) [HOLD]
  1578. ALTER TABLE <tablename> ADD <columns info> [HOLD]
  1579. ALTER TABLE <tablename> HOLD
  1580. ALTER TABLE <tablename> FREE
  1581. 97-08-28 bench *RELEASE*: added msitool.hlp and msitool.cnt to the
  1582. DOC folder in the \\united\darwin drop. These files
  1583. need to be released.
  1584. 97-08-28 bench Fixed extensions of many files created during an
  1585. install (but not part of the install). Cached databases
  1586. have a .msi extension, rollback scripts have a .rbs
  1587. extension and rollback files have a .rbf extension.
  1588. Files to be moved on reboot and install script files
  1589. still have .tmp extensions.
  1590. 97-08-28 bench MsiPath: Updated TempFileName to accept an optional
  1591. prefix and/or extension for the name of the created
  1592. file. See help for more info.
  1593. 97-08-28 bench MsiPath: Updated SetFileAttribute and
  1594. GetFileAttribute to act on the directory represented by the MsiPath
  1595. object if the supplied file name is null.
  1596. 97-08-27 ivanw To support some the accessibility tools better we
  1597. have to make a few slight changes to the UI tables in
  1598. the database. If you fail to make these changes in
  1599. your existing database, it won't break anything, but the
  1600. screen reader won't pick up all the information. The
  1601. first change involves the Control_First column of
  1602. the dialog table. This one describes what control has
  1603. the focus when the dialog is created. For certain
  1604. controls that normally don't have a description of their
  1605. own, the screen reader tries to find the text control
  1606. immediately preceding this control and use that text
  1607. as the description of the control. Unfortunately the
  1608. screen reader does not realize that the tab order of
  1609. the controls forms a cycle, i.e. the last one in
  1610. Z-order preceds the first one. To work around this we
  1611. have to make sure that if there is a text describing an
  1612. Edit, PathEdit, Combo, DirectoryCombo or Listbox
  1613. control, this text comes in Z-order right before the
  1614. control. What this means in practice is that if you have
  1615. one if these controls as having the focus first, you
  1616. should enter instead the corresponding text control
  1617. in the Control_First field. Since a static text can't
  1618. take the focus, your edit (or PathEdit, etc) control
  1619. will have the focus, but the screen reader will be
  1620. able to pick up the right text. The other change
  1621. involves the Text field in the Control table. For the
  1622. VolumeCost, ListView, DirectoryList and SelectionTree
  1623. controls this field is currently empty. I suggest that
  1624. you enter some text there that describes the function
  1625. of the given control. This string will be never seen
  1626. by most users, but it will be used by the screen
  1627. reader to describe the control for a vision impaired
  1628. user.
  1629. 97-08-26 malcolmh Fixed bugs 2577, 2434, 2435, 2437, 2440, 2442, 2714,
  1630. 2715, 2452, 2540, 2263, 2165
  1631. -----------------------------
  1632. Release 0.10.00.3225
  1633. -----------------------------
  1634. 97-08-22 chetanp fixed bug 2699. MsiAP should now be working with
  1635. transforms being passed in as well.
  1636. 97-08-20 ivanw Put in some hacks so the Edit, PathEdit and
  1637. ScrollableText controls don't fail even if the riched20.dll
  1638. is missing.
  1639. 97-08-20 ivanw Changed the Edit and PathEdit controls. To support
  1640. BiDi and FE systems better these controls now use the
  1641. "RichEdit20W" control type instead of the "Edit"
  1642. type. This should mean no visible difference on an
  1643. English system. Since the core of the control has changed
  1644. it has to be tested again, to make sure that it still
  1645. works correctly. We won't be able to test the BiDi
  1646. and FE functionality untill we get the latest and
  1647. greatest version of the RichEd20.dll that supports those
  1648. languages.
  1649. 97-08-20 ivanw The Handler now requires the riched20.dll to be
  1650. installed on the system. This dll will be installed with
  1651. Darwin as the part of the service pack. This DLL is
  1652. present on NT4. If you don't have it on your Win95
  1653. machine, probably you can just copy it from your NT
  1654. machine. As soon as I get the latest version (that
  1655. handles BiDi and FarEast correctly) from the RichEdit group
  1656. I will check it in with Darwin.
  1657. 97-08-19 malcolmh Fixed bug 2654. On a locked-down system we were
  1658. failing to delete the InProgress key. We now impersonate
  1659. correctly and therefore can delete the key.
  1660. -----------------------------
  1661. Release 0.10.00.3218
  1662. -----------------------------
  1663. 97-08-14 bench fixed bug 2680 by making all self-reg errors of the
  1664. abort/retry/ignore variety.
  1665. 97-08-13 bench fixed bug 2657, the AV in CODBCDatabase. See the
  1666. bug for more details.
  1667. 97-08-13 malcolmh Fixed bug 2166 -- display help when invalid args are
  1668. passed to msiexec
  1669. 97-08-12 mattwe Repack wiz: added alpha support to internal installer.
  1670. (also added to Beta1 tree.)
  1671. -----------------------------
  1672. Release 0.10.00.3212
  1673. -----------------------------
  1674. 97-08-11 ivanw Implemented the ability to change the font on any
  1675. control. We can change the type face, the size and the
  1676. style (bold, italic, etc) for all controls. The font
  1677. color information is used only for static text
  1678. controls. For all other controls the color information is
  1679. ignored. To see this in action check out the regular
  1680. first install wizard sequence in testdb. For some
  1681. wilder examples try testdb with the UITEST property set.
  1682. -----------------------------
  1683. Release 0.10.00.3208
  1684. -----------------------------
  1685. 97-08-07 johndelo MsiTool.mak has been moved to DARWIN\src\tools, to
  1686. simplify building tools and customs actions for the
  1687. ISV release, and has been fixed to work with multiple
  1688. CPPs and long file paths. All tools have been updated,
  1689. and the samples fixed where broken. ISV release is
  1690. on \\tcoweb\isvkit. Help for tools is now build as
  1691. MsiTool.hlp. MsiSpy is now built (DEBUG only) - try it.
  1692. 97-08-07 MattWe Testing: From now on, any reference you can find to
  1693. "Darwin" should probably be a bug.
  1694. 97-08-07 MattWe Databases: Removed all Darwin and internal contact
  1695. information references.
  1696. 97-08-06 malcolmh All table schema were changed to correctly identify
  1697. nullable columns as such. Nullable columns have an
  1698. upper-case type-identifier letter in the .idt files.
  1699. 97-08-06 MattWe Repackaging wizard: Added
  1700. darwin\src\tools\repack\support\repackdb\*.idt to
  1701. build the final golden beta repackwiz template database.
  1702. make <version> win repackdb builds from these IDTs,
  1703. totally ignoring template/schema.
  1704. !!ANYONE MAKING CHANGES TO SCHEMA or TEMPLATE OTHER THAN
  1705. NULLABLE COLUMNS FOR BETA1 SHOULD CONTACT MATTWE!!
  1706. 97-08-06 bench Made these changes to the file set installed by
  1707. instmsi: removed msiauto.dll, msiauto.hlp and
  1708. msiauto.cnt. Added msi.hlp and msi.cnt.
  1709. -----------------------------
  1710. Release 0.10.00.3205
  1711. -----------------------------
  1712. 97-08-05 bench Fixed relnotes tool to handle cookie locks on the
  1713. project. Updated the build script to handle cookie
  1714. locks when dealing with relnotes.txt and to eliminate
  1715. the merge conflicts.
  1716. 97-08-04 malcolmh We are now using CoImpersonateClient to impersonate instead
  1717. of ImpersonateLoggedOnUser. CoImpersonateClient does
  1718. the right thing in all cases.
  1719. 97-08-04 malcolmh We reverted to using HKEY_CLASSES_ROOT for OLE and Darwin goop.
  1720. Anything you're used to seeing in HKCU\Software\Classes will
  1721. now appear in HKEY_CLASSES_ROOT. This change was required
  1722. by NT for their Beta 1.
  1723. 97-08-04 johndelo MsiExecuteRecord has been removed from the external
  1724. APIs--dangerous and unsupportable. MsiFormatRecord
  1725. has been added. MsiOpenDatabase will now accept an
  1726. output database path (old client code will still work
  1727. without change). See MSIQUERY.H or AUTOAPI.HLP for
  1728. details. MsiGetProperty and MsiSetProperty work with the
  1729. UIPreview object/handle (no other engine methods do,
  1730. however).
  1731. 97-08-01 mattwe Repack installer updated for the files moved all over the place.
  1732. #2556
  1733. 97-08-01 johndelo Non-ship components and tools have been renamed to have the
  1734. same names as ship components and tools. This facilitates
  1735. debugging with applications and the OS, which bind to Msi.DLL.
  1736. SHIP, DEBUG, and LEGO are now built in different directories,
  1737. under DARWIN\build, but are delivered and released to the same
  1738. structure as before. Tools are built both SHIP and DEBUG, but
  1739. only SHIP tools are released, except for repackager and the API
  1740. automation, which have their DEBUG build in a DEBUG subdirectory.
  1741. The old MSI.HLP that we build has been renamed MSIAPI.HLP to avoid
  1742. conflict with the MSI.HLP that DOC drops to us. MSIAPI.HLP contains
  1743. describes the automation layer (autoapi.dll) that sits on top of
  1744. the MSI API functions and currently contains details that are not
  1745. yet integrated into MSI.HLP. Eventually MSIAPI.HLP will get merged
  1746. into MSI.HLP and will be removed.
  1747. 97-08-01 t-caroln MsiVal.exe -- fixed bugs 2177 and 2510 for
  1748. validating InstallSequence and Required values. These
  1749. validations can be turned off by using msival.exe {database}
  1750. -OFF. These validations require the _Required,
  1751. _InstallValidate, and _Sequence tables. Information on
  1752. how this is validated is in msiauto.hlp under TOOLS
  1753. and Validation and in the msival.cpp file in
  1754. %DARWIN%\src\tools.
  1755. 97-07-31 bench Here is the summary of changes that have been made to the
  1756. drops on \\united\darwin.
  1757. These files have been moved and/or renamed:
  1758. [all files in DEBUG and LEGO folders renamed to match files in SHIP folder]
  1759. TOOLS\msigend.* -> TOOLS\DEBUG\msigen.*
  1760. TOOLS\msiutild.* -> TOOLS\DEBUG\msiutil.*
  1761. TOOLS\msipatd.* -> TOOLS\DEBUG\msipat.*
  1762. TOOLS\msilocd.* -> TOOLS\DEBUG\msiloc.*
  1763. TOOLS\autoapid.* -> TOOLS\DEBUG\autoapi.*
  1764. TOOLS\rpkwizd.exe -> TOOLS\DEBUG\rpkwiz.exe
  1765. These files have been added (not sure why these weren't being dropped before):
  1766. TOOLS\msimerg.exe
  1767. TOOLS\msimerg.map
  1768. TOOLS\msimerg.pdb
  1769. TOOLS\msiinfo.exe
  1770. TOOLS\msiinfo.map
  1771. TOOLS\msiinfo.pdb
  1772. The files have been removed:
  1773. TOOLS\regmsid.*
  1774. TOOLS\regmsil.*
  1775. TOOLS\msitable.*
  1776. TOOLS\msidbd.*
  1777. TOOLS\msivald.*
  1778. TOOLS\msitrand.*
  1779. TOOLS\msimergd.*
  1780. TOOLS\suminfo.*
  1781. TOOLS\msiinfod.*
  1782. The moved files should move to identical locations in the
  1783. \\united\darrel release. All of the appropriate (.exe,.pdb) added
  1784. files need to be propagated to the \\united\darrel release.
  1785. 97-07-28 t-caroln Enabled/fixed UNICODE compilation of tools -->
  1786. msimerg.exe, msidb.exe, msitran.exe, msival.exe, and
  1787. msiinfo.exe
  1788. 97-07-25 MattWe MsiGen: #2439. Fixed additional problems with
  1789. rolling all the profiles into a single one. (Legacy
  1790. installs tend to install to the user, Default User, and
  1791. All Users. We have to smack them all into one, as well
  1792. as the registry keys and shortcuts.)
  1793. (The above note didn't seem to check in previously. Don't
  1794. quite know why.)
  1795. -----------------------------
  1796. Release 0.10.00.3125
  1797. -----------------------------
  1798. 97-07-24 johndelo The MsiSetLogMode function (which was
  1799. non-functional) has been replaced with EnableLog, which takes three
  1800. parameters: logmode, logfile, append. See Msi.H or
  1801. autoapi.hlp for details. This function and
  1802. SetInternalUI will be use for subsequent engine creation calls
  1803. in the current process.
  1804. 97-07-24 malcolmh Log modes are now defined in msi.w.
  1805. 97-07-24 malcolmh Changes that affect MsiSetInternalUI and MsiSetExternal UI:
  1806. - Both of these APIs now return the old value upon success.
  1807. - Added 2 new INSTALLUILEVEL enums for the API:
  1808. INSTALLUILEVEL_DEFAULT and INSTALLUI_LEVEL_NOCHANGE.
  1809. The default UI level means that we will choose internally
  1810. (within the API) what level to use. Currently we choose
  1811. Basic in all cases except when MsiOpenPackage/OpenProduct
  1812. is called. In this case we choose no UI.
  1813. INSTALLUILEVEL_NOCHANGE, when passed in to the API means
  1814. that we don't change the current UI level. When returned
  1815. from the API it means that the UI level was not changed
  1816. because an invalid UI level was specified.
  1817. - The HWND parameter of MsiSetInternalUI was made to be a
  1818. pointer. If this pointer is NULL then the HWND is not
  1819. changed. If the pointer is not null then the HWND is
  1820. changed and the old HWND is returned through the pointer.
  1821. 97-07-24 t-caroln Fixed bug 2308, Validate on Delete. It does limited
  1822. validation to notify one if the row that you intend
  1823. to delete is pointed to by some other row in the same
  1824. (or other table). It does not cover embedded
  1825. strings with properties resolving to the row (this was
  1826. punted) and it does not cover a delimited list of table
  1827. possibilities (punted as well). If a row to be
  1828. deleted is referenced explicitly elsewhere (check KeyTable
  1829. column of _Validation table) then the error for the
  1830. primary key field(s) of the row to be deleted is
  1831. MSIDBERROR_REQUIRED (iveRequired).
  1832. 97-07-24 MattWe MsiGen: 2439 -- picks up shortcuts from All Users,
  1833. 2482 -- missed letting deferred registry keys fall
  1834. back to the registry as part of our "re-register
  1835. everything" strategy, and changed the repackager not to
  1836. advertise shortcuts in the StartupFolder.
  1837. 97-07-23 johndelo MsiViewModify return value ERROR_INVALID_DATA is
  1838. used when a validate request fails, and indicates that
  1839. errors can be access with MsiViewGetError.
  1840. MsiViewGetError does not return anything for other errors.
  1841. 97-07-22 chetanp change to MsiProcessAdvertiseScript. See bug 2444.
  1842. -----------------------------
  1843. Release 0.10.00.3122
  1844. -----------------------------
  1845. 97-07-21 johndelo The Msi API automation layer now has its own help,
  1846. built as part of MSI.HLP for now. All but 12 engine
  1847. functions are rough-documented, and enumerations have
  1848. been added.
  1849. 97-07-21 malcolmh Bug 1804, the blocking Memphis bug, has been fixed.
  1850. -----------------------------
  1851. Release 0.10.00.3118
  1852. -----------------------------
  1853. 97-07-17 johndelo Handle argument removed from MsiCreateRecord,
  1854. allowing it to be automated. MsiRecordClearData and
  1855. MsiViewGetColumnInfo added and automated.
  1856. 97-07-17 MattWe MsiGen: bug #2373. Fixed a problem generating the
  1857. unique property table names for targets of shortcuts
  1858. outside our install.
  1859. 97-07-17 malcolmh Attempted a fix to the "Service did not respond in a
  1860. timely fashion" bug.
  1861. 97-07-17 malcolmh Fixed a bug in msiinfo's string pool validation. It
  1862. shouldn't crash any more.
  1863. 97-07-16 t-caroln Validation -- fixed bug 2380 where the msival.exe
  1864. tool encountered an error during validation of the
  1865. Office 9 database. Fixed the SQL query statement that
  1866. was erroring.
  1867. 97-07-15 MattWe RepackWiz: did a secondary code review on
  1868. A-BILLHU's code, and added asserts on Set/GetStrings, and
  1869. wrapped APIs that returned error records. We were
  1870. getting memory leaks whenever we had an error, and the
  1871. message wasn't being displayed. That's fixed now. Also
  1872. fixed a minor icon problem, bug #2104
  1873. 97-07-15 swalker added 2 new tools to the project: DlgPrev and
  1874. DlgBrows. DlgPrev is a tool for previewing
  1875. all the dialogs and billboards defined in an msi
  1876. database. DlgBrows is similar, but lays the
  1877. dialogs out in a tree control, so each dialog has as
  1878. its children any controls that do a spawndialog
  1879. or newdialog event. This lets you see how the
  1880. dialogs are connected, as well as previewing them.
  1881. The exe's should be in %darwin%\tools\, and the
  1882. source can be found in %darwin%\tools\src\.
  1883. -----------------------------
  1884. Release 0.10.00.3115
  1885. -----------------------------
  1886. 97-07-14 t-caroln Fixed bug 2343. The fix for this bug was adding a
  1887. new column to the _Validation table called 'Localize'.
  1888. This column is non-nullable and an integer column.
  1889. A zero stands for 'not localize', one stands for
  1890. 'string table localize', two is reserved for future use,
  1891. and three stands for 'UI related localize'. All
  1892. primary key columns should be set to zero. Validation
  1893. will check for this condition. However, this column
  1894. is optional. If your _Validation table does not
  1895. contain this column, then validation will skip validating
  1896. it. This column will be used by the custom parser
  1897. Espresso people.
  1898. 97-07-14 MattWe MsiGen: Bug fixes 2311(Updates for 0.20 schema
  1899. change, and added population for new Class.VIProgId,)
  1900. #2239: re-fix for REG_DWORD population of the registry
  1901. table, and as close to a fix as we're going to get for
  1902. 2216. We've got apps registering typelibs by hand,
  1903. and fool the repackager into dropping keys that we
  1904. assume are registered by a typelib.
  1905. 97-07-14 bench fixed bug 2280. As a result, rollback is no longer
  1906. performed for changes made by advertisement
  1907. (MsiProcessAdvertiseScript). Since an arbitrary HKEY is
  1908. passed in to Darwin, there is no way of knowing where reg
  1909. values are being written, so the changes being made
  1910. can not be rolled back.
  1911. 97-07-14 t-caroln As part of the fix for bug 2155 dealing with the
  1912. automation API, the MsiViewGetError api now returns two
  1913. more enums --> MSIDBERROR_MOREDATA and
  1914. MSIDBERROR_INVALIDARG. Also, the MSIDBERROR enums have been
  1915. re-ordered with the upcoming bump in the database version.
  1916. 97-07-14 bench The .pdb files have been re-added to the SHIP and
  1917. PROFILE drops on \\united\darwin. These files need to
  1918. be released to \\united\darrel. This was done upon
  1919. request from Office.
  1920. 97-07-14 t-caroln Fixed bug 2289 dealing with transforms (only occured
  1921. in the ship version).
  1922. 97-07-14 chetanp the shortcut, progman, registry, removeregistry,
  1923. inifile, removeinifile tables have changed to
  1924. incorporate a separate identifier key column for the
  1925. "localisable keys" problem.
  1926. the shortcut.shortcut column is now called
  1927. shortcut.name.
  1928. the class table has a new VIProgID column for version
  1929. independent prog id..
  1930. 97-07-11 MattWe Repack: Added src\tools\repack\readme.txt to the
  1931. darwin source tree. This is our installation/run
  1932. "readme" file. It's primarily owned by JeffLar. Updated
  1933. copybld to copy to %TOOLSRELDIR%\Repack.txt.
  1934. TESTERS: THIS FILE SHOULD BE DROPPED TO tools\Repack.txt.
  1935. It is the same file for all processors and builds.
  1936. It has no version.
  1937. 97-07-11 bench Added the ROLLBACKTEST property. When set, this
  1938. property forces rollback to be performed at the end of
  1939. an install. This is debug-Darwin only.
  1940. 97-07-11 MattWe MsiGen: NOW bug #2288 fixed. Removed the SOURCEDIR
  1941. entry from the property table. For cabinet
  1942. installs, this probably should have been ignored anyway.
  1943. Worked fine on several machines, pukes on Rob's.
  1944. -----------------------------
  1945. Release 0.10.00.3111
  1946. -----------------------------
  1947. 97-07-10 t-caroln Validation -- fixed bug 2286 to prevent validation
  1948. of temporary columns (as these would always fail
  1949. validation since they wouldn't have entries in the
  1950. _Validation table). If the column type happens to be
  1951. temporary, validation simply returns no error (for that
  1952. field, or in a record, the field would remain null).
  1953. 97-07-10 t-caroln Fixed bugs 2283 and 2284. 2283 dealt with
  1954. MsiRecordGetString not returning a string even if the field is
  1955. of type integer (the documentation says it will
  1956. convert the int to string). Fixed it so that it now will
  1957. return the string or integer converted to the
  1958. string. If the field is a stream field, it is an invalid
  1959. data type. Added the MsiDatabaseIsTablePersistent
  1960. api. It returns an MSICONDITION enum that describes the
  1961. state of a table passed as a parameter
  1962. (MSICONDITION_ERROR = invalid handle or invalid parameter,
  1963. MSICONDITION_NONE = unknown table, MSICONDITION_FALSE =
  1964. temporary table, MSICONDITION_TRUE = persistent table).
  1965. 97-07-10 MattWe MsiGen: Bugs# 2274 (Added directory remappings for
  1966. all system properties for logged on user, because
  1967. sysdiff /m doesn't remap registry entries, just files),
  1968. 2239 (sysdiff spec changed), 2229 (removed SOURCEDIR
  1969. from directory table), 2212 (for zero length binary
  1970. blobs, now put nothing in value, instead of "#x"),
  1971. 2170 (removed assert), 2261 (removed even more
  1972. informational, but non critical, asserts), 2218 (fixed an
  1973. extension table population side effect bug)
  1974. 97-07-10 bench Patching is back! Added the CreatePatch and
  1975. ApplyPatch methods to the MsiPatch tool (contained in
  1976. msipat.dll). ApplyPatch will eventually move into Darwin.
  1977. These methods use the SmartPatch technology. See
  1978. msipat.hlp for more info.
  1979. 97-07-10 ivanw The following three controlevent have been removed: (as I
  1980. mentioned in my 6/24 e-mail) SetPath, CheckPath and
  1981. CheckExistingPath. To replace these in your database use
  1982. SetTargetPath, CheckTargetPath or CheckExistingPath
  1983. respectively; followed by an EndDialog Return event.
  1984. Make sure you set the correct order for these two
  1985. events.
  1986. 97-07-09 ivanw Bug #2219. Reworked how the validation of a control
  1987. locks a dialog from being closed. As part of this
  1988. change, the IMsiEvent::ReadyToChangeFocus() and the
  1989. IMsiControl::ReadyToLoseFocus() methods have been
  1990. eliminated. Added a new dialog attribute: Locked.
  1991. 97-07-09 bench Fixed bug 2254. Prior to this fix, Darwin would
  1992. only prompt for reboot if a file was scheduled to
  1993. replace another file on reboot. However, on NT when
  1994. rollback is enabled there is never a need to schedule a
  1995. rename on reboot because an in-use file can be moved.
  1996. Thus, when a file was copied and the existing file was
  1997. in use the existing file was moved and reboot wasn't
  1998. prompted for. While reboot is not necessary in this
  1999. case to get the installed file to the correct spot,
  2000. it is necessary to get whatever is holding the old
  2001. file to hold the new one instead. In short, we now
  2002. detect when a file is in use and prompt for reboot even
  2003. though no renames are required.
  2004. 97-07-09 t-caroln Validation -- fixed bug 1706 dealing with file
  2005. versions. the Version category is only used in the
  2006. File.Version column. It now does an extra check. If a
  2007. Version is authored (meaning 1.2.3.4), then a language
  2008. is required in the language column. If the file
  2009. doesn't have a language associated with it, then it is
  2010. considered language neutral and the author will put a
  2011. zero in the language column. The following are
  2012. examples of valid/invalid version - language pairs in the
  2013. file table:
  2014. 1.2.3.4 0 // valid, version + language
  2015. 1.2.3.4 (NULL) // invalid, version but no language
  2016. (NULL) 1033 // valid, language but no version (i.e. typelibs)
  2017. Testdb (NULL) // valid, companion file but no language
  2018. Testdb 1033 // valid, companion file and language
  2019. 97-07-09 t-caroln Transforms -- fixed bugs 2131, 2083, and 2084.
  2020. These were re-activated because transforming wasn't
  2021. working correctly when adding additional columns or
  2022. additional tables to database already containing more than
  2023. one table.
  2024. 97-07-09 bench The msi.hlp and msi.cnt in the \\united\darwin drop
  2025. are now being copied from \\oceania\hlp\msi. The
  2026. msiauto.hlp and msiauto.cnt files continue to be built
  2027. and copied from the build machine.
  2028. -----------------------------
  2029. Release 0.10.00.3108
  2030. -----------------------------
  2031. 97-07-08 chetanp We now place the shortcut and cached transforms into
  2032. the "%userprofile%\msi folder in place of the
  2033. "%userprofile%\applications and %userprofile%\cache
  2034. folders.
  2035. -----------------------------
  2036. Release 0.10.00.3108
  2037. -----------------------------
  2038. 97-07-07 malcolmh Added an option to msiinfo to validate string pools.
  2039. Use msiinfo(d) database.msi /D to verify that the
  2040. string reference coutns are correct. The string pool
  2041. will be displayed along with any errors.
  2042. 97-07-07 t-caroln MsiTran(d).exe -- fixed bug 2231 so that it doesn't
  2043. crash whe not having arguments (meaning just typing
  2044. msitran(d).exe won't cause a crash).
  2045. 97-07-07 bench Release process: removed the .pdb files from the
  2046. SHIP and PROFILE folders of the drop. (they were never
  2047. being dropped for PROFILE builds)
  2048. -----------------------------
  2049. Release 0.10.00.3104
  2050. -----------------------------
  2051. 97-07-03 t-caroln Fixed bug 1864 -- not finding missing columns during
  2052. validation. this is done in the msival(d).exe tool
  2053. now (none of the missing column code is inside
  2054. Darwin). The missing columns validation is based off of
  2055. the _Validation table, meaning the _Validation table is
  2056. considered to have an entry for every single column
  2057. in the database. If one adds a table/column, one has
  2058. to add the corresponding entry to the _Validation
  2059. table. If one deletes an optional column (it would be
  2060. better to leave it there and have null data), then
  2061. he/she would have to remove the corresponding entry
  2062. from the _Validation table.
  2063. 97-07-02 bench Modified Services.CreateFileStream and CreateStorage
  2064. to impersonate if necessary before accessing the
  2065. given file. If running as a service and accessing a
  2066. network location, impersonation is performed. Removed
  2067. the code to do impersonation from the execution
  2068. operations that call these methods.
  2069. 97-07-02 t-caroln Fixed bug 1178 dealing with checking the string
  2070. lengths against the lengths set in the column
  2071. definitions. If the length is zero, then the string can be
  2072. infinitely long. If it is nonzero, then the character
  2073. count must be less than the length. If this fails, the
  2074. error enum iveStringOverflow is set. The
  2075. MsiViewGetErrorAPI would return MSIDBERROR_STRINGOVERFLOW.
  2076. 97-07-02 bench Added the profile build to the \\united\darwin drop.
  2077. The profile build is located in the PROFILE folder
  2078. beside SHIP, DEBUG, etc.. This folder is dropped in
  2079. the x86 folder only. The files contained in this
  2080. folder are identical in name and number to those in the
  2081. SHIP folder. The appropriate files need to be
  2082. released.
  2083. 97-07-01 ivanw Updated the IceCap files to version 3.51. Wrote a
  2084. short document under doc/icecap/start to help the first
  2085. time users of the profiler. Updated the batch file
  2086. to reflect changes in our code.
  2087. 97-07-01 t-caroln Transforms -- fixed bug 2084 dealing with
  2088. application of a tranform that creates a new table. this bug
  2089. had been fixed, but that was only if the new table
  2090. that was added had only one column. the fix now allows
  2091. the new table to contain more than one column.
  2092. -----------------------------
  2093. Release 0.10.00.3101
  2094. -----------------------------
  2095. 97-06-30 t-caroln Fixed bug 2162 for msialter. Also commented out the
  2096. Validation and msidbval targets in the makefile (for
  2097. building the validation dll and msidbval.exe).
  2098. 97-06-30 t-caroln Validation -- Fixed bugs 1551 and 1743. This
  2099. required adding two new validation categories --> Cabinet
  2100. and Shortcut. Shortcut is used in the Target column
  2101. of the Shortcut table. If the string does not contain
  2102. any brackets (meaning properties], then it is
  2103. validated as a valid identifier that is a foreign key into
  2104. the feature table. Else it is validated as a
  2105. KeyFormatted string. For cabinet, it is used in the Cabinet
  2106. column of the media table. If it is preceded by a #
  2107. or @ sign, then it must contain a valid filename
  2108. afterwards (which is the name of the cabinet).
  2109. 97-06-29 t-caroln Fixed bugs 2138, 2139, and 2140 dealing with the
  2110. database query external API's.
  2111. 97-06-27 t-caroln Updated help for transform error conditions when
  2112. calling SetTransform (as iteNone, iteAddExistingTable,
  2113. iteAddExistingRow, iteDelExistingRow, and
  2114. iteDelNonExistingTable now work) and added a reference to the
  2115. MsiMerg(d).exe tool under the TOOLS section.
  2116. 97-06-27 t-caroln Fixed bugs 2131, 2132, and 2131 dealing with
  2117. transforms. Due to the fix for bug 2079, the msitran(d).exe
  2118. tool had to be updated to take into account the
  2119. output of all integers as longs. The fix for 2079 also
  2120. caused the assert in bug 2133 as it also didn't take
  2121. into account that the column def in the transform file
  2122. was now a long instead of a short. Bug 2132 dealt
  2123. with error conditions when setting a transform. It
  2124. wasn't ignoring the error if we told it too by
  2125. specifying iteNone as the error condition.
  2126. 97-06-27 t-caroln Fixed bugs 2134 and 2135 with the MsiOpenDatabase
  2127. API. It now checks to ensure that the handle is not
  2128. zero and that the database path string pointer is not
  2129. zero.
  2130. 97-06-27 t-caroln Makefile -- added target for msimerge to build the
  2131. console merge tool app. This tool is msimerg(d).exe.
  2132. MsiMergd.exe should be released to TOOLS.
  2133. -----------------------------
  2134. Release 0.10.00.3027
  2135. -----------------------------
  2136. 97-06-26 t-caroln Helpfile -- Updated transform section of help and
  2137. the GenerateTransform and SetTransform methods of the
  2138. database. Also added help on the MsiTran(d).exe tool
  2139. which uses the external API to apply or generate a
  2140. transform and which can be used to view a transform.
  2141. 97-06-26 t-caroln Makefile -- add msitran target to build the
  2142. MsiTran(d).exe tool. This tool uses the external API and has
  2143. options for applying a transform, generating a
  2144. transform, and viewing a transform. Use msitran(d).exe /?
  2145. for the option requirements. Both msitran.exe and
  2146. msitrand.exe need to be released to the TOOLS
  2147. directory.
  2148. 97-06-26 t-caroln Changed the CMsiDatabase::SaveToStorage,
  2149. CMsiDatabase::DropTable, CMsiDatabase::ImportTable, and
  2150. CMsiDatabase::LoadFromStorage methods. In SaveToStorage, if
  2151. there are no rows in the table, then we do not create
  2152. the empty stream. (However, the table is still
  2153. there, it's just in the table and column catalog). This
  2154. shrinks the size of the databases. The other methods
  2155. had to be changed to account for the fact that the
  2156. stream may or may not be there (depending on whether
  2157. or not the table has any rows).
  2158. 97-06-26 t-caroln In order to fix bug 2084, other changes in the
  2159. database had to be made. During a transforming, if we
  2160. have to add a column to the column catalog, we mask off
  2161. the persistent bit (and then put it back when
  2162. CreateColumnsFromCatalog is called). This allows for the
  2163. correct calculation of cbFileWidth so that we don't
  2164. take into account the new columns (which would mess up
  2165. the reading of the stream during
  2166. CMsiDatabase::LoadFromStorage.) The count of the persistent count
  2167. includes all of the columns (even the new ones), but the
  2168. loaded column count is for those columns that were not
  2169. recently added during transforming. So, instead of
  2170. looping until the persistent count of columns,
  2171. LoadFromStorage loops through the loaded column count so it
  2172. reads correctly from the stream. This required adding
  2173. a new inline method to the CCatalogTables class so
  2174. that it sets the loaded column count member variable
  2175. and then calls the CMsiTable::LoadFromStorage method.
  2176. The new method in CCatalogTable is LoadData.
  2177. 97-06-26 t-caroln Fixed bugs 2079 (again) and 2084 for transforming.
  2178. Because want to preserve the iMsiNullIntegerValue,
  2179. all integers are output as longs (even if the column
  2180. def is short). This ensures that if a column is
  2181. supposed to be null, it will become null during the
  2182. application of the transform. To fix the add a new table
  2183. bug (2084), made changes to transforming. Now when
  2184. calling ApplyTransform, we immediately transform the
  2185. table and column catalogs as well as transform any table
  2186. loaded in memory. All other tables that require
  2187. transforming are marked as needing a transform and will
  2188. be transformed when loaded or the database is
  2189. committed.
  2190. 97-06-26 MattWe MsiSpy: Added "spy" option to make (e.g. make debug
  2191. win spy). Builds t-guhans' tool for viewing
  2192. installed products on your machine, or for opening a
  2193. database, and finding out how much of it was installed.
  2194. Sources: darwin/src/tools/msispy. Builds
  2195. msispyu(d).dll and msispy(d).exe. This is not currently being
  2196. built on the build machine but may be added later.
  2197. 97-06-25 bench Changed makefile so that install*.exe is no longer
  2198. built with MAKE WIN DEBUG. It can still be built with
  2199. MAKE WIN DEBUG INSTALL
  2200. 97-06-25 malcolmh Fix bug 2073. PackageName value is now correct
  2201. during floppy installs.
  2202. 97-06-25 malcolmh Fixed bug 1506. We now use HKEY_USERS\SID instead of
  2203. HKEY_CURRENT_USER in the Installer API.
  2204. 97-06-25 malcolmh Fixed bug 2071. We now always use the specified
  2205. package for Admin installs instead of looking in the
  2206. registry.
  2207. 97-06-25 Tracyf As part of the fix for bugs 1862 and 1863, Darwin
  2208. now stores the full UNC path (if applicable) as the
  2209. keypath when registering components. Note that for Beta
  2210. 1, this is done only for Microsoft network
  2211. connections (i.e. for server connections to Novell, Banyan,
  2212. etc. we still store drive letter paths). Another side
  2213. effect of the fix is that the MsiPath interface now
  2214. sports a new method: GetFullUNCFilePath.
  2215. 97-06-25 chetanp added code to create a temporary "reverse" script
  2216. for product unadvertisement
  2217. (MsiProcessAdvertiseScript). Previously we were calling ExecuteRecord on the
  2218. individual records of the script for undoing it. Now we
  2219. put the reverse records in a temp script and call
  2220. RunScript on it. This is necessary for rollback.
  2221. -----------------------------
  2222. Release 0.10.00.3025
  2223. -----------------------------
  2224. 97-06-25 mattwe RepackWiz: removed msiauto(d) from repkinst.bat
  2225. (Bug #2097)
  2226. -----------------------------
  2227. Release 0.10.00.3025
  2228. -----------------------------
  2229. 97-06-24 t-caroln Fixed bugs 2079 and 2083 dealing with transforms.
  2230. The iMsiNullInteger value was not handled correctly if
  2231. the column was of short integer type. To correct
  2232. this, if iMsiNullInteger is returned, then 0xFFFF is
  2233. written to the transform stream and checked for when
  2234. reading back from the transform stream. Also, when
  2235. adding a column to an existing table, GenerateTransform
  2236. now generates the correct transform file, with the
  2237. column listed in the column catalog and any values for
  2238. the new columns listed as updates for that particular
  2239. table stream.
  2240. 97-06-24 ivanw Added three new control events: SetTargetPath,
  2241. CheckTargetPath and CheckExistiingTargetPath. These three
  2242. will replace the existion SetPath, CheckPath and
  2243. CheckExistingPath control events. The old ones do what
  2244. their names suggest plus they do what EndDialog Return
  2245. would do. The new ones do just what the name says,
  2246. and you have to add a separate EndDialog or SpawnDialog
  2247. or some other event to do the transitioning. This
  2248. way the functionalities are clearer and we also provide
  2249. greater flexibility. (the old ones worked properly
  2250. only on a child window) Temporarily both the old and
  2251. new events are supported. Within a week the old events
  2252. will be removed. To prepare for this, in the
  2253. Controlevent table you have to remove the old events by two
  2254. lines, the first one is the appropriate new event,
  2255. the second line is a EndDialog Return. For an example
  2256. check out the Testdb.
  2257. -----------------------------
  2258. Release 0.10.00.3024
  2259. -----------------------------
  2260. 97-06-23 malcolmh Fixed bugs 1862, 1884, 1974, 1977. We have a
  2261. temporary (until Beta 2) to allow the conman's
  2262. LocateComponent to return the actual install state of the 'active'
  2263. component. Beta 2 will provide a real solution with
  2264. the complete implementation of the sourcelist spec
  2265. and the resolution of our component management
  2266. strategy.
  2267. 97-06-23 malcolmh Fixed bug 1797.
  2268. 97-06-23 bench Bug 2027: Fixed the path object to accepts paths of
  2269. the form c:\subdir\\\\subdir2\\\subdir3. When the
  2270. path object gets a path of this form, the path is
  2271. "normalized" to remove any extraneous backslashes. This
  2272. effects the CreatePath and AppendPiece functions.
  2273. 97-06-21 mattwe MsiGen: Bug #2055 -- Added functionality to
  2274. repackage shortcuts to directories, both advertised,
  2275. unadvertised, and files/directories not in our installs via
  2276. properties.
  2277. 97-06-20 mattwe _assert.h: Changed implementation of FailAssertSz
  2278. to use MsiString. It didn't check the length of an
  2279. incoming message, and its template form of ("assert in
  2280. file: <foo>") could have overflowed the buffer
  2281. itself with a very long source file name. Consequently,
  2282. it trashed memory. Now it works for arbitrarily long
  2283. messages. Bugs: #2055, 2058
  2284. -----------------------------
  2285. Release 0.10.00.3020
  2286. -----------------------------
  2287. 97-06-20 mattwe MsiGen: Bugs 1796 - increased internal buffer size
  2288. for lines from INF, as well as added line truncation
  2289. ability. Bug 1897: Trivial fix to add another "flag"
  2290. value indicating binary values from the INF. New
  2291. sysdiff apparently uses a new value to mark them. Bug
  2292. #2047 -- caught invalid or previously unknown GUIDs
  2293. during a repackage. (later keys like FILETYPE
  2294. referred to GUIDs that weren't registered under a CLSID
  2295. entry.)
  2296. -----------------------------
  2297. Release 0.10.00.3020
  2298. -----------------------------
  2299. 97-06-19 malcolmh Clearreg has been updated to reflect new registry layout.
  2300. 97-06-19 malcolmh Updated ixoProductRegister and Conman::RegisterProduct
  2301. to include the new bunch of data required by the
  2302. registry spec.
  2303. *WARNING*: This will break all old install scripts.
  2304. 97-06-19 malcolmh Added option /T to msiexec to support uninstall
  2305. via a product code. This was required to support
  2306. the logo requirement for a command-line that
  2307. will uninstall a product.
  2308. 97-06-19 malcolmh Fixed bug 1908. We now cache the product database
  2309. in %WINDOWS%\MSI. An operation, ixoDatabaseCache,
  2310. has been added to perform this operation. It
  2311. caches the database and registers the location
  2312. in HKLM\SW\MS\Windows\CurrentVersion\Uninstall\LocalPackage.
  2313. The cached database is costed.
  2314. When we cache the database we drop any cabinet streams
  2315. it contains. This currently results in no reduction in
  2316. size of the database, but by Beta 2 it will. You can
  2317. for now use dfview to verify that the cabinet streams are
  2318. gone.
  2319. The database is removed when the product is unregistered.
  2320. So, this might beg the question, "How do we determine the
  2321. source of an installation?" Here's the short answer:
  2322. 1) If the app has not been advertised or installed:
  2323. - If SOURCEDIR is specified on the command-line
  2324. then it is used as the source
  2325. - Otherwise, we assume that database is in the root
  2326. of the source
  2327. 2) If the app has been advertised:
  2328. - We used the advertised source source location.
  2329. 3) If the app has been installed
  2330. - We use the source location that was used at first-run.
  2331. - If the first-run source is unavailable then we use
  2332. SOURCEDIR if it is specified
  2333. - Otherwise, we can't access the source so we can only
  2334. do configuration that doesn't require hitting the source
  2335. Check out HKCU\SW\Classes\Installer\...
  2336. Products\{ProductCode}\SourceList
  2337. to see which source (LastUsedNet value) and Package
  2338. (PackageName value) was advertised (or placed at
  2339. install-time if there was no explicit advertisement)
  2340. 97-06-19 malcolmh Fixed bug 1907. Changed the locations of almost all of
  2341. Darwin's reg keys. See the Registry spec
  2342. (http://office/web/specs/tco/darwinregistry.html) for
  2343. most of the details (full details are forthcoming).
  2344. Two sets of changes were made. First, we changed where
  2345. we write OLE registration goop at advertise time. This
  2346. now goes into HKCU\Software\Classes as opposed
  2347. to HKCR. We write Darwin's advertised information to
  2348. HKCU\Software\Classes\Installer.
  2349. Second, we've moved our local machine keys. We have
  2350. many keys under HKLM\SW\MS\Windows\CurrentVersion\Uninstall.
  2351. Logo requirements state that we must put a bunch of
  2352. values, and we don't want to needlessly duplicate them. We
  2353. have some keys under HKLM\SW\MS\Windows\CurrentVersion\Installer
  2354. as well.
  2355. 97-06-19 mattwe MsiGen: Bug# 2022, and partial implementation of
  2356. Work Item #1608 (icon executables) #1608 needs to be
  2357. enabled by work in RepackUI, and needs additional
  2358. work to draw icons from executables associated with
  2359. extensions. Known bugs: Darwin Costing bug #2036
  2360. 97-06-19 mattwe Rungen: Added support to use icon templates. Needs
  2361. same work done on RepackWiz
  2362. 97-06-19 mattwe Repack: Added NOUI property to the repack template
  2363. 97-06-19 mattwe MsiGen: updated for CreatePath API change
  2364. 97-06-19 mattwe RepackUI: updated for CreatePath API change
  2365. 97-06-19 mattwe Repack: added rpkicon to copybld, shove, and
  2366. repkinst
  2367. 97-06-19 mattwe Repack: Added file rpkicon.exe to <platform>\Tools.
  2368. It must be dropped. It's the same file for all
  2369. platforms, and is a resource only executable.
  2370. 97-06-19 mattwe Util: updated for new path object. Should build
  2371. now
  2372. 97-06-19 bench Enhanced the /q option of msiexec to specify any of
  2373. the four UI levels: Full, Reduced, Basic or None.
  2374. The syntax is /q [f|r|b|n]. Only the first letter of
  2375. the option is examined. /q by itself still means
  2376. quiet mode.
  2377. 97-06-19 bench Added the NOUI property, which caps the UI level for
  2378. the package at Basic. In other words, if Full or
  2379. Reduced UI levels are requested, Basic is used. This
  2380. property can be set in the property table or on the
  2381. command line.
  2382. 97-06-19 bench Removed support for the UI property, which didn't
  2383. make sense as a property anyway.
  2384. 97-06-19 bench We are no longer dropping the following files to
  2385. \\united\darwin:
  2386. TOOLS\Repack (the entire folder)
  2387. TOOLS\Debug (the entire folder)
  2388. TOOLS\Ship (the entire folder)
  2389. TOOLS\rungen.exe
  2390. TOOLS\install.h
  2391. TOOLS\launchrc.h
  2392. TOOLS\install.ico
  2393. In addition, we are now dropping the Alpha versions of
  2394. sysdiff.exe and makecab.exe. (The Intel versions were
  2395. previously being dropped to the Alpha folder). The
  2396. makecab.exe in the TOOLS folder needs to be released
  2397. if it isn't already.
  2398. 97-06-18 malcolmh Fix bug 2006 -- unhelpful error message from msiexec
  2399. /unreg. Fix service to not accept the STOP message
  2400. during installations.
  2401. 97-06-18 bench No longer dropping install*.* to \\united\darwin, as
  2402. launchers are no longer supported.
  2403. 97-06-18 bench Added two new methods to MsiServices:
  2404. ExtractFileName and ValidateFileName. ExtractFileName accepts a
  2405. "short|long" pair of file names and a flag indicating
  2406. which name to extract, then returns the extracted
  2407. name. The extracted name is validated for proper syntax.
  2408. ValidateFileName validates a file name for either
  2409. short on long file name syntax.
  2410. 97-06-18 bench Added the SupportsLFN method the MsiPath. This
  2411. allows one to call directly on the Path object without
  2412. first getting its Volume object and calling on that.
  2413. 97-06-18 bench Path object: The path object no longer handles
  2414. extracting short or long file names from "short|long"
  2415. pairs. Specifically, CreatePath no longer takes the
  2416. fSuppressLFN flag and paths no longer accept file names
  2417. of the syntax "short|long." As a result of these
  2418. changes, we correctly handle existing paths with long
  2419. names even though we may be using the short names from
  2420. the File and Directory tables. This fixed bugs 1336,
  2421. 1809 and 1881.
  2422. 97-06-17 malcolmh Fixed bug 1970, keeping open frequently used reg
  2423. keys in Installer API
  2424. 97-06-17 malcolmh Fixed bug 1341. We now copy the product database to the
  2425. TEMP folder if it resided on a floppy or other removable
  2426. media. The internal SOURCEDIR property is set to point to
  2427. the folder containing the database before it moved. The
  2428. copying of the database is done in Engine::Initialize,
  2429. just before the database is opened. Deleting the temp
  2430. copy is done in Engine::Terminate, just after the
  2431. database is closed.
  2432. For example, installing from a:\testdb.msi will result in
  2433. the database being copied to the TEMP folder, the internal
  2434. DATABASE property being set to C:\TEMP\tmpname.msi, and
  2435. the internal SOURCEDIR property being set to A:\.
  2436. *WARNING* -->
  2437. The SOURCEDIR should not be authored into any database.
  2438. This will confuse us and lead to incorrect behavior.
  2439. 97-06-17 malcolmh Fixed bugs 1982, 1987.
  2440. 97-06-17 malcolmh Fixed bug 1231 -- Conman::RegisterProduct writes
  2441. empty registry values correctly now
  2442. 97-06-17 malcolmh Fix bug 1969: CMsiExecute::CopyFile now handles
  2443. rollback correctly.
  2444. 97-06-17 malcolmh Removed launcher support from the engine and
  2445. Installer API. Packages must now be used. This fixes bug
  2446. 1797.
  2447. 97-06-17 ivanw Bug 1880. On the browse dialog now we correctly
  2448. disable the new folder button if the current folder is
  2449. not writable. Also now we select different default
  2450. folder names on volumes that support long file names and
  2451. on those that do not support.
  2452. 97-06-17 ivanw Bug 1964. Moved and modified the code that sets the
  2453. initial values for the username and company
  2454. properties. Before these were set in the RegisterUser action,
  2455. which is far too late. Now these properties are set in
  2456. Engine::Initialize. Removed the USERNAME property from
  2457. the property table.
  2458. 97-06-17 t-caroln Msidb(d).exe -- fixed bug #1973. When the
  2459. MsiOpenDatabase API calls the GetDatabaseType function, it
  2460. would just pass in the database name (which may not
  2461. always be a full path). So, the CreateFile call would
  2462. try to open up the access database from the
  2463. executable's directory. The fix was to prepend the current
  2464. directory to the database name before calling the externa
  2465. api to open the database.
  2466. -----------------------------
  2467. Release 0.10.00.3017
  2468. -----------------------------
  2469. 97-06-17 malcolmh Updated clearreg. The old parameters have been replaced
  2470. in favor of the following (from clearreg /?):
  2471. Syntax: clearreg [L|A]
  2472. Clears reg keys used by Darwin. Specify 'L' for local
  2473. machine keys and 'A' for advertised keys. If neither is
  2474. specified then both will be cleared.
  2475. Local keys cleared:
  2476. HKLM\Software\Installer
  2477. HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce
  2478. HKLM\Software\Microsoft\Windows\CurrentVersion\SharedDLLs
  2479. (only those values that match keypaths of components in
  2480. HKLM\Software\Installer\Components are cleared)
  2481. HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall
  2482. (only those keys that match product codes in
  2483. HKLM or HKCR \Software\Installer\Products are cleared)
  2484. Advertised keys cleared:
  2485. HKCR\Software\Installer
  2486. 97-06-16 t-caroln Bug 1960 -- CMsiDatabase::Commit requires creating a
  2487. separate catalog cursor on the table catalog (since
  2488. it could be updated). This new cursor does not have
  2489. write access however, so I had to change it so that
  2490. it does. The current fix is temporary until the
  2491. states are completed. However, the current fix enables
  2492. the continued testing of transforms.
  2493. 97-06-16 t-caroln Each of these files needs to be released to \TOOLs
  2494. in the \\united\darrel drop. MsiDbD.exe, MsiDbd.pdb,
  2495. MsiDbd.map, MsiDb.exe, MsiDb.pdb, MsiDb.map,
  2496. MsiVald.exe, MsiVald.pdb, MsiVald.map, MsiVal.exe,
  2497. MsiVal,pdb, MsiVal.map. Also, the smoke test should no longer
  2498. check for msidbval.exe and msival(d).dll as these
  2499. files are no longer released.
  2500. 97-06-16 t-caroln Makefile -- Validation now done with msival(d).exe
  2501. instead of msidbval.exe.
  2502. 97-06-16 t-caroln Bug 1894. Since rollbacked, began fixing again.
  2503. This time with the primary key columns only. So, now
  2504. the primary key columns use the lower case letter to
  2505. denote non-nullable columns. These check-ins were
  2506. also tested with the repackager.
  2507. 97-06-16 t-caroln Msidb(d).exe -- Bug 1946. Made merge errors fatal
  2508. during the build process. Note, some merge erros may
  2509. not be listed in the _MergeErrors table if the errors
  2510. happen to be due to differences in the table schema
  2511. definitions.
  2512. 97-06-16 mattwe MsiGen: Bug #1815 Working on generating the right
  2513. components for extensions and classes
  2514. 97-06-15 MattWe Rolled Carolyn's changes of 6-11 to the individual
  2515. tables back. Broke the repackager terribly, as we
  2516. populate our rows a few columns at a time. Pushed to
  2517. Beta 2.
  2518. 97-06-13 MattWe MsiGen: Bug fixes #1356, #1822, #1878
  2519. -----------------------------
  2520. Release 0.10.00.3013
  2521. -----------------------------
  2522. 97-06-11 bench Bug 1905: Changed to Intel property to be defined as the
  2523. processor level, e.g. 4, 5, 6 ... rather than the
  2524. processor type, e.g. 486, 586. This was done because the
  2525. system no longer supports providing the processor type
  2526. for all processors in the future, where it does
  2527. provide the processor level.
  2528. 97-06-11 t-caroln All tables -- bug 1894 fix. Any column that is not
  2529. nullable must use a lower case letter in the .idt
  2530. file when defining the column definition. Nullable
  2531. columns use an upper-case letter. Changed all tables to
  2532. conform to the standard (that's listed in the help
  2533. file for the definition of the archive files) and
  2534. updated the _Validtion table to match the table
  2535. definitions.
  2536. 97-06-10 bench Modified the way we set the ROOTDRIVE property,
  2537. which defines the default location of any install. In
  2538. Admin mode, we set ROOTDRIVE to the first writable
  2539. mapped network drive found. In non-admin mode, we set
  2540. ROOTDRIVE to the fixed writable drive with the most
  2541. free disk space. Previously, we weren't taking
  2542. writability into account when setting this property.
  2543. 97-06-10 t-caroln MsiDb(d).exe -- bug 1902. Fixed so that can run
  2544. MsiDb(d) -c and then run in interactive mode to create a
  2545. new database. Previously would create the database
  2546. but would not allow import of tables.
  2547. 97-06-10 t-caroln Helpfile -- Added help for building the databases.
  2548. It's under Development Topics/Building the Databases.
  2549. 97-06-10 t-caroln Bug fixes 1890, 1891, and 1892. Changed the calls
  2550. to the obsolete View functions to use the
  2551. CMsiView::Modify function with the appropriate enum
  2552. 97-06-10 t-caroln MsiInfo(d).exe -- added it to TOOLS in the release.
  2553. Do not release externally yet.
  2554. 97-06-10 t-caroln MsiInfo(d).exe -- Bug 1886. Made it possible to set
  2555. summary information stream properties by using
  2556. switches on a command line. See the help file topic
  2557. Tools/SummaryInfo for more details. This tool also
  2558. displays the summary information of the database. To
  2559. display, use MsiInfo(d) {database}. To set summary
  2560. information properties, use MsiInfo(d) {database}
  2561. {option}{data}..... If not data is specifiec for an option,
  2562. that summary information property is removed. This
  2563. tool uses the external API.
  2564. 97-06-10 t-caroln MsiDb(d).exe -- Bug 1885. Made it possible in quiet
  2565. mode to open a database stored in the 'My Documents'
  2566. folder by changing the command line parsing routine
  2567. to look for quotation marks and allow spaces. So,
  2568. can export or import to a database or folder if for
  2569. example for a database, you would use -d "c:\my
  2570. documents\testdb.msi".
  2571. -----------------------------
  2572. Release 0.10.00.3010
  2573. -----------------------------
  2574. 97-06-09 malcolmh Bug 1758 has been fixed. You should see no more
  2575. error messages that look like "1: 1304 2: 5 3: foo.txt"
  2576. All error messages should be fully resolved to
  2577. human-readable text.
  2578. 97-06-06 ivanw Performed some cleanup in our databases. Removed the
  2579. files representing empty tables in template, testdb and
  2580. testcab. Removed duplicate information from the
  2581. tables. Removed unused binary files, and moved the used
  2582. ones to the directories where they are actually used.
  2583. -----------------------------
  2584. Release 0.10.00.3006
  2585. -----------------------------
  2586. 97-06-05 chetanp bumped up database version to 0.19 due to table
  2587. changes
  2588. 97-06-05 chetanp shifted BindImage function from IMsiServices to
  2589. IMsiPath object.
  2590. changed ProgMan.WkDir to ProgMan.WkDir_.
  2591. changed Shortcut.WkDir to Shortcut.WkDir_.
  2592. 97-06-05 t-caroln MsiDb(d).exe -- Exporting from a read-only database
  2593. can only be done in interactive mode. (left this out
  2594. in previous note)
  2595. 97-06-05 t-caroln Bug fix 1850 -- assert in shared.cpp due to usage of
  2596. now obsolete CMsiView::Insert function. Changed to
  2597. use CMsiView::Modify with the irmInsert enum.
  2598. 97-06-05 t-caroln Msidb(d).exe -- Fixed bugs 1846, 1847, 1848. should
  2599. now be able to round trip with access->msi and
  2600. msi->access (plus the memory leak when exporting from
  2601. access which is already documented and a not fix). Should
  2602. also be able to open a read-only database and export
  2603. from it. Can also create an access database now
  2604. (provided the name of the database you give has the .mdb
  2605. extension).
  2606. 97-06-05 ivanw Bug fix 1813. Added Order primary key column to the Combobox,
  2607. Listbox, Listview and Radiobutton tables. Removed the optional
  2608. Ordering columns from the first three tables and the Value_Next
  2609. column from the Radiobutton table. Removed the
  2610. ItemsNext control attribute.
  2611. 97-06-05 MattWe MsiGen: bug fixes #1745, 1764, 1768, 1811.
  2612. 97-06-05 t-caroln Msi.Hlp -- bug 1823. Add more information so that
  2613. the database API's (in msiquery.h) have similar help
  2614. information as their corresponding methods in the
  2615. automation help file.
  2616. 97-06-05 t-caroln Validation -- bug 1801. . and .. and multiple dots
  2617. not excepted in filename/folder names. Now validate
  2618. that. Ensures that short filenames/folder names only
  2619. contain at most one period and that long filenames
  2620. can contain multiple dots, but at least one other valid
  2621. character besides a dot. Hence ........ is invalid,
  2622. but .......s is valid.
  2623. 97-06-04 Tracyf Costing code for Registry, IniFile, Class, MIME, and
  2624. Redirection tables has been enabled and debugged
  2625. (see bug 978).
  2626. 97-06-04 ivanw Removed support for the old format of the
  2627. ControlEvent table where the Ordering column is missing. This
  2628. format change happened last year, so everybody had
  2629. ample time to update the tables.
  2630. 97-06-04 ivanw Removed code that supported the old form of
  2631. RadioButton table with the Help column missing. This format
  2632. change happened over half a year ago, so hopefully
  2633. there are no such old tables lying around.
  2634. 97-06-04 ivanw Bugs 1729, 1747. Modified the Admin wizard sequence
  2635. in the template database. Removed three obsolete
  2636. dialogs related to advertising. Added a browse dialog for
  2637. the install point. The browse dialog is not
  2638. functional yet, it needs some code in a couple of actions,
  2639. that will set the path to a reasonable default value.
  2640. 97-06-03 t-caroln Makefile -- added target for MsiDb.exe and
  2641. MsiValx.exe. You can build either ship or debug of these.
  2642. MsiDb(d).exe was formerly apitable.exe and
  2643. MsiValx(d).exe was formerly apidbval.exe. Had to add the x to
  2644. msival since the msival.dll creates similar files and
  2645. wanted to distinguish between the two.
  2646. 97-06-03 t-caroln Makefile -- fix bug 1566. The problem was msitable
  2647. was being built debug or ship, but whatever version
  2648. was clobbered during the make process. Msitable.exe
  2649. is now built debug only. We now use msidb(d).exe
  2650. during the make process for building the databases.
  2651. MsiDb(d).exe was formerly apitable.exe. It is msitable,
  2652. but it uses the external apis. Since this gets
  2653. labeled as debug or ship, it is always built correctly.
  2654. 97-06-03 t-caroln Validation -- fixed bug 1793 for duplicatekey check
  2655. for new rows. Will now complete the check, as before
  2656. it was exiting prematurely.
  2657. -----------------------------
  2658. Release 0.10.00.3003
  2659. -----------------------------
  2660. 97-06-02 t-caroln MsiQuery API -- fix bug 1716 where MsiOpenDatabase
  2661. could only open idbMsi or idbCreate. Implemented
  2662. function GetDatabaseType which it calls to determine
  2663. whether the database is idbMsi, idbAccess, idbODBC, or
  2664. idbSQLServer.
  2665. 97-06-02 t-caroln MsiQuery API-- fixed bug 1756 dealing with the
  2666. MsiRecordGetString API. When calling the FillBuffer
  2667. function it attempted to dereference a null pointer in
  2668. some cases. Fixed so that it doesn't attempt to deref a
  2669. null pointer and releases the string properly.
  2670. 97-06-02 t-caroln Validation -- fixed bug 1741. Exception caused by
  2671. SourceDirectory table in a repackaged database.
  2672. changed so that if it is the sourcedirectory table, it
  2673. uses the sourceDirectory table's name for the columns
  2674. that it looks for. Bug also related to attempt to
  2675. derefernce a null pointer in other section of code.
  2676. Fixed that as well.
  2677. 97-06-02 MattWe Repack: Bug #1764: Changed Repackager to read a
  2678. hex value from the registry for a Typelib LCID. (Was
  2679. reading it as a decimal, and so the value got
  2680. corrupted.)
  2681. 97-05-30 t-caroln ApiTable.exe -- Fixed bugs #1713, 1714.
  2682. ApiTable.exe is the msitable tool that uses the external api.
  2683. It works exactly like msitable and also allows the -t
  2684. option for applying transforms (similar to the -m
  2685. option for merging databases). The -t option is only
  2686. permitted in command line mode. Currently ApiTable.exe
  2687. only works on creating new databases or opening msi
  2688. databases due to a bug in MsiOpenDatabase which
  2689. doesn't check the type and assumes msi.
  2690. 97-05-30 t-caroln ApiDbVal -- fixed bug #1712. Now the error strings
  2691. can be localized as they are now resources in a
  2692. string table instead of hard coded in the .cpp file.
  2693. 97-05-30 t-caroln Msiquery.cpp -- Fixed bugs #1696 and #1697 where
  2694. services was being leaked. Now there is no longer a
  2695. memory leak when using the MsiDatabaseGenerateTransform
  2696. and MsiDatabaseApplyTransform APIs.
  2697. 97-05-30 t-caroln Makefile -- added target apitable to build
  2698. apitable.exe. It uses the tools' makefile.
  2699. 97-05-30 bench Added the file animate.avi to the TOOLS folder in
  2700. the drop. This file needs to be released.
  2701. 97-05-30 ivanw (bug 1331) Added a Cancel button to the basic UI. Changed the
  2702. functions in the engine that interact with the basic
  2703. UI so they take notice when the button is pressed.
  2704. Just as with the regular UI, after hitting the Cancel we
  2705. are at the mercy of the running action. If it is
  2706. considerate, it will stop in the middle. If the action
  2707. ignores the cancel message the action can finish its
  2708. business but the Sequence will prevent any further
  2709. actions from starting. For this reason it is important that
  2710. all actions check the return value when they call Message!
  2711. 97-05-30 malcolmh Resolved bugs 1590,1695,1690,1685,1694. Most code in
  2712. Darwin no longer requires the DLLs to be registered.
  2713. Only the server needs to be registered (msiexec
  2714. /regserver). We should no longer be using
  2715. CoCreateInstance to obtain objects from the kernel. Rather, we
  2716. should load the class factory directly from the DLL and
  2717. use it.
  2718. -----------------------------
  2719. Release 0.10.00.2930
  2720. -----------------------------
  2721. 97-05-29 bench Fixed bugs 1656, 1663, 1664, 1672 and 1674, all
  2722. related to the path object incorrectly handling errors
  2723. when reading from a file that is held by another
  2724. process with exclusive access (i.e. no sharing whatsoever).
  2725. These fixes in the path object will allow costing
  2726. and file copy/removal to handle these cases
  2727. appropriately (thereby fixing bugs 1488 and 1489).
  2728. 97-05-29 mattwe MsiGen: (bug #1608) Abandoned creating ICO files
  2729. for shortcut targets, and now starting to use EXEs.
  2730. Right now, they all use advt.exe, located in
  2731. src\tools\repack\support. Further work being done to use the
  2732. individual icons used up from the target apps.
  2733. 97-05-29 malcolmh Resolved bugs 1496, 1511, 1548, 1562, 1572, 1578,
  2734. 1579, 1589, 1592, 1595, 1597, 1598, 1626, 1631, 1637,
  2735. 1639, 1659. The API's basic UI now uses the same basic
  2736. UI that the engine uses. This mainly affects
  2737. MsiProcessAdvertiseScript, which previously only displayed
  2738. messageboxes.
  2739. 97-05-28 t-caroln apidbval is now a target in the makefile to build
  2740. apidbval.exe which is the database validation tool that
  2741. uses the external api and the validation code in
  2742. services. Fixed bug #1644 so that apidbval reports the
  2743. errors that are reported by msidbval. Apidbval will
  2744. eventually replace msidbval, but for now both
  2745. executables and both the core and msival(*).dll validation
  2746. code will be maintained.
  2747. 97-05-28 johndelo MsiInfo.exe is now built by the makefile (not
  2748. delivered yet). It is a replacement for suminfo.exe that
  2749. uses the external MSI API, and will eventually allow
  2750. setting of summary information property values.
  2751. 97-05-27 bench Fixed bugs 1576 and 1624, dealing with Admin
  2752. installs. To fix 1576, we always set properties for folders
  2753. in the directory table, whereas before we didn't set
  2754. these properties during an admin install. Code
  2755. existed that depended on those properties being set even
  2756. in admin mode. 1624 was fixed by updating the
  2757. AdminInstallFinalize action. This action now copies only
  2758. the database to the admin image, even if a launcher is
  2759. used. An error occurs if an admin install is
  2760. attempted with a launcher containing the database in a
  2761. resource, so don't do it.
  2762. 97-05-27 johndelo The following are no longer built as part of the
  2763. standard build and release: msinst.h msinst.lib,
  2764. msieng*.dll msisrv*.dll. The DLLs can still be build using
  2765. the target names: engine and services. This support
  2766. will eventually be dropped. The makefile is now using
  2767. precompiled headers for much faster builds. This
  2768. requires that common.h comes before any defines,
  2769. definitions, or other includes in the source files.
  2770. 97-05-27 t-caroln Implemented apidbval.exe. Currently the way to
  2771. build it is to run nmake -f apidbval.cpp from the
  2772. %Darwin%\src\tools directory. This executable validates a
  2773. msi database. It uses the external apis instead of
  2774. the validation dll.
  2775. -----------------------------
  2776. Release 0.10.00.2922
  2777. -----------------------------
  2778. 97-05-22 bench Now dropping msierror.msg to \\united\darwin in the
  2779. SHIP, SHIPSYM, DEBUG and LEGO folders. These files
  2780. need to be released.
  2781. 97-05-22 Mattwe MsiGen: Gave names to anonymous persistent columns.
  2782. (necessitated by midnight changes in database.cpp.)
  2783. -----------------------------
  2784. Release 0.10.00.2922
  2785. -----------------------------
  2786. 97-05-21 bench Removed the ixoFileMove operation, as identical
  2787. functionality exists in ixoFileCopy using the
  2788. icmRemoveSource install mode bit.
  2789. 97-05-21 malcolmh Made change to the API to fall back to using the
  2790. InProgress key if we can't find source information in
  2791. the standard location. I.E. if we're given a product
  2792. code but the product's not yet advertised we'll look in
  2793. the inprogress key to see whether the key matches
  2794. the in progress key. If it does then we use the
  2795. database listed under the in-progress key. This makes
  2796. suspend, resume, and reboot functional.
  2797. 97-05-21 johndelo MsiDatabase.Persist(idpEnum) and the C API
  2798. MsiDatabasePersist(enum) are now OBSOLETE, replaced by
  2799. MsiDatabase.Commit() and MsiDatabaseCommit(), with no
  2800. arguments. Rollback of uncommitted persistent data is
  2801. implicitly performed when the database is closed. Commit
  2802. may be called multiple times. The old functions will
  2803. be supported (commit only) for a couple releases.
  2804. 97-05-21 Mattwe MsiGen: added 16 bit contexts to class table. Also
  2805. bug fixes.
  2806. 97-05-21 johndelo MsiDatabase.GetPrimaryKeys(szTable) is now
  2807. implemented for all databases and is supported in the C API as
  2808. MsiDatabaseGetPrimaryKeys, which returns a record
  2809. corresponding to the primary key columns.
  2810. 97-05-21 Mattwe Validation: changed MIME primary key from
  2811. identifier to text. "foo/bar" is the typical MIME entry, but
  2812. that doesn't fit for identifiers.
  2813. 97-05-21 bench Added the UpdateStared property, which is set when
  2814. we are in resume mode, or in InstallValidate. When
  2815. this property is set, it means that we have updated the
  2816. system in some way and there is something to
  2817. rollback. In testdb, this property determines whether we
  2818. ask the user to rollback in the final dialogs.
  2819. 97-05-21 malcolmh Added a field to ixProductInfo record and changed
  2820. one. See helpfile for the new list of fields.
  2821. 97-05-21 malcolmh Command-line options to msiexec no longer need to be
  2822. specified in a particular order.
  2823. -----------------------------
  2824. Release 0.10.00.2921
  2825. -----------------------------
  2826. 97-05-21 Tracyf As part of fixing bug 1544, the RunFromSource
  2827. column of the Feature table has been changed to be
  2828. non-nullable (a value is now required in this field).
  2829. 97-05-21 bench Fixed ResolveFolderProperty again. This time, if we
  2830. can't find the path of the database, as is the case
  2831. when the database is located in the launcher, we use
  2832. the path of the launcher.
  2833. 97-05-21 malcolmh Clearreg now also clears any SharedDLL entries in
  2834. HKLM\Software\Microsoft\Windows\CurrentVersion\SharedDLLs
  2835. that match components in HKLM\Software\Installer\Components.
  2836. -----------------------------
  2837. Release 0.10.00.2921
  2838. -----------------------------
  2839. 97-05-21 johndelo MsiDatabase.Persist(idpCommit) will leave the database in a
  2840. writable state, as opposed to the previous behavior where it
  2841. put the database into a read-only state. Commit may be called
  2842. multiple times. Explicit Rollback is no longer supported
  2843. (there was no way to implement it without potential corruption
  2844. of the database). However, as today, Rollback is implicitly
  2845. called when the database object is destructed, which will
  2846. rollback updates back to the last Commit. MsiDatabase.GetUpdateState
  2847. will no longer return idsCommit or idsRollback.
  2848. 97-05-21 johndelo MsiCursor: The iraReadOnly row attribute is removed, and the
  2849. iraUserInfo attribute is non-persistent. There are no persistent
  2850. row attributes--too risky to change the file format.
  2851. 97-05-21 johndelo With a database opened read-only (like a normal install),
  2852. no persistent updates are allowed, i.e. no Insert into persistent
  2853. tables, and Update of temporary columns only. There is a new function
  2854. MsiCursor:InsertTemporary, which will insert a temporary row
  2855. into a persistent table. MsiView.Modify has a corresponding
  2856. option, ivmTemporary. Of course, an Insert can always be
  2857. be performed on a temporary table. Update of persistent data
  2858. in a read-only database was accidentally supported, and some
  2859. code may have taken advantage of it, but it causes database
  2860. corruption as the updated string pool cannot be kept in sync
  2861. with the persistent data on persistent file. In the engine,
  2862. SetProperty/GetProperty works on a private temporary table
  2863. maintained by the engine, that is initially populated with the
  2864. Property table data. This was also required to prevent the
  2865. authoring environment from putting working property settings,
  2866. like platform properties, into the ship Property table. Cursors
  2867. obtained for the database catalog tables are not updatable,
  2868. even for temporary columns and rows in order to preserve
  2869. database integrity, however the UserInfo row attribute may be set.
  2870. 97-05-21 chetanp Added optional CompLocator table for Appsearch
  2871. Added optional Cost column to TypeLib table
  2872. 97-05-21 Tracyf Support for decompressing files from a cabinet
  2873. stored as a stream in an .MSI database is now implemented.
  2874. The MsiAlter tool can be used to cram a cabinet file
  2875. into the database. In the Media table, the
  2876. "Cabinet" column should contain the name of the stream
  2877. containing the cabinet, preceded by a pound sign ("#").
  2878. 97-05-21 Tracyf The IMsiServices.CreateCopier function now takes a
  2879. new argument (required to enable support for reading
  2880. from a cabinet stored in a stream).
  2881. 97-05-21 Tracyf Fixed a bug in InstallFiles, involving split files.
  2882. Before the fix, if the last file in the File table
  2883. to actually be copied is split across two or more
  2884. disks, the second half of the file (or the last
  2885. two-thirds, or whatever) would never be decompressed, because
  2886. the required final ixoChangeMedia operation(s) were
  2887. not being put into the script.
  2888. 97-05-21 Tracyf The InstallFiles action (in concert with the
  2889. ixoFileCopy and ixoChangeMedia operations) has been upgraded
  2890. so that it will no longer prompt for disks that
  2891. don't contain files that actually need to be copied. For
  2892. instance, suppose a user installs a product that
  2893. uses 30 floppy disks, and suspends the install after
  2894. copying from the first 20 disks. Without this fix, when
  2895. the user resumes the install later, InstallFiles
  2896. would prompt the user for every one of the first 20
  2897. disks again, even though we most likely don't need to
  2898. copy any files from any of them.
  2899. 97-05-21 Tracyf All file copy/move actions now take into account the
  2900. backup files created for rollback when determining
  2901. disk cost.
  2902. 97-05-21 Tracyf Costing for the WriteIniFile action has been
  2903. implemented.
  2904. 97-05-21 Tracyf Costing for shortcuts has been implemented. Because
  2905. ofthe overloaded nature of the "Target" column in
  2906. the Shortcut table, the coding and testing requirements
  2907. for determining shortcut costs are rather extensive.
  2908. More thorough documentation for shortcuts and
  2909. shortcut costing will be forthcoming as soon as possible.
  2910. 97-05-20 bench Fixed the Engine.ResolveFolderProperty method to
  2911. resolve relative to the folder containing the database
  2912. rather than the launcher. As such, SOURCEDIR, if it
  2913. isn't set, is set to the folder containing the
  2914. database.
  2915. 97-05-20 ivanw Implemented preview for dialogs and billboards.
  2916. Added the Preview dialog attribute. Added the
  2917. BillboardName control attribute. Modified several control types,
  2918. so they don't touch their properties in preview
  2919. mode.
  2920. 97-05-20 t-caroln MsiQuery API -- updated MsiViewModify to use the
  2921. validation enums. Also implemented MsiViewGetError for
  2922. obtaining errors from validation. The
  2923. MsiViewGetError API excepts a buffer, and buffer size to put the
  2924. column name and returns a MSIDBERROR enum depending on
  2925. the error/no error.
  2926. 97-05-20 t-caroln CMsiView -- Added GetError method for obtaining
  2927. Validation errors. Returns the enum value and the name
  2928. of the string. In the automation layer, it returns a
  2929. BSTR with the following syntax - ColumnName, Error.
  2930. 97-05-20 t-caroln Implemented validation part of the view object.
  2931. It's in the Modify method and there are three new enums
  2932. -- irmValidate (for fetched record), irmValidateNew
  2933. (for new record) and irmValidateField (for field
  2934. validation of fetched or new)
  2935. 97-05-20 malcolmh Add a "/O" option to msiexec to allow a
  2936. property=value string to be specified when doing an install. If
  2937. there are spaces in this string it must be placed
  2938. withing quotation marks.
  2939. 97-05-20 Mattwe MsiGen: Fixed minor bugs, and one access violation
  2940. caused by adding doing a MsiString foo("blah");
  2941. foo+= 'x'; Fixed by doing foo += MsiChar('x'); Oddly,
  2942. the code has worked fine for a week's worth of
  2943. releases...
  2944. -----------------------------
  2945. Release 0.10.00.2920
  2946. -----------------------------
  2947. 97-05-20 bench Added the Resume and Preselected properties. The
  2948. Resume property is set when we are resuming a suspended
  2949. install. The Preselected property is set when any
  2950. of the feature/component/file selection properties
  2951. (ADDLOCAL, ADDSOURCE, etc...) are set. These properties
  2952. are used to supress certain dialogs in the wizard
  2953. sequence as appropriate.
  2954. 97-05-20 bench Resume mode: Upon error or user cancellation, we
  2955. now allow the option of rolling back or suspending the
  2956. install. The same mechanism is used to recover from
  2957. a crash or a pulled plug. Upon resuming a suspended
  2958. install, the same selections made originally by the
  2959. user are used again, and the UI to change selections is
  2960. supressed.
  2961. 97-05-20 bench ConfigMgr/Server: Added three methods to facilitate
  2962. suspend/resume. The ConMan.InstallInitialize method
  2963. is called to mark an install as in progress, and lock
  2964. out the server to other installs belonging to
  2965. different products. This method creates the
  2966. HKLM\...\Installer\InProgress key, which contains information
  2967. necessary to resume the install at a later time. While
  2968. this key is set, no other installs may run. This means
  2969. both calls to InstallInitialize and RunScript will
  2970. fail for installs for products other than the product
  2971. marked as in-progress. The ConMan.InstallFinalize
  2972. method is used to mark an install as complete, and
  2973. handle the rollback if need be. If an install is
  2974. suspended, the InProgress key is not removed. When the
  2975. install is resumed, the information necessary to carry on
  2976. is obtained through the
  2977. ConMan.GetInProgressInstallInfo method.
  2978. Currently, GetInProgressInstallInfo is called in Engine.Initialize.
  2979. InstallInitialize is called in the InstallValidate action.
  2980. InstallFinalize is called in Engine.Terminate.
  2981. Complete documentation for all of these methods is forthcoming.
  2982. 97-05-20 malcolmh Added Repair, Install to Network, and Uninstall
  2983. verbs. Removed Advertise verb.
  2984. 97-05-19 ivanw The main wizard sequence in Template now has 6
  2985. versions depending on the Installed, Resume and
  2986. Preselected properties.
  2987. 97-05-19 Mattwe MsiUtil: Added CreateStreamFromFile (with
  2988. automation.) Takes a file name, and a stream name, and copies
  2989. the file into the current database's main storage.
  2990. 97-05-19 Mattwe RunGen: Added support for creating launchers or msi
  2991. packages. (radio button)
  2992. 97-05-19 Mattwe Release: Diamond.exe is no longer released.
  2993. MakeCab.EXE is dropped instead, to the same place.
  2994. 97-05-19 t-caroln MAKEFILE -- added testcabdb target for building a
  2995. database that uses cabinet files. The database is
  2996. built using the merge, but it's files reside in the
  2997. %DARWN%\data\testdb.cab directory. It also uses msialter
  2998. to add the msproj1.cab file as a stream in the
  2999. database storage.
  3000. 97-05-19 t-caroln msialter.exe -- Cabinet implementation. No more
  3001. property file. To add a cabinet, use msialter
  3002. {database} {cabinet}. The cabinet will be stored as its base
  3003. name., i.e. msproj1.cab if the cabinet was
  3004. c:\darwin\data\project\msiproj1.cab
  3005. 97-05-19 Mattwe DoAcme1: Added the repackUI build.
  3006. 97-05-19 Mattwe Repack: RPKWIZ.EXE should be released in the
  3007. <PLATFORM>\Tools directory. This is a-billhu's repackaging
  3008. wizard UI. Also, the repackUI build option will
  3009. build the repack template DB, and the rest of Darwin if
  3010. needel. On a clean build machine, repackui should
  3011. build everything you need.
  3012. 97-05-19 Mattwe MsiGen: (apparently this didn't get added last
  3013. week.) Added Icon table population for shortcuts and
  3014. classes. MsiGen should now be code complete.
  3015. 97-05-19 Mattwe Repack: added makefile for a-billhu's repackaging
  3016. wizard UI. Updated main Darwin makefile with
  3017. "repackui" option, which will also rebuild gen and util if
  3018. necessary. Made minor code changes to get the UI to
  3019. compile with OTOOLs.
  3020. 97-05-19 t-caroln Added validation code to cursor implementation. Now
  3021. part of Cursor.Validate, however msidbval.exe still
  3022. uses the validation dll. Will be converted to use
  3023. external api once finalize how to expose the cursor
  3024. through the modify method of the view object and the
  3025. MsiViewModify API.
  3026. 97-05-19 t-caroln msialter.exe -- since doing away with launcher,
  3027. update of launcher resources now requires the -l option.
  3028. So, to update launcher resources, use msialter -l
  3029. {launcher} {propfile}. Update msialter to now permit
  3030. stuffing cabinet files into a database. Use msialter
  3031. {database} {propfile}. In propfile, use
  3032. CABINET={cabinet file} syntax. The cabinet will be stored in the
  3033. database storage as it's base name. So, for the
  3034. c:\temp\msproj1.cab file, it will be seen in the
  3035. database as msproj1.cab.
  3036. 97-05-19 ivanw Added Rollback/Resume choice to UserExit and
  3037. FatalError dialogs.
  3038. 97-05-19 ivanw Handler::DoAction with an argument of "!" sets the
  3039. Preview mode. In preview mode putting up a new dialog
  3040. or calling DoAction with "" removes the existing
  3041. dialogs.
  3042. 97-05-18 ivanw Modified Clearred to remove the
  3043. HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce tree. To do this,
  3044. use the ALL option.
  3045. 97-05-18 malcolmh As far as I am aware, *all* problems with server
  3046. unregistration have been fixed. The server should only
  3047. refuse to die within 6 minutes of a client crashing.
  3048. Please let me know if you find otherwise.
  3049. 97-05-18 malcolmh Darwin shell data (associations and verbs) is now
  3050. unregistered when the server is unregistered.
  3051. 97-05-18 malcolmh Checked in CLEARREG to allow clearing of
  3052. HKCR\Software\Installer and HKCU\Software\Installer. This will
  3053. be updated to delete our new regkeys when we start
  3054. using them.
  3055. -----------------------------
  3056. Release 0.10.00.2916
  3057. -----------------------------
  3058. 97-05-16 johndelo The system error codes returned from the public
  3059. APIs, as defined in msi.h and misquery.h have been
  3060. cleaned up and extended. Some of the messages supplied for
  3061. the error codes were inappropriate for our use. The
  3062. new message fragment, MsiError.mc, needs to be merged
  3063. into NT5 winerror.mc.
  3064. 97-05-16 johndelo The engine initialization error messages have been
  3065. removed from the launcher. Since the MSI errors are
  3066. now being integrated into the OS, the messages for
  3067. those error are available via the system API:
  3068. FormatMessage. The engine now uses this instead of looking up
  3069. strings in the launcher. For use with systems without
  3070. the latest NT5 builds, a message file is now built,
  3071. MsiError.msg, which is installed along with the other
  3072. MSI components. Messages will be obtained from that
  3073. if not found in the system. (This message DLL will not
  3074. be needed as part of NT5).
  3075. 97-05-15 malcolmh The MsiAdvertiseProduct API now has two additional
  3076. parameters to specify transforms and language.
  3077. 97-05-15 malcolmh The MsiInstallProductAPI now takes a package path
  3078. instead of a module handle. This package path may be
  3079. a path to either a database or a launcher.
  3080. 97-05-15 malcolmh We now register associations to allow installation by
  3081. double-clicking on an MSI database. Also, the Install
  3082. and Advertise verb are available by right-clicking
  3083. on an MSI database. The registered verbs use msiexec(d)
  3084. to do their jobs.
  3085. These associations and verbs are
  3086. registered when /regserver is run of msiexec(d), or
  3087. they can be registered independently of registering
  3088. the server by using msiexec(d)'s /D option.
  3089. These associations are registered under HCKR\.msi and
  3090. HKCR\Msi.Package
  3091. 97-05-15 malcolmh Msiexec supports some new command-line options:
  3092. /P installs a product given its database.
  3093. /D registers the .MSI shell association and verbs
  3094. /A advertises a product given its database.
  3095. /Q suppresses all UI -- this option must be specified first
  3096. 97-05-15 malcolmh Msiexec now returns and displays standard system messages.
  3097. 97-05-15 malcolmh Added two APIs for future source list management:
  3098. MsiModifySourceList and MsiEnumSourceList. These
  3099. are not yet implemented but are in msi.w/msi.h
  3100. 97-05-15 Mattwe MsiGen: added pulling up of Icons. Verrry
  3101. complicated. Can write back out to ICO files, or to memory
  3102. suitable for putting into an allocated stream.
  3103. 97-05-15 ivanw Removed the Explorer Engine mode bit and added the
  3104. Reboot and RebootNow bits. Added the ForceReboot and
  3105. ScheduleReboot actions. Added a Reboot method to the
  3106. Server. Added the REBOOT property. Added code to the
  3107. Engine, so if an action returns Suspend, it means that
  3108. a reboot is needed. Added the new actions to the
  3109. Testdb. These can be turned on by setting the
  3110. FORCEREBOOT or SCHEDULEREBOOT properties.
  3111. 97-05-14 bench Shell folder properties: When setting shell folder
  3112. properties, if the SHGetSpecialFolderLocation API
  3113. fails (which may be because the folder doesn't exist), we
  3114. check the registry for the path. The result of this
  3115. is that we set the properties for folders that are
  3116. registered but don't exist, where we didn't before.
  3117. 97-05-14 t-caroln Makefile -- testdb.mdb now built by exporting the
  3118. testdb.msi tables to a temporary directory and then
  3119. importing into an access database. The temp directory
  3120. is cleaned up before and after.
  3121. 97-05-13 bench Added db2db.bat to drop in Tools folder. db2db is a
  3122. tools to convert between .msi and .mdb databases.
  3123. This file needs to be released.
  3124. -----------------------------
  3125. Release 0.10.00.2913
  3126. -----------------------------
  3127. 97-05-12 johndelo The public APIs for access by custom actions and tools
  3128. have now been defined and implemented. The source to the
  3129. header file is MsiQuery.w, but the actual header is built
  3130. and delivered as MsiQuery.h. Both Ansi and Unicode versions
  3131. of all functions are implemented with the exception of the
  3132. UI Dialog preview functions. Although help for these API
  3133. functions is not available yet, they are essentially the
  3134. same as the corresponding automation functions, with the
  3135. objects replaced by corresponding handles. There are
  3136. extensive comments in the header file, which when used with
  3137. the automation help topics, should permit testing to proceed.
  3138. The launcher and tools are in the process of being converted
  3139. to use these API functions, rather than be dependent upon
  3140. the internal header files.
  3141. 97-05-12 johndelo Future alert: Error returns for the external installer API
  3142. functions will be modified slightly, as some of the seemingly
  3143. appropriate error macros had quite misleading explanations.
  3144. 97-05-12 t-caroln added TOOLS\schema.msi to the drop. This file needs
  3145. to be released.
  3146. 97-05-07 t-caroln Makefile -- Building of databases using -m option of
  3147. mistable. Schema.msi is the base. Template.msi
  3148. inherits from schema.msi. Testdb.msi inherits from
  3149. template.msi. Repack.msi inherits from template.msi.
  3150. Template.msi contains the basic UI and sequence
  3151. actions. Whatever UI is common to template and testdb lies
  3152. in template's directory. This will prevent having to
  3153. maintain duplicate copies of files. After building,
  3154. one needs to check that the _MergeErrors table was
  3155. not created. This table means that there were merge
  3156. conflicts encountered during the building of the
  3157. database and they should be investigated.
  3158. 97-05-07 t-caroln Added a new directory/database -- schema.msi. This
  3159. database contains all of the tables to illustrate the
  3160. schema. The only non-empty table is the
  3161. _Validation table. It can be built separately using the
  3162. schemadb target. This database forms part of the new
  3163. inheritance process for building the databases.
  3164. -----------------------------
  3165. Release 0.10.00.2907
  3166. -----------------------------
  3167. 97-05-06 ivanw The validation of the path on a Browse dialog has
  3168. been moved from the individual controls to
  3169. controlevents. As part of this change the DoNotCallManager and
  3170. the ExistingOnly control style bits have been
  3171. eliminated and the SetPath, CheckPath and CheckExistingPath
  3172. controlevents have been added.
  3173. 97-05-06 ivanw Rolled back the last two changes to makefile. testdb
  3174. is built in the old way again. We had to do this
  3175. because make was building a corrupt testdb.
  3176. 97-05-06 t-caroln MergeDatabase method -- the optional table parameter
  3177. can have other columns in it, but those other
  3178. columns must be nullabe as if merge conflicts are
  3179. encountered, updating the table will fail with non-nullable
  3180. columns.
  3181. 97-05-06 t-caroln Makefile/ testdb -- Testdb is now built from
  3182. %darwin%\data\testdb.tmp whose idt files are additions to
  3183. those in the %darwin%\data\template directory. The
  3184. template database is built first and then merged with
  3185. testdb. After this build, the testdb tables will be
  3186. migrated from the temp directory to the testdb
  3187. directory. Also the repackage database will be built using
  3188. the merge process. This will prevent having to keep
  3189. duplicate files in ssync, except if major table schema
  3190. changes occur.
  3191. 97-05-06 t-caroln Msitable -- added -m option for merging a database.
  3192. Can have up to 10 -m's. The -m option can only be
  3193. used in non-UI mode. See help file for details.
  3194. 97-05-06 bench Added the Samples folder to the drop. The first
  3195. sample install is Testdb, which is contained in the
  3196. TestDb folder beneath Samples. Testdb.msi has been moved
  3197. from Tools to Samples\Testdb.
  3198. 97-05-06 mattwe Repack: Added Typelib population, and finished
  3199. preliminary pass of Verbs and Extensions. There a number
  3200. of spec/design issues that have been brought up with
  3201. Extensions, that Chetan should be solving soon...
  3202. 97-05-06 tracyf The following properties are now supported: COMPADDLOCAL,
  3203. COMPADDSOURCE, FILEADDLOCAL, FILEADDSOURCE. The main result
  3204. of this is that the MsiInstallMissingComponent and
  3205. MsiInstallMissingFile APIs are now functional (since they
  3206. work by setting one of the aforementioned properties and
  3207. then calling DoAction("Install")). See the help file
  3208. for more info.
  3209. 97-05-05 tracyf A new Reinstall mode is now supported: iefOverwriteEqualVersions.
  3210. The letters assigned to the various reinstall modes have also
  3211. been rearranged a bit, and the descriptions have been updated,
  3212. to make their meanings a bit more clear. See the REINSTALLMODE
  3213. topic in the help file for more info.
  3214. 97-05-05 tracyf Under NT, the engine Message function now writes an entry to
  3215. the system Event Log if an error or warning is reported. To
  3216. avoid major complications, only the error code is written
  3217. (i.e. no description text is available if you double-click
  3218. the event in the Event Viewer. The "Source" name for events
  3219. generated by Darwin is "Installer".
  3220. 97-05-05 bench Added the icmRemoveSource bit to the possible
  3221. install mode flags passed to IxoFileCopy. This allows
  3222. IxoFileCopy to essentially move files rather than copying
  3223. them. This functionality replaces the IxoFileMove
  3224. operation, which will be removed when it is no longer
  3225. used in the MoveFiles action.
  3226. 97-05-03 t-caroln Validation: RegPath category does not allow [$abc]
  3227. and [#abc] properties. KeyFormatted allows multiple
  3228. [#abc] and [$abc] properties embedded within a
  3229. string. For any column where they are not allowed to be
  3230. embedded or multiples are not allowed, special
  3231. validation will be needed or a special category will be
  3232. needed.
  3233. 97-05-03 t-caroln _Validation table: Changed Verb.Argument,
  3234. Shortcut.Arguments, RegLocator/RemoveRegistry/Registry.Name
  3235. and Registry.Value to use the KeyFormatted category
  3236. string.
  3237. 97-05-03 ivanw Added one more parameter to Handler::Initialize.
  3238. This is the window handle of the main window of the
  3239. calling process. (can be null) This way when Darwin is
  3240. called from an application our windows will be properly
  3241. parented to the calling app.
  3242. 97-05-02 t-caroln Msialter.Exe -- Implemented update icon part so
  3243. that one can change the icon in the launcher by using
  3244. the following syntax in the property file :
  3245. ICON=@{filename.ico} where {filename.ico} is your .ico file.
  3246. -----------------------------
  3247. Release 0.10.00.2902
  3248. -----------------------------
  3249. 97-05-02 ivanw Added the JPEG code to the handler. Two new dialog
  3250. attributes are introducedL Palette and
  3251. UseCustomPalette. A new dialog style is defined: UseCustomPalette.
  3252. Added five new dialog to testdb to display the JPEG
  3253. features. Set TESTDB and from the first dialog you can
  3254. access the JPEGs. Check them out, they look cool!
  3255. -----------------------------
  3256. Release 0.10.00.2902
  3257. -----------------------------
  3258. 97-05-01 chetanp Changed PublishComponent.Index column name to
  3259. PublishComponentQualifier to match the corresponding MSI
  3260. API function. Will affect the PublishComponents and
  3261. UnpublishComponents action
  3262. 97-05-01 malcolmh In Install API: Removed INSTALLUI_HANDLER from all APIs. Use
  3263. MsiSetInternalUI and MsiSetExternalUI instead.
  3264. 97-05-01 malcolmh In Install API: Removed obsolete functions:
  3265. MsiQueryProductInfo, MsiLocateLanguageComponent,
  3266. MsiIsProductLauncher.
  3267. 97-05-01 malcolmh In Install API: Changed all APIs that take handles to use
  3268. MSIHANDLE type.
  3269. 97-05-01 malcolmh In Install API: Moved MsiCloseAllHandles and MsiCloseHandle
  3270. to msi.w from msiquery.w
  3271. 97-05-01 malcolmh In Install API: Added INSTALLSTATE_INCOMPLETE identify the state
  3272. when a component/product is only partly installed because
  3273. it needs to be resumed or is in progress.
  3274. 97-05-01 malcolmh In Install API: Changed REINSTALLMODE to be a bitflag. All APIs
  3275. that take a REINSTALLMODE to a DWORD.
  3276. 97-05-01 malcolmh In Install API: Added MsiSetInternalUI, MsiSetExternalUI,
  3277. MsiSetLogMode, MsiQueryProductState, MsiOpenPackage,
  3278. MsiEnumComponentQualifiers.
  3279. 97-05-01 malcolmh In Install API: Renamed MsiProvideComponentIndirect to
  3280. MsiProvideQualifiedComponent.
  3281. 97-05-01 malcolmh In Install APIRemoved fRunWizard parameter from
  3282. MsiAdvertiseProduct.
  3283. 97-05-01 chetanp Added IMsiView::Modify function. see help for more
  3284. info
  3285. 97-05-01 t-caroln Validation DLL now will allow the DefaultDir column
  3286. of the Directory table to contain environment
  3287. variables. In validation, this means that for the roots, a
  3288. %identifier is valid as well as an identifer. For
  3289. non-roots, the column is validated as a filename/folder
  3290. name column.
  3291. 97-05-01 t-caroln Msialter.exe now correctly dumps an Icon resource to
  3292. a .ico file when using the -f option.
  3293. 97-05-01 malcolmh Modified MSIEXEC. Long filenames are now supported.
  3294. Additionally, dashes and slashes are now valid
  3295. characters in arguments, as long as their not the leading
  3296. character. That is, "msiexecd /Z 1-2-3" will be
  3297. interpreted as one switch (Z) with an argument (1-2-3), but
  3298. "msiexecd /Z -2-3" will be treated as three switched
  3299. (Z, 2, and 3). Msiexec no longer supports feature
  3300. installation. Beyond its registration and
  3301. debugging/testing features, the only supported options are /X for
  3302. remove-all and /C for configure product (i.e. go into
  3303. maintenance mode). Remove-all will be used by SMS
  3304. and Configure-product will be used by the Add/Remove
  3305. control panel. Use MSIEXEC(d) /? for a list of valid
  3306. options.
  3307. 97-05-01 bench The text displayed in the UI during rollback and
  3308. rollback cleanup is now passed to the server in the
  3309. script, which is retrieved from the ActionText table of
  3310. the database. The two "actions" are Rollback and
  3311. RollbackCleanup. The new ixoRollbackInfo operation is
  3312. used to pass this information in the script. Updated
  3313. the ActionText table in testdb to reflect this.
  3314. 97-05-01 t-caroln Fixed in the Validation DLL the validation of a
  3315. Registry Path. Registry paths can allow any character,
  3316. so had to change validation to allow that.
  3317. 97-05-01 t-caroln Changed two entries in the _Validation table. The
  3318. IniFile.Value columns and the RemoveIniFile.Value
  3319. columns are now validated as Formatted instead of
  3320. Idenitifer. Also update the template database with these
  3321. changes.
  3322. 97-05-01 bench Added TOOLS\template.msi to the drop. This file
  3323. needs to be released.
  3324. 97-05-01 mattwe Makefile: added templatedb and repackdb options to
  3325. build. Builds the template.msi, and the repack
  3326. wizard template database (repack.msi). No sentinel file
  3327. for these yet, will add if needed.
  3328. 97-05-01 mattwe Util: fixed update/assigns
  3329. 97-05-01 mattwe Repack: updated repkinst.bat to use repack.msi from
  3330. build.
  3331. 97-05-01 mattwe MsiGen: Added RemoveIniFile population. Added
  3332. RewriteString() to escape special characters that are
  3333. special to FormatText. Fixed bugs related to
  3334. Update/Insert fixes in database.
  3335. 97-05-01 mattwe Repack: Added IDTs for the SourceFile and
  3336. SourceDirectory tables to src/tools/repack/support. These are
  3337. imported into the new template DB to form the
  3338. repack.msi template for the Repackaging Wizard. Still
  3339. needs validation tables.
  3340. 97-05-01 mattwe Template: created darwin\data\template with a
  3341. template DB based on testdb. It should be a minimum DB
  3342. for starting new authoring, or a baseline for
  3343. autormated authoring tools (Repackaging Wizard.) All new
  3344. schema changes need to be added here as well as in
  3345. testdb.
  3346. 97-04-30 johndelo MsiView.Update and MsiCursor.Update are now more
  3347. strict: Only fetched rows can be updated, and primary
  3348. key data cannot be changed (was leaving orphaned
  3349. records and tromping on duplicate keys and killing joins).
  3350. Coming soon is a new function, Replace, which will
  3351. delete the exising row and insert a new one as
  3352. necessary. Update is the only function that will allow
  3353. updating through a join. Old code that dependent upon
  3354. Update to incdiscriminantly insert new data should
  3355. probably call Assign instead. More doc is forthcoming.
  3356. 97-04-30 chetanp the CustomAction table format has changed. Please
  3357. see help
  3358. 97-04-30 bench Changed the name of the DOC\msierror.h file to
  3359. msierror.mc to correspond to NT's winerror.mc. Also
  3360. changed the format of this file to match winerror.mc.
  3361. This change needs to be reflected in the release.
  3362. 97-04-30 ivanw Made some changes to the Browse dialog to coincide
  3363. with the bump in the database version. The
  3364. PathTailEdit control type has been renamed to PathEdit to be
  3365. more truthfull. Added two new control styles: SplitPath
  3366. and ExistingOnly. To get the same functionality as
  3367. before, one must add the SplitPath bit to the PathEdit,
  3368. DirectoryCombo and DirectoryList controls on the
  3369. browse dialog. These two bits are not fully implemented
  3370. yet, but to keep your browse dialogs running you have
  3371. to add the SplitPath bit now. Testdb has been
  3372. modified to reflect these changes.
  3373. 97-04-30 chetanp Changed the RedirectComponent table to eliminate the
  3374. Language column.
  3375. Changed the PublishComponent table to change the
  3376. Language column to the Index column.
  3377. See help on these tables for more info.
  3378. 97-04-30 bench Completed rollback for the RegisterFonts and
  3379. UnregisterFonts actions. All that remains are the
  3380. Register/UnregisterTypeLib actions.
  3381. 97-04-30 bench Made a few changes to font registration. The C
  3382. interface to MsiServices.RegisterFont now accepts an
  3383. IMsiPath* rather than an IMsiPath&. If the pointer is
  3384. null, the file is assumed to be located in the default
  3385. system font folder. The automation interface has
  3386. been changed to accept either an empty argument or no
  3387. argument for the path, with either indicating the file
  3388. is in the font folder. Finally, if the path passed
  3389. to RegisterFont is either empty or is equivalent to
  3390. the system font folder, we only register the font file
  3391. name, rather than the full path of the font file.
  3392. 97-04-29 tracyf The ReserveCost table is now available. This is an
  3393. optional table that allows authors to reserve extra
  3394. disk cost in any specified directory, attributed to a
  3395. component. See the help file for details. Note that
  3396. I've added this table to the TestDB, and authored it
  3397. to reserve some extra cost under the "Month_Mar" and
  3398. "Tools" components.
  3399. 97-04-29 bench Made a few changes to rollback reg keys and backup
  3400. file locations, in accordance with the Rollback spec.
  3401. The reg value to enable or disable rollback is now
  3402. "Enable" under HKLM\Software\Installer\Rollback. (It
  3403. used to be "Mode") Note that the interpretation of
  3404. this value is scheduled to change, but hasn't yet.
  3405. Rollback scripts are now registered under the key
  3406. HKLM\Software\Installer\Rollback\Scripts. Rollback
  3407. scripts are by default created in the Config.Msi folder at
  3408. the root of the volume containing the Windows folder.
  3409. Backup files are now created in the Config.Msi
  3410. folder at the root of whatever volume the original file
  3411. was located on. Finally, the location for backup
  3412. files and rollback scripts can be configured by setting
  3413. the "BackupPath" value under
  3414. HKLM\Software\Installer\Rollback.
  3415. 97-04-29 t-caroln MSIDBVAL -- fix for parsing properties to allow for
  3416. [\[] and [\}] types; fix to allow for multiple error
  3417. report; fix for CustomSource category used by the
  3418. Custom Action table.
  3419. -----------------------------
  3420. Release 0.10.00.2829
  3421. -----------------------------
  3422. 97-04-28 johndelo Custom action support is implemented. See help for
  3423. details. EXE and DLL custom actions are supported,
  3424. script files are not supported yet. Custom actions are
  3425. called by putting the custom action name in the
  3426. sequence table, usually with a conditional expression. The
  3427. custom action info is in the CustomAction table, and
  3428. the code can be in the database or a separate file.
  3429. TestDb.Msi has examples of custom actions (must define
  3430. property: TESTACTION in order to enable the custom
  3431. actions).
  3432. 97-04-28 ivanw To simplify support for different scripts we
  3433. eliminated the support for multiple fonts within the same
  3434. string. We can still use the same syntax to define a
  3435. text style for a given string or a default one for the
  3436. control, but the style label can appear only at the
  3437. beinning of the string. Changed testdb accoringly. Old
  3438. databases that have style specification in the
  3439. middle of the string won't brake, but the style labels
  3440. will show up as part of the string.
  3441. 97-04-28 tracyf The RemoveFiles action has been modified slightly -
  3442. it now attempts its file removal action if the gating
  3443. component is set to any action state (iisLocal,
  3444. iisSource, or iisAbsent). Before, it attempted removal
  3445. only for the iisLocal or iisSource states. This was
  3446. changed because testing identified a real-world
  3447. scenario in which enabling removal during the iisAbsent
  3448. action state would solve an Office authoring problem.
  3449. 97-04-28 tracyf When using properties on the command line to
  3450. configure features (i.e. ADDLOCAL, ADDSOURCE, REMOVE, OR
  3451. REINSTALL), the Selection Manager now properly sets only
  3452. the specified feature(s) for action - all other
  3453. features, including children of the specified feature(s),
  3454. are set to the NULL (no action) state. As a side
  3455. effect of this, the ProcessPropertyFeatureRequests
  3456. method had to be removed from the public
  3457. IMsiSelectionManager interface (also from automation).
  3458. 97-04-28 bench Added the file repkinst.bat to the \\united\darwin
  3459. drop in Tools. This file installs the repackaging
  3460. wizard to the local machine. This file needs to be
  3461. released.
  3462. 97-04-28 mattwe Repack: created repackaging wizard reference
  3463. machine installer. darwin\src\tools\repack\repkinst.bat.
  3464. Should be run on reference machine. Copies files
  3465. down, and registers darwin.
  3466. 97-04-28 t-caroln Msialter.exe -- The tool now limits one to only one
  3467. database file resource per launcher. By design, all
  3468. file resources are neutral. Also, the database
  3469. property is always neutral. Only one database property
  3470. can be listed in a property file. Will be changing the
  3471. install.rc file so that the Database property is
  3472. made neutral.
  3473. 97-04-28 johndelo MsiEngine.EvaluateCondition now takes a variety of
  3474. symbols besides property names: enviroment vairables
  3475. (% prefix), component installed state(? prefix),
  3476. component action state($ prefix), feature installed
  3477. state(! prefix), feature action state(& prefix). More info
  3478. in help.
  3479. 97-04-28 johndelo MsiEngine.Property, IMsiEngine::Get/SetProperty now
  3480. accepts environment variables if prefixed by a
  3481. percent sign (%). The envir.variable code was consolidated
  3482. here from other places (FormatText,
  3483. EvaluateCondition) to provide a more general behavior. Environment
  3484. variable get/set is only for the current process.
  3485. 97-04-25 tracyf The SetFeature member has been removed from
  3486. IMsiSelectionManager, since the existing ConfigureFeature
  3487. member already provides identical functionality. Also,
  3488. ConfigureFeature has been modified to use the same
  3489. iisEnum constants as other SelectionManager functions.
  3490. 97-04-25 t-caroln Added checkdb as target for make win debug. This
  3491. target creates a sentinel file -- checkdb.snt if
  3492. testdb.msi is a valid database. Else, it outputs errors in
  3493. testdb.msi to standard out. Beware!!
  3494. 97-04-25 t-caroln Added two new categories for _Validation -->
  3495. Property and CustomSource. The CustomSource category will
  3496. be used by the CustomAction table Source column. This
  3497. will occur when the CustomAction table data is
  3498. checked in. The Property category is for Property strings
  3499. that are valid identifiers but can represent an
  3500. environment variable, so a percent sign is allowed.
  3501. -----------------------------
  3502. Release 0.10.00.2825
  3503. -----------------------------
  3504. 97-04-24 johndelo InstMsi.exe (and the debug version InstMsiD.exe now
  3505. install the combined Msi kernel DLL, Msi(D).dll,
  3506. instead of MsiEng.dll+MsiSrv.dll. It will not remove or
  3507. unregister to old dlls (as it knows nothing about
  3508. them). RegMsi.exe now registeres/unregisters the combined
  3509. DLL if no modules are specified, but can still act
  3510. on the old DLLs with the options S and E.
  3511. 97-04-24 tracyf Fixed a problem involving cabinet files in which
  3512. more than one file is split from one disk to the next.
  3513. As a side-effect of the fix, it turns out that we no
  3514. longer need the 'split' bit set for any files in the
  3515. File table (I guess you could say that Darwin's
  3516. "intelligence" has grown such that it no longer needs to
  3517. be told which files are split. Yippee!). If that bit
  3518. is set, it will now just be passively ignored, and
  3519. I'll eventually remove reference to it from the docs.
  3520. 97-04-24 bench Added the Repackaging Wizard files not already dropped to the
  3521. \\united\darwin drop. Each of these files needs to be released:
  3522. TOOLS\version.h
  3523. TOOLS\msidefs.h
  3524. TOOLS\install.h
  3525. TOOLS\launchrc.h
  3526. TOOLS\install.ico
  3527. TOOLS\SHIP\install.obj
  3528. TOOLS\DEBUG\install.obj
  3529. TOOLS\rungen.exe
  3530. TOOLS\repack.msi
  3531. TOOLS\REPACK\cvtres.err
  3532. TOOLS\REPACK\cvtres.exe
  3533. TOOLS\REPACK\gdi32.lib
  3534. TOOLS\REPACK\kernel32.lib
  3535. TOOLS\REPACK\launchrc.h
  3536. TOOLS\REPACK\libc.lib
  3537. TOOLS\REPACK\link.exe
  3538. TOOLS\REPACK\lz32.lib
  3539. TOOLS\REPACK\ole32.lib
  3540. TOOLS\REPACK\rc.exe
  3541. TOOLS\REPACK\rcdll.dll
  3542. TOOLS\REPACK\user32.lib
  3543. TOOLS\REPACK\winver.h
  3544. TOOLS\REPACK\msipdb41.dll
  3545. TOOLS\REPACK\diamond.exe
  3546. TOOLS\REPACK\vb40032.dll
  3547. 97-04-24 mattwe MsiGen: bug fixes (will include bug #'s in future,)
  3548. did a bunch of code cleanup in GenerateTables (some
  3549. very wobbly conditionals from original code,) and
  3550. typelib feature work.
  3551. 97-04-24 mattwe repack: added command line support to
  3552. src\tools\repack\support\tempdb.exe, so it can be used from within
  3553. the build process.
  3554. 97-04-24 bench We now build and drop the ship versions of the tools
  3555. msiutil, msipat, msigen, msival and msiloc. The
  3556. .dll, .map and .pdb files need to be added to the
  3557. release, under the tools folder.
  3558. 97-04-24 mattwe Addfiled MakeCab.exe to src\tools. Diamond is not
  3559. redistributable (internal technology only because of
  3560. the Quantum compression.) MakeCab is safe to release
  3561. with the repackager.
  3562. 97-04-23 bench We now use the default UI to handle rollback or
  3563. rollback cleanup after an install. Previously, there was
  3564. no notification that such things were going on.
  3565. 97-04-22 ivanw To keep the naming shceme consistent I changed the
  3566. name of the second column in the ControlCondition
  3567. table from Control to Control_. Since the Darwin code
  3568. does not use SQL queries on this table this change
  3569. should cause no breaks. If some tool accesses this table
  3570. through a query, the text of the query must be
  3571. modified.
  3572. 97-04-22 ivanw Enhanced the FormatSize funtion in the Handler. The
  3573. words for bytes, KB, MB, GB can be localized. These
  3574. strings live in the UIText table. Also added a new
  3575. property called LeftUnit. If this property is set in the
  3576. Property table, the name of the unit goes to the
  3577. left of the number instead of the right.
  3578. 97-04-22 malcolmh ** msi.lib needs to be released to Ship and ShipSym.
  3579. msid.lib needs to be released to Debug. msil.lib
  3580. needs to be released to Lego **
  3581. 97-04-22 mattwe TestDb: added progress indicator for WriteIniValues
  3582. 97-04-22 mattwe Repack: Modified rungen.exe UI to be side by side,
  3583. instead of single long pane. Old one wouldn't fit on low-res
  3584. monitors.
  3585. 97-04-22 malcolmh A number of changes to the API have been made:
  3586. MsiIsProductLauncher has been replaced by
  3587. MsiVerifyProductLauncher.
  3588. The following API's have been added:
  3589. MsiGetFeatureInfo
  3590. MsiInstallMissingComponent
  3591. MsiInstallMissingFile
  3592. The following API's have had their return code
  3593. changed from BOOL to UINT:
  3594. MsiGetProductInfoFromScript
  3595. MsiGetProductCode
  3596. MsiGetProductProperty
  3597. MsiCloseProduct
  3598. 97-04-22 malcolmh Conman::RegisterProduct has been updated to take a
  3599. cached database path, a launcher commandline, and a
  3600. launcher path.
  3601. 97-04-22 malcolmh msi.h is the new API header. It replaces msinst.h.
  3602. msi.h uses more consistent error return types and
  3603. contains a revised set of ERROR_* error codes. ** msi.h
  3604. should be released to Ship, Debug, Logo, and ShipSym
  3605. **
  3606. 97-04-22 malcolmh The API help now has its own helpfile, msi.hlp. API
  3607. help has been removed from msiauto.hlp. ** Two new
  3608. files need to be dropped: doc\msi.hlp and doc\msi.cnt
  3609. **
  3610. -----------------------------
  3611. Release 0.10.00.2822
  3612. -----------------------------
  3613. 97-04-21 johndelo RegMsi tool now recognizes K option for Msi kernel
  3614. (Msi.DLL, MsiD.DLL), but does not register the new DLL
  3615. by default, YET.
  3616. 97-04-21 mattwe MsiGen: removed date writing for file version
  3617. column
  3618. 97-04-21 bench Added rollback for the WriteIniValues and
  3619. RemoveIniValues actions.
  3620. 97-04-21 bench Added a new file to the release, called MSIERROR.H,
  3621. in the tradition of WINERROR.H. Created a perl
  3622. script, genmsier.prl, to %darwin%\tools, which creates
  3623. this file from msinst.h. MSIERROR.H is copied to the
  3624. DOC folder on the release point.
  3625. 97-04-21 t-caroln Updated msialter.exe to display the resources in an
  3626. executable. The -f option will also output file
  3627. resources to a file in the current directory. Added a -r
  3628. option to remove all resources in the launcher and
  3629. then add the new resources in the property file.
  3630. 97-04-21 t-caroln Added new API GetErrorMessage to Validation object
  3631. to return the message that maps to the error enum
  3632. value. "" is returned for an invalid enum.
  3633. 97-04-21 t-caroln Removed -d option from msidbval.exe. Now to
  3634. validate a database, use msidbval {database}. Also changed
  3635. msidbval to output an error message instead of the
  3636. integer value.
  3637. 97-04-21 tracyf The AddFixedCost method of the SelectionManager is
  3638. obsolete and has been removed from IMsiSelectionManager,
  3639. and from the automation interface. I don't think anyone
  3640. was ever using this, but I'm noting it here just in case.
  3641. 97-04-21 chetanp Added Create Table and Alter Table query support.
  3642. See help on MsiDatabase::OpenView function for more
  3643. info.
  3644. 97-04-21 tracyf The new Darwin spec covering the rules for
  3645. overwriting versioned and unversioned files has been
  3646. implemented. You can find the "official" spec at
  3647. http://officeweb/specs, but the new rules are summarized under
  3648. the help topic for the CheckFileVersion function (part
  3649. of IMsiPath). To this end, the CheckFileVersion
  3650. function itself has changed - it now requires an
  3651. additional string parameter specifying language, and the
  3652. icfvEnum declarations have changed.
  3653. 97-04-21 tracyf In accordance with the new Darwin versioning spec,
  3654. the Version column of the File table no longer accepts
  3655. # directives (#ALWAYS, #NEVER, etc) or dates. This
  3656. column now must be either a valid version string, blank
  3657. (i.e. the file is unversioned), or a companion file reference.
  3658. The validation table in TestDB has been updated to reflect these
  3659. new restrictions.
  3660. 97-04-20 johndelo The launcher now looks for the new combined Darwin
  3661. DLL, Msi(D).dll, and not finding that, it temporarily
  3662. looks for MsiEng(d).dll to maintain compatibility for
  3663. a while. Both DLLs should run equivalently, however
  3664. custom actions bind only to the new one.
  3665. 97-04-18 johndelo Moved relnotes through 1996 to relnot96.txt, to
  3666. shorten file, because it gets mailed and heavily
  3667. duplicated.
  3668. -----------------------------
  3669. Release 0.10.00.2818
  3670. -----------------------------
  3671. 97-04-17 johndelo Error code names have changed for the external API,
  3672. in msinst.h, to use system errors and our new system
  3673. error codes. The old codes are temporarily mapped to
  3674. the new ones for a few builds. ERROR_SUCCESS, 0, has
  3675. not changed.
  3676. 97-04-17 johndelo The combined engine+services DLL, Msi.DLL (MsiD.DLL)
  3677. is now made as part of the normal build, along with
  3678. the import library Msi..lib. The separate DLLs will
  3679. still be released for a while, and the lauchers in
  3680. this release, and the Darwin installer, still use the
  3681. old DLLs.
  3682. 97-04-17 t-caroln Aimdbval.exe is now msidbval.exe. Help file has
  3683. been changed to show this.
  3684. 97-04-17 t-caroln Loadprop.exe has changed to msialter.exe. I have
  3685. also updated the help file for this. MsiAlter.exe
  3686. loads both properties and resources into the launcher.
  3687. It still does not work on Win95 yet. See help file
  3688. for details on property file format.
  3689. 97-04-17 chetanp Exposed _Tables and _Columns through the query
  3690. interface. The catalog tables are now being created with
  3691. named columns and hence can be queried for their
  3692. content. Added help on the same.
  3693. 97-04-16 johndelo The Darwin installer name has changed from
  3694. AimInst.EXE to InstMsi.EXE. The external database and custom
  3695. access header is now MsiQuery.h. The combined
  3696. engine+services is Msi.DLL (not built by default yet - target
  3697. name: msidll). Error codes for external API are
  3698. changing - in msinst.h.
  3699. 97-04-16 ivanw Made some internal modifications to the controls on
  3700. the Browse dialog in order to minimize the number of
  3701. (costly) calls to SetTargetPath. To accomplish this I
  3702. had to add the DoNotCallManager stylebit to the
  3703. DirectoryCombo control type. This stylebit applied before
  3704. only to PathTailEdit and DirectoryList controls.
  3705. 97-04-16 ivanw Implemented the MsiCollectUserInfo API and action.
  3706. Removed PID validtation from the InstallValidate
  3707. action. Modified RegisterUserInfo so it registers the user
  3708. only if there is a valid PID. Added the needed
  3709. dialogs to testdb (starting with FirstRun).
  3710. 97-04-16 chetanp The query engine now recognises the catalog tables -
  3711. "_Tables and "_Columns". However all the columns for
  3712. these tables are unnamed as yet hence only SELECT *
  3713. will work for now. Columns that need to be exposed
  3714. externally will be named and documented soon.
  3715. -----------------------------
  3716. Release 0.10.00.2815
  3717. -----------------------------
  3718. 97-04-14 tracyf The following new actions are now supported:
  3719. MoveFiles, DuplicateFiles, and RemoveDuplicateFiles. See
  3720. the helpfile and TestDB.msi for more info (and note the
  3721. required sequencing for these actions).
  3722. 97-04-14 tracyf The Component_Parent column has been removed from
  3723. the definition of the Component table. The _Validation
  3724. table has been updated to flag an error in the
  3725. aimdbval.exe tool if the Component table still has this
  3726. column. In addition, a runtime "invalid table" error
  3727. will occur if the installer is run with this column
  3728. defined.
  3729. 97-04-14 bench We now rollback automatically after an error or
  3730. cancellation. The rollback or cleanup of rollback files
  3731. is invoked by Engine.Terminate. The user is not yet
  3732. given the option of not rolling back or resuming the
  3733. installation later.
  3734. 97-04-14 bench Defined a new reg value that sets the level of
  3735. rollback. This value is "Mode" under
  3736. HKLM\Software\Installer\Rollback. If this value is set to "", no backup
  3737. files or rollback scripts are created. If the value
  3738. is a number > 0, rollback files are created and not
  3739. removed after the install. In all other cases, the
  3740. default behaviour occurs, which is to allow for
  3741. rollback during an install but remove rollback files after
  3742. the install is successfully completed.
  3743. 97-04-14 bench Added an argument to Engine.Terminate. This arg is
  3744. an iesEnum that is passed to the server for use in
  3745. rollback handling. This behaviour (along with all
  3746. things rollback) will be documented shortly. This
  3747. argument is currently not required in automation to
  3748. allow testing to update its tests, but will be made
  3749. required for the 2822 release.
  3750. 97-04-14 bench Completed rollback for product/feature/component
  3751. registration and advertisement (except for type
  3752. libraries).
  3753. 97-04-11 chetanp Added authoring (and testing) help for Advertisement
  3754. and Darwin Components. Please refer to help under
  3755. Authoring in the Darwin help file.
  3756. 97-04-11 mattwe Repack wiz:
  3757. Lots of tweaks to improve reliability for relocation,
  3758. and recovery from "invalid" OEM images. (some files
  3759. not installed locally, et cetera)
  3760. Cleaned out MSCREATE.DIR from file table.
  3761. Removed sub-components entirely, in preparation for
  3762. Tracy's check-in.
  3763. Added mechanism to initialize a cache of enums->column
  3764. names->real columns in cursors to fix dependencies on
  3765. column orders
  3766. Begun typelib table population
  3767. 97-04-11 t-caroln Added a new target to the makefile. Typing make win
  3768. debug checkdb will automatically build the
  3769. validation DLL, aimdbval.exe, and testdb.msi and validate it.
  3770. If the database is valid, it will create a sentinel
  3771. file checkdb.snt. This will be added to the
  3772. automatic build process once testdb.msi is valid.
  3773. 97-04-11 t-caroln Edited aimdbval and validation tools so that they
  3774. don't require that darwin DLLs be registered. They now
  3775. instead use LoadLibrary instead of the OLE calls.
  3776. -----------------------------
  3777. Release 0.10.00.2811
  3778. -----------------------------
  3779. 97-04-10 johndelo Engine now loads services DLL directly, and server
  3780. loads engine DLL directly, instead of using OLE.
  3781. Handler still uses OLE, will be fixed in next build. Use
  3782. UI=B to avoid the need to register DLLs.
  3783. 97-04-10 johndelo Custom action and authoring tools API checked into
  3784. DARWIN\INC as AimQuery.w. Would appreciate any review
  3785. comments before implementation and release. No help
  3786. yet.
  3787. 97-04-10 malcolmh Added MsiIsProductLauncher API. See helpfile for
  3788. details.
  3789. 97-04-10 malcolmh Added server/conman.Rollback method. See the
  3790. helpfile for more details.
  3791. 97-04-10 malcolmh Removed configuration manager methods that were
  3792. obsoleted by the Installer API. These include:
  3793. UserInfo
  3794. Products
  3795. ConfigureComponent
  3796. Components
  3797. ComponentClients
  3798. ConfigureFeature
  3799. QueryFeature
  3800. 97-04-10 chetanp Bumped up the database version due to change in
  3801. advertise strategy.
  3802. 97-04-10 t-caroln Added the aimdbval.exe tool to the release process.
  3803. Also added a help topic for it under the Tools
  3804. section [where MsiTable and LoadProp.exe] reside. Set up
  3805. the validation tool module to catch missing data in
  3806. the _Validation table even if the table does not
  3807. contain data.
  3808. 97-04-09 chetanp added seuperseded components info to be passed in to
  3809. unregistercomponent. This will enable to
  3810. imsiconfigurationmanager::unregistercomponent function to remove
  3811. the redirection to itself from the superseded
  3812. components.
  3813. 97-04-09 t-caroln Created an AIM database validation console app. It
  3814. resides in the %DARWIN%\x86 directory. This tool
  3815. will validate a database using the Validation DLL. To
  3816. run, be sure to have the Darwin DLL's registered,
  3817. including the Validation DLL (msival*.DLL) and type
  3818. aimdbval -d {database}. This will display the results on
  3819. the screen.
  3820. 97-04-09 t-caroln Added a new string category for the validation tool.
  3821. It's the RegPath category and it's for validating
  3822. registry paths. This is used in the Registry,
  3823. RemoveRegistry, and RegLocator tables.
  3824. 97-04-09 chetanp changed advertisement to fit final strategy.
  3825. added publishcomponent table and publishcomponent
  3826. handling to handle cross-product component
  3827. advertisement.
  3828. added handling for "treat As"ed components
  3829. 97-04-08 malcolmh The "Launcher" property is now set in
  3830. CMsiEngine::CreateProductInfoRec if it wasn't already set. Also, if
  3831. the property wasn't set initially then the instance
  3832. handle given to Engine::Initialize is used to
  3833. determine the module path. Previously NULL was passed to
  3834. GetModuleFileName to determine this path.
  3835. -----------------------------
  3836. Release 0.10.00.2808
  3837. -----------------------------
  3838. 97-04-05 bench Added automation support for the MsiExecute object.
  3839. See help for more info.
  3840. 97-04-05 bench Made some changes to Engine.Sequence. Previously,
  3841. each call of Sequence would attempt to call
  3842. ExecuteFinalize (to execute an install script) if it handn't
  3843. been called yet and display the final dialog. Now,
  3844. only the first (or outermost) call of Sequence does
  3845. this. This way, if we actually call Sequence from within
  3846. Sequence (by placing a top-level action in the
  3847. sequence table, for example), we only call ExecuteFinalize
  3848. and display the final dialog at the end of the install, as
  3849. is the correct behaviour. With this change and
  3850. others, there are no restrictions to the ordering of
  3851. actions in the sequence table as there were before,
  3852. execpt those inherent in the actions (such as having to call
  3853. InstallFiles after DirectoryInitialize).
  3854. 97-04-05 bench Made changes to the way the SCRIPTFILE property is
  3855. used. Previously, if this property wasn't set, we
  3856. would execute directly if in standalone mode and with a
  3857. script if in client-server mode. If this property was
  3858. set, we would create the script but execute it only
  3859. in client-server mode. Also, if an install actually
  3860. used more than one script, only the second was saved.
  3861. Now, our mode of execution is governed completely by
  3862. the EXECUTEMODE property. We use the SCRIPTFILE
  3863. property to write a script that is saved after the
  3864. install and contains all operations used in the install,
  3865. not just those in the last script. See help for more
  3866. info.
  3867. 97-04-05 bench Added the EXECUTEMODE property, which can have
  3868. values NONE,DIRECT or SCRIPT. This defines if and how we
  3869. execute operations to update the system. See help
  3870. for more info.
  3871. 97-04-04 malcolmh Added 3 conman methods to support rollback script
  3872. registration: RegisterRollbackScript,
  3873. UnregisterRollbackScript, and RollbackScripts. See the help file for
  3874. complete details.
  3875. 97-04-04 t-caroln Validation tool now records errors found in the
  3876. _Validation table in the _Invalid table that it creates.
  3877. These errors include finding a column that is not
  3878. listed in the table, having the value of the MaxValue
  3879. col less than the MinValue col, having a category
  3880. string that is not allowed for the particular data or is
  3881. not listed, and for having a KeyTable link to a table
  3882. that could not be loaded. This last error could be
  3883. because the table is not in the database.
  3884. -----------------------------
  3885. Release 0.10.00.2804
  3886. -----------------------------
  3887. 97-04-03 t-caroln Fixed localization tool to work with rtf syntax and
  3888. to correctly update dialog and control attributes.
  3889. 97-04-03 t-caroln Validation tool now validates tables and databases.
  3890. Also has an updated help file.
  3891. Added RedirectComponent table to _Validation table.
  3892. 97-04-03 chetanp removed the extra ProductKey from several ixo
  3893. operations beacuse of it being passed in the ixoProductInfo
  3894. operation.
  3895. 97-04-03 chetanp Added RedirectComponent table to Darwin
  3896. 97-04-01 johndelo The launcher may have a property "INSTALLER" which
  3897. specifies either a relative or absolute path to a
  3898. Darwin installer, i.e. AimInst.exe. This will be called
  3899. if the launcher can't find the Darwin API DLL or if
  3900. Darwin indicates that a newer version is needed. You
  3901. can call the Darwin installer, AimInst(D).exe,
  3902. directly, which will simply blast its files into your system
  3903. directory.
  3904. 97-04-01 johndelo The Darwin installation code is now contained in
  3905. IExpress packages, names AimInst.exe, AimInstD.exe, and
  3906. AimInstL.exe. These are self-extracting executables
  3907. that install Darwin components into the system
  3908. directory. Currently they install automation and help;
  3909. these will later be moved to a separate tool installer.
  3910. To build these installers, specify aiminst as the
  3911. target, i.e. "make win debug aiminst". The ALPHA IExpress
  3912. files are checked in, but untested. The prompt
  3913. dialogs will be probably be removed in the future. Files
  3914. that are replaced are unregistered first.
  3915. -----------------------------
  3916. Release 0.10.00.2801
  3917. -----------------------------
  3918. 97-03-31 t-caroln Fixed validation tool to correctly validate the
  3919. fields. It should now validate all fields and foreign
  3920. keys correctly.
  3921. 97-03-31 t-caroln Fixed the localization tool to work with the new
  3922. Control and Dialog attributes format.
  3923. The tool now updates the control and dialog tables,
  3924. including tab order. However, it
  3925. incorrectly updates the radiobutton table and tab
  3926. order. Am working on a fix for that.
  3927. 97-03-31 ivanw Implemented default text style for the text control.
  3928. {&style} at the start of the text string sets a
  3929. default style for the control. For more help see the page
  3930. on text controls. Modified testdb such that the text
  3931. controls on the Error and Selection dialogs use this
  3932. feature.
  3933. 97-03-31 johndelo The DATABASE property cannot be set on the launcher
  3934. command line, as all the APIs assume that it is a
  3935. launcher property. This will be fixed when we store the
  3936. command line as part of the product state.
  3937. 97-03-31 johndelo The launcher, INSTALL(D).EXE, no longer depends on
  3938. Darwin headers; rather, it calls through an added API:
  3939. MsiInstallProduct. A Unicode launcher can be built
  3940. by specifying the target "instalw" to make.
  3941. 97-03-28 ivanw Removed the Help column from the Dialog table. Also
  3942. removed the Help attribute of the Dialog object. As a
  3943. result the new build will work with both new and old
  3944. databases but old builds of the Handler.dll won't
  3945. work with the new database.
  3946. -----------------------------
  3947. Release 0.10.00.2728
  3948. -----------------------------
  3949. 97-03-27 bench Rollback of the InstallFiles and RemoveFiles actions
  3950. is implemented. Note that the Configuration Manager
  3951. rollback is not yet implemented, so after a rollback,
  3952. the state of the Config Manager may not correspond
  3953. to the files on the system.
  3954. 97-03-27 t-caroln The validation tool is now a part of the release
  3955. process. This tool is for validation
  3956. of a database. It can validate a field, row, table,
  3957. or database. This tool is similar
  3958. to the localization tool in that it has its own help
  3959. file. The tool also requires that
  3960. the database contain the _Validation table. The tool
  3961. compiles, but has not
  3962. been tested very well. An error table -- _Invalid
  3963. table is created during validation
  3964. of a table or database. In validation of a field or
  3965. row, the errors are stored in an
  3966. array that can be accessed with one of the tool's
  3967. member functions. The tool
  3968. should help eliminate authoring errors.
  3969. 97-03-27 johndelo Product properties that must be authored into the
  3970. Propery table have been defined in engine.h and
  3971. documented in Property help. Note that many of them are now
  3972. REQUIRED. Unused definitions and code has been
  3973. removed to avoid confusion.
  3974. 97-03-27 chetanp Changed ADVT and UNADVT actions to ADVERTISE and
  3975. UNADVERTISE actions resp
  3976. Added DefInprocHandler column to Class table.
  3977. Sequenced ADVERTISE and UNADVERTISE action through
  3978. InstallSequence table
  3979. 97-03-25 mattwe MsiGen: fixed the Class contexts per Chetan's Friday
  3980. design.
  3981. (Context column a primary key.) Haven't switched to
  3982. his current
  3983. design that the Context column is now a string. (He
  3984. hasn't checked
  3985. it in yet.)
  3986. Populated part of Verb, and most of Extensions.
  3987. Shortcuts in progress.
  3988. Wouldn't normally check-in, but this is to release
  3989. partial work to
  3990. testing.
  3991. 97-03-25 tracyf The IMsiVolume FreeSpaceK and TotalSpaceK functions
  3992. have been changed to FreeSpace and TotalSpace,
  3993. respectively. These functions now return 512 byte
  3994. multiples, instead of 1024 byte multiples as before.
  3995. 97-03-25 ivanw Added a new dialog style bit: TrackDiskSpace. If
  3996. this bit is set, the dialog periodically calls the
  3997. SelectionManager to check if we are out of disk space.
  3998. This way we can catch if the user switched to an other
  3999. application and changed the available disk space while
  4000. Darwin is running.
  4001. 97-03-25 chetanp implemented "permanant" components. If a component
  4002. is installed locally, and its key file has the
  4003. "permanant" bit on in the Attributes column of the File
  4004. table, then we make the system a client of the component,
  4005. thereby preventing its uninstall.
  4006. 97-03-25 t-caroln Added a new column to the _Validation table. It is
  4007. the KeyColumn column and is used
  4008. in conjunction with the KeyTable column. The
  4009. KeyColumn column tells which column the
  4010. data is a foreign key to in the KeyTable column.
  4011. -----------------------------
  4012. Release 0.10.00.2725
  4013. -----------------------------
  4014. 97-03-24 johndelo Help and automation is now available for
  4015. Storage::Class property. The CLSID associated with the storage
  4016. is used to identify the contents of a storage object.
  4017. 97-03-21 tracyf Two new actions are now supported: MoveFiles and
  4018. UnmoveFiles, complete with lots o' documentation in the
  4019. help file. I also checked in changes in TestDB to
  4020. make use of these new actions, but you won't see much
  4021. difference unless you place a few appropriate files to
  4022. be moved into particular source directories on your
  4023. local machine. I leave it as an exercise for the
  4024. reader to figure out what files to put where, in case
  4025. you want to see file movement in action.
  4026. 97-03-21 ivanw Checked in the new control and dialog style bits.
  4027. Modified testdb to reflect the new changes. Also added
  4028. the new values to the help pages of the individual
  4029. control styles.
  4030. -----------------------------
  4031. Release 0.10.00.2721
  4032. -----------------------------
  4033. 97-03-20 chetanp Added support for sharing Darwin components.
  4034. 97-03-20 ivanw Checked in a VB script under
  4035. darwin\tools\stylecon.xls that can convert the control and dialog stylebits
  4036. of an existing database to the new values. The new
  4037. stylebits will take effect with the 3/25 build.
  4038. 97-03-19 davidmck Checked in build 600 of the diamond decompression
  4039. libraries. These support LZX decompression.
  4040. 97-03-19 ivanw Per Paul's request the automation wrapper for
  4041. Dialog.WindowShow has been renamed to Dialog.Visible. It is
  4042. a write only property.
  4043. 97-03-19 malcolmh Removed GenerateProductKey from conman API and fixed
  4044. all references to it. The product code is now
  4045. authored in the property table.
  4046. Updated transform validation to use new product
  4047. code.
  4048. 97-03-19 mattwe MsiGen: populated MIME table from registry keys
  4049. MsiGen: populated most of Class table from registry keys
  4050. waiting on ChetanP to finalize design
  4051. 97-03-18 johndelo The Darwin-private properties have been removed from
  4052. the SummaryInformation stream (by request of
  4053. Office). Most of these were not being used anymore, as the
  4054. user info is now accessed via the MSI API functions.
  4055. 97-03-18 johndelo Some Darwin GUIDs have been changed to remove
  4056. collisions, mostly automation GUIDS. To avoid orphaned reg
  4057. entires, you need to unregister all current Darwin
  4058. components before building or installing the new ones.
  4059. 97-03-18 ivanw Removed the ValidateUserInfo action. Part of it
  4060. became obsolete because of the ValidateProductID method,
  4061. the rest has been moved into the RegisterUserInfo
  4062. action.
  4063. 97-03-18 bench The behavior of MsiPath.Remove has changed slightly.
  4064. Now, if the directory is empty but still cannot be
  4065. deleted for any reason, an error is generated.
  4066. Previously, no error was generated for read-only
  4067. directories or sharing violations.
  4068. -----------------------------
  4069. Release 0.10.00.2718
  4070. -----------------------------
  4071. 97-03-17 ivanw Implemented the MaskedEdit control type. Created a
  4072. ValidatePID controlevent. Added a ValidatePID method
  4073. to the Engine. Added a dialog to testdb to demonstrate
  4074. all the above.
  4075. -----------------------------
  4076. Release 0.10.00.2714
  4077. -----------------------------
  4078. 97-03-13 t-caroln Checked in the _Validation table to the
  4079. darwin\data\testdb. This is a new table that will not be
  4080. shipped.
  4081. It is for authoring purposes and will be used by the
  4082. Validation API. Help on this table has been added to
  4083. the database tables help topic. Look under database
  4084. tables and then Validation to get to the help file
  4085. page. This table will have to be updated as not all
  4086. data is correct, but it is a workable schema for now.
  4087. 97-03-13 johndelo New APIs have been added to the end of MSINST.H.
  4088. These will support functionality required by
  4089. applications and system, but are not implemented as yet.
  4090. 97-03-13 johndelo Access97 can now be used to edit Darwin databases,
  4091. and can handle large text fields. MsiTable can now create
  4092. new Access databases as well as Msi databases, using the
  4093. -c option. MsiTable /? for its help screen.
  4094. There are two mechanism for dealing with large text fields:
  4095. 1. Text fields can be specified with widths from 1 to
  4096. 255 (S1 to S255 in the .idt header). Any text field
  4097. written to an Access table that overflows this limit
  4098. will be written to the _Overflow table, indexed by a
  4099. numeric key. In its place will be place the index
  4100. number preceeded by two plus signs. On access of the
  4101. text data, the indirection will be performed and the
  4102. long data will be returned. This will catch any text
  4103. data that overflows the column specifications. The
  4104. overflow table entries will not be removed if the related
  4105. data value is deleted or changed, but of course will
  4106. go away when importing to a created database.
  4107. 2. The above should not normally happen. Text widths
  4108. should be carefully chosen to limit the text where
  4109. that is appropriate. For columns that are >255,
  4110. essentially unbounded, use S0 for the column specifications,
  4111. and a Memo field will be created which appears
  4112. within Access just like a normal text field. There is very
  4113. little overhead in doing this, the only
  4114. disadvantages being the inablility to sort by or search in these
  4115. fields. I have changed the Control.Text column to be
  4116. S0, and Import, Export, and Install all work fine
  4117. from and .MDB database.
  4118. The ODBC support now only works with the current Office97 or
  4119. Access97 Jet drivers. It no longer works with Access95.
  4120. Access fails to return the nullable state of a
  4121. column and no workaround can be found. For now, when
  4122. exporting from Access, primary key columns are set
  4123. non-nullable, and all other are set to what Access reports
  4124. (which is always nullable). The new _Validation table
  4125. contains the correct nullable state.
  4126. 97-03-13 malcolmh MsiEnumComponents, MsiEnumFeatures, and
  4127. MsiEnumClients are implemented. See the help file for details.
  4128. 97-03-13 tracyf Feature management in the SelectionManager has been
  4129. fixed up, in concert with the changes made by Ivan in
  4130. the UI. The major change is that when a feature,
  4131. whose parent is turned off, is turned on, the
  4132. SelectionManager now turns on all parents up the tree.
  4133. Special care is taken to ensure that only the selected
  4134. child feature is activated when the parent(s) are turned
  4135. on.
  4136. 97-03-13 malcolmh Added basic Installer Services API tests to
  4137. %DARWIN%\test\apitest. Use MAKE ANSI or MAKE UNICODE in that
  4138. directory to build either APITESTA or APITESTW. Use
  4139. /? on either of these EXEs for help. Note that by
  4140. default C:\darwin\build\x86\msiengd.dll is tested. This
  4141. can be overridden in the makefile or on the
  4142. command-line to APITEST?.
  4143. 97-03-13 mattwe MsiGen: major check-in. The database is now
  4144. relocatible, (properties are substituted for
  4145. hard coded paths, this also involved making
  4146. all primary keys for directory entries
  4147. lower-case) and I've started playing catch
  4148. up to all the new advertisement tables (MIME,
  4149. Extension, et cetera) and the new columns in
  4150. the old.
  4151. Also fixed bugs in AlanR's code, including an
  4152. extraneous cursor->Next() in MakeDirPathTab,
  4153. also gave this temporary table an optional
  4154. persistent flag for debugging purposes.
  4155. Updated the hungarian in several places, making
  4156. the variable naming more consistent, and added
  4157. comments to several functions.
  4158. Per our spec, MsiGen now only really works for
  4159. sysdiff conversion on a machine that nearly
  4160. matches the "reference" machine on which
  4161. the $OEM$ image was created. See me if you
  4162. want to learn about Win32 remote debugging.
  4163. 97-03-11 ivanw Changed several aspects of the behaviour of the
  4164. SelectionTree control. When a parent is deselected, the
  4165. children are not hidden. Changed the icons. When a
  4166. child of an unselected parent is turned on, the parents
  4167. are repainted. We know distinguish between CD and
  4168. network installs. To do this I had to change the set of
  4169. strings in the UIText table used by the control.
  4170. 97-03-11 ivanw Added a new controlevent: SelectionPathOn. Using
  4171. this we can hide the text on the selection dialog, when
  4172. there is no user configurable path. See testdb for an
  4173. example of the use of this event.
  4174. 97-03-11 bench Updated the ixoFileCopy, ixoFileRemove,
  4175. ixoShortcutCreate, ixoShortcutRemove and ixoIniWriteRemoveValue
  4176. operations to register created folders when writing to
  4177. a folder. Also, these operations now attempt to
  4178. remove any registered folders when removing files. We
  4179. should no longer be leaving any folders around that we
  4180. created after we uninstall. See help for more info.
  4181. 97-03-11 bench Added the CreateFolders and RemoveFolders actions
  4182. and the CreateFolder table. See the help for more
  4183. info.
  4184. 97-03-11 bench MsiPath.EnsureExists now returns the number of
  4185. folders it actually created. See help for more info.
  4186. 97-03-11 bench The MsiFileCopy.CopyTo and MsiServices.WriteIniFile
  4187. methods now fail if the target directory they are
  4188. writing to does not exist.
  4189. -----------------------------
  4190. Release 0.10.00.2711
  4191. -----------------------------
  4192. 97-03-10 malcolmh Changed Conman::RegisterFolder interface. Added
  4193. Conman::IsFolderRemovable. See help file for details.
  4194. -----------------------------
  4195. Release 0.10.00.2710
  4196. -----------------------------
  4197. 97-03-07 bench Added the ValueExists method to the MsiRegKey
  4198. object. See help for more info.
  4199. -----------------------------
  4200. Release 0.10.00.2707
  4201. -----------------------------
  4202. 97-03-06 chetanp added data to the advertise tables. TO DO - add a
  4203. real OLE server for test purposes
  4204. 97-03-06 chetanp Added unadvertise stuff. Currently punted to
  4205. unadvertise after a remove all.
  4206. 97-03-06 ivanw Checked in the new version of the profiler (IceCAP
  4207. 3.5). Added some files needed and modified the
  4208. makefile to build the profiler build correctly. Also
  4209. checked in the documentation for the new IceCAP under
  4210. darwin\doc\icecap.
  4211. 97-03-06 tracyf Reinstall checksum verification has been
  4212. implemented, which involves a new IMsiPath function
  4213. (GetFileChecksum, which is broken up into two automation
  4214. interfaces - ComputeFileChecksum, and
  4215. GetFileOriginalChecksum). Also, files in the File Table have a new
  4216. 'ValidChecksum' attribute bit. See the relevant new help
  4217. topics for more info.
  4218. 97-03-05 bench Added the Seek method to the MsiStream object. See
  4219. help for more info.
  4220. 97-03-04 tracyf A new "coding conventions and code review
  4221. guidelines" topic has been checked into the helpfile. You'll
  4222. find it under the "Development Topics" section in the
  4223. contents.
  4224. 97-03-04 bench Added the ixoProductInfo operation, which should
  4225. always be the second operation in a script file.
  4226. Removed the ProductKey argument of ixoProductRegister and
  4227. all arguments of ixoAdvertiseProduct.
  4228. 97-03-04 chetanp ProcessComponents is now a mandatory action required
  4229. for the
  4230. registration of components with the configuration
  4231. manager. Help
  4232. needs to be put in.
  4233. -----------------------------
  4234. Release 0.10.00.2704
  4235. -----------------------------
  4236. 97-03-04 chetanp Bumped up engine version because of new tables and
  4237. Component table change.
  4238. Need to fix databases and bump up their versions to
  4239. .15
  4240. 97-03-04 chetanp Changed tables Component, Typelib - see help file
  4241. Added tables Class, Icon, Extension, Verb, MIME, AdvtSequence for
  4242. advertisement
  4243. 97-02-28 johndelo Slight changes to script format to accomodate larger
  4244. number of arguments. The encoding of integers and
  4245. strings are unchanged. See help file for details.
  4246. 97-02-28 ivanw Added a new, optional table: the CheckBox table. This
  4247. table defines the value the property is set to if the
  4248. checkbox is turned on. Added a ReinstallMode dialog to
  4249. the maintanence mode wizard sequence to demonstrate
  4250. the use of these new features.
  4251. 97-02-28 ivanw From now on the argument of a control event in the ControlEvent
  4252. table can be any expression that can be evaluated by
  4253. Engine::FormatText. To facilitate this change a
  4254. number of methods in the Event class were changed, they take
  4255. IMsiString& as an argument instead of an MsiStringId.
  4256. Also the ArgumentInt and ArgumentString dialog
  4257. attributes are replaced by the Argument attribute, that
  4258. returns the string representation of the argument for
  4259. the action that terminates the dialog.
  4260. 97-02-28 bench A rollback script is created each time a script is
  4261. run, which occurs during an install in client-server
  4262. mode. The rollback scripts are put in the MSI
  4263. directory and are named RBS*.tmp. The rollback scripts may
  4264. be run with msiexecd /i. Currently, the
  4265. WriteRegistryValues and RemoveRegistryValues actions can be
  4266. rolled back (with the exception of deleting entire reg
  4267. keys).
  4268. 97-02-28 bench Removed the ixoRegOpenRootKey operation. Now, the
  4269. parameters to ixoRegOpenKey specify both the root and
  4270. the key to open. Removed the arguments to
  4271. ixoRegCreateKey and ixoRegRemoveKey. These ops act on the key
  4272. set by ixoRegOpenKey.
  4273. 97-02-28 chetanp The maintenance mode database is now not created. We
  4274. now store the
  4275. product installation info in the registry.
  4276. Also the first cut of the advertisement info that
  4277. Darwin provides is in.
  4278. -----------------------------
  4279. Release 0.10.00.2628
  4280. -----------------------------
  4281. 97-02-26 malcolmh The MsiQueryFeatureState is now implemented. It's
  4282. part of the Installer Service API.
  4283. -----------------------------
  4284. Release 0.10.00.2626
  4285. -----------------------------
  4286. 97-02-25 ivanw The Scrollable Text control has been completed, so
  4287. it reads the text to be displayed from the text field
  4288. of the Control table, instead of using a hard coded
  4289. license agreement text. The text must be in RTF.
  4290. -----------------------------
  4291. Release 0.10.00.2625
  4292. -----------------------------
  4293. 97-02-21 malcolmh MsiQueryProductInfo and MsiGetUserInfo are now
  4294. implemented. These are both part of the Installer Service
  4295. API. To use this, or any other of the API functions,
  4296. #include <msinst.h> and link to msinst.lib.
  4297. Msieng(d).dll contains the implementation of the API.
  4298. -----------------------------
  4299. Release 0.10.00.2621
  4300. -----------------------------
  4301. 97-02-19 tracyf The InstallFiles action (and ixoFileCopy execution
  4302. action) has been modified so that verification of file
  4303. versions is performed again at actual script
  4304. execution time (it's still also done up front for costing
  4305. purposes). This involves a lot of internal changes in
  4306. the InstallFiles action, especially in conjunction
  4307. with CompanionFile functionality (a new
  4308. ixoSetCompanionParent execution action has been created), so this is
  4309. a heads-up to testing.
  4310. 97-02-19 tracyf Feature Reinstall is now implemented. This involves
  4311. two new properties, "REINSTALL" and
  4312. "REINSTALLMODE", as well as new SelectionManager methods:
  4313. ConfigureFeature, SetReinstallMode, and
  4314. ProcessPropertyFeatureRequests. These new properties and methods are
  4315. documented in the help file, and I've also added a new
  4316. authoring topic: "Reinstalling and Removing Features",
  4317. which you'll find under the main "Authoring" topic in
  4318. the Contents. The only caveat: all of the reinstall
  4319. modes listed in the "REINSTALLMODE" property topic
  4320. are implemented, except for "c" (checksum
  4321. verification). I'll get that one done soon.
  4322. 97-02-19 tracyf For consistency, the USESOURCE and ADD property
  4323. names have been changed to ADDSOURCE and ADDLOCAL,
  4324. respectively.
  4325. 97-02-18 ivanw Added ReinstallMode control event, that calls the
  4326. SetReinstallMode method of the SelectionManager.
  4327. -----------------------------
  4328. Release 0.10.00.2614
  4329. -----------------------------
  4330. 97-02-12 t-caroln Fixed GenerateTransform and SetTransform to comply
  4331. with the current database implementation. If the
  4332. naming
  4333. of binary stream should ever change again, it must
  4334. also
  4335. change in the CompareRows function of the database
  4336. where the transform computes the stream name.
  4337. 97-02-11 t-caroln GenerateTransform now handles the possibility of
  4338. null streams. Stream data
  4339. is written out differently to the transform file as
  4340. well. A zero is recorded if
  4341. the stream is NULL while a one is recorded if the
  4342. stream is not null. The actual
  4343. stream exists elsewhere in the transform stream
  4344. storage.
  4345. -----------------------------
  4346. Release 0.10.00.2611
  4347. -----------------------------
  4348. 97-02-10 chetanp added type library registration functionality look
  4349. for the help on the
  4350. RegisterTypeLibraries and UnregisterTypeLibraries
  4351. actions and
  4352. the TypeLib table.
  4353. 97-02-10 davidmck Moved the debug log file from the root of the c
  4354. drive into the \windows\msi directory and had its name
  4355. created using GetTempFilename() so that multiple
  4356. instances can create their own files.
  4357. 97-02-07 ivanw The Value and Text fields of the RadioButton,
  4358. Listbox, Combobox and ListView tables may now contain any
  4359. expression that FormatText can handle. For example, on
  4360. selecting a radiobutton we can set a property to an
  4361. expression that depends on the current value of some
  4362. other property. The same change was made to the
  4363. argument of the [Property] control event in the
  4364. ControlEvent table. Added a couple of dialogs to testdb to
  4365. demonstrate this new feature.
  4366. -----------------------------
  4367. Release 0.10.00.2607
  4368. -----------------------------
  4369. 97-02-06 ivanw Added four new control events: AddLocal, AddSource,
  4370. Remove and Reinstall. Also added a reinstall option
  4371. and a new dialog to testdb.
  4372. 97-02-06 bench The following folder properties are no longer being set by
  4373. MsiServices.SetPlatformProperties:
  4374. CommonDesktopFolder
  4375. CommonProgramMenuFolder
  4376. CommonStartMenuFolder
  4377. CommonStartupFolder
  4378. Instead, the DesktopFolder, ProgramMenuFolder, StartMenuFolder
  4379. and StartupFolder properties are set to folders in the "All Users"
  4380. profile if such a profile exists and the ALLUSERS property is set.
  4381. Otherwise, these properties are set to folders in the user's
  4382. personal profile.
  4383. MsiServices.SetPlatformProperties accepts a boolean argument: True
  4384. to set the above properties to the "All Users" folders, false to do
  4385. otherwise.
  4386. 97-02-04 t-caroln The MergeDatabase method has been implemented. It
  4387. is a method of the
  4388. database object. The help file has also been updated
  4389. with this
  4390. information, including required arguments.
  4391. -----------------------------
  4392. Release 0.10.00.2604
  4393. -----------------------------
  4394. 97-02-03 t-caroln Changed naming of streams. Stream names now follow format
  4395. table.key1.key2 etc. Any old database tables must be
  4396. rebuilt to account for the name changes.
  4397. 97-02-03 chetanp Added support for SELECT * queries.
  4398. 97-02-03 chetanp Any Delete* actions in the installs.idt table should
  4399. now be renamed to
  4400. Remove*. Contrary to previous comment, we are NOT
  4401. bumping the
  4402. engine version since this is a database content
  4403. change and NOT a
  4404. structure change.
  4405. 97-02-03 ivanw Removed the Install control event. The selection
  4406. manager sets a property called OutOfDiskSpace if some
  4407. volume is out of disk space. The UI can branch
  4408. depending on this property. See testdb for an example how to
  4409. use this new mechanism.
  4410. 97-02-03 tracyf The SelectionManager now maintains an
  4411. "OutOfDiskSpace" property, which has a value of TRUE if at any time
  4412. any volume has insufficient disk space for the
  4413. features currently selected. Authors can now use this
  4414. property to decide whether to allow transitions between
  4415. dialogs if a disk space problem exists. The TestDB
  4416. will be modified to demonstate this usage.
  4417. 97-02-03 chetanp changed all Delete* action names to Remove* for
  4418. consistency. However
  4419. we decided to let the complementary actions have any
  4420. one of the forms -
  4421. Install*, Add* or Create*
  4422. to indicate the exact nature of interaction with the
  4423. user m/c.
  4424. NOTE: This change makes services and engine incompaible
  4425. with previous databases. But another change has already
  4426. caused this to happen for the next build. So am not
  4427. bumping up the ref count.
  4428. 97-01-31 tracyf A 'Vital' attribute bit has been added for files in
  4429. the File Table. This bit allows the author to
  4430. specify whether an error preventing the file from being
  4431. installed can be ignored or not. See the File Table
  4432. help topic for more info.
  4433. 97-01-31 bench Exposed the ExecuteRecord method of the Engine.
  4434. This can be used to execute the server operations.
  4435. Also, the opcodes have been exposed in the typelib. The
  4436. operations are documented in the help under
  4437. "Operation as an Install Server." Unless otherwise noted, all
  4438. operations should be fully testable.
  4439. -----------------------------
  4440. Release 0.10.00.2530
  4441. -----------------------------
  4442. 97-01-29 tracyf The concept of allowing a child Feature to follow
  4443. the RunFromSource status of its parent has been
  4444. restored (this capability was unintentionally lost when the
  4445. transition from Selections to Features/Components was
  4446. implemented. See the Feature Database Table topic
  4447. in the helpfile for more info.
  4448. 97-01-29 johndelo Sequence table alert: The desciption column for the
  4449. sequence tables has been removed, replaced by the
  4450. ActionText table, which includes Description and
  4451. Template columns.
  4452. For several releases the old format will be supported
  4453. until the doc and existing databases have been
  4454. updated.
  4455. -----------------------------
  4456. Release 0.10.00.2529
  4457. -----------------------------
  4458. 97-01-28 bench MsiPatch: GenerateAcmePatchInformation method
  4459. added. See help for more info.
  4460. 97-01-28 ivanw Modified the selection tree control, to use the
  4461. GetFeatureValidState. Only the valid choices show up in
  4462. the popup menues.
  4463. -----------------------------
  4464. Release 0.10.00.2528
  4465. -----------------------------
  4466. 97-01-27 ivanw Added a new dialog attribute and style bit:
  4467. KeepModeless. If this is set, the existing modeless dialogs
  4468. are not destroyed when the new dialog is created. A
  4469. typical use of this bit would be for the FilesInUse
  4470. dialog.
  4471. 97-01-27 johndelo The value of the ACTION property is now
  4472. case-insensitive. This is the top-level action performed by the
  4473. engine when the launcher calls DoAction(0). Only
  4474. actions with upper-cased names can specified by the
  4475. launcher. Currently this means INSTALL, ADMIN, and PATCH,
  4476. but more will be added.
  4477. 97-01-27 tracyf Added a new "GetFeatureValidStates" API to the
  4478. Selection Manager. See the helpfile for more info.
  4479. 97-01-27 ivanw Changed the TextStyle table, such that the color is
  4480. described with an integer (RGB) instead of a word.
  4481. Also added some code to check if the authored text
  4482. color is too close to the dialog background. If it is,
  4483. the default text color is used.
  4484. 97-01-24 johndelo ---Changes to Darwin Launcher---
  4485. Most of the guts have been removed from the launcher to make it less dependent.
  4486. When installing a new product on demand the launcher is not executed,
  4487. therefore the engine must get the properties out of the resource.
  4488. The following changes have been made:
  4489. 1. The launcher startup window is gone, and nearly all of the error handling is gone.
  4490. 2. The engine puts its default modeless dialog up at the start (UI needs some cleanup).
  4491. 3. The temp property file passed to the engine is gone; the command line is passed instead.
  4492. 4. The engine now pulls properties from the command line and launcher resources.
  4493. 5. The engine processes error messages during initialization, using strings in the launcher.
  4494. 6. The launcher error message strings now have MsiRecord markers, i.e. [2].
  4495. 7. The launcher has a required property, MESSAGEBASE, supplying the offset into the string table.
  4496. 8. The property INSTALLERFILES is used by the launcher as the list of files to install.
  4497. 9. The launcher will selfreg installed DLLs, and pass -RegServer to EXEs.
  4498. 10. MsiEngine.Initialize now takes a command line instead of a property file.
  4499. 11. The MAC code is no longer in the launcher. It is archived in LDWINMAC.CPP.
  4500. 12. A single string is now invoked for command-line help: /? or -?, not a set of resources.
  4501. 13. The debug command option "??" no longer functions. Another mechanism will be implemented.
  4502. The next step will be to remove the Darwin installation code from the launcher and
  4503. put it with the components in a separate package that can be downloaded from the internet
  4504. or be placed on the CD. The INSTALLER property will specify the path to this package.
  4505. Until this happens, the ability to force install of Darwin using '@' is not available.
  4506. 
  4507. -----------------------------
  4508. Release 0.10.00.2524
  4509. -----------------------------
  4510. 97-01-23 chetanp Added BindImage stuff to automation.
  4511. BindImage passed preliminary testing as regards a
  4512. simple file with links
  4513. only into user32.dll. Bind worked fine on both Win 95
  4514. and Win NT. The
  4515. bound file worked well in both cases on both
  4516. platforms.
  4517. 97-01-23 alanr MsiGen: Added Feature and FeatureLevel properties.
  4518. 97-01-23 bench MsiPatch: Patch creation has changed dramatically.
  4519. See the help file for more info. Also, the help file
  4520. should be completely up to date. If it's in the
  4521. help file, it should work. There is not yet patch
  4522. application support for these patches.
  4523. 97-01-22 chetanp added BindImage table.
  4524. 97-01-22 chetanp Added BindImage function to services.
  4525. Fixed conflicts with imagehlp files
  4526. 97-01-21 malcolmh The behavior of the /regserver and /regservice flags
  4527. for msiexec(d) have changed.
  4528. 1) /regservice is no longer a valid option
  4529. 2) /regserver now does what /regservice used to do,
  4530. i.e. attempt registration as a service but fall back
  4531. to a server if that fails
  4532. 3) /regnoservice registers the install server as a
  4533. server regardless of whether registration as a service
  4534. is possible
  4535. This change makes our launcher consistent in that
  4536. it can DllRegisterServer all DLLs and /regserver all
  4537. EXEs without specific knowledge of the particular DLL
  4538. or EXE.
  4539. -----------------------------
  4540. Release 0.10.00.2521
  4541. -----------------------------
  4542. 97-01-20 chetanp Added registry support for REG_EXPAND_SZ
  4543. Added support for creation and deletion of registry
  4544. keys.
  4545. Added ixoRegCreateKey, ixoRegDeleteKey opcodes in
  4546. executor
  4547. 97-01-20 alanr MsiGen: Replaced ROOTDRIVE references with TARGETDIR.
  4548. 97-01-17 malcolmh Added messages to the actions that occur while the
  4549. PreAction dialog is displayed. Remember that all
  4550. actions that don't call ExecuteRecord must send either
  4551. ActionData or Progress messages to the UI to keep it
  4552. awake.
  4553. -----------------------------
  4554. Release 0.10.00.2517
  4555. -----------------------------
  4556. 97-01-16 chetanp added Proxy table help.
  4557. 97-01-16 alanr Added Cursor.DateData automation read/write support
  4558. for long integer value columns (previously only
  4559. supported string values).
  4560. 97-01-16 mattwe MsiUtil: Fixed typo in ODL
  4561. MsiUtil.BuildCompletProject ->
  4562. MsiUtil.BuildCompleteProject
  4563. Darwin Bug #734
  4564. 97-01-16 davidmck Added code in engine to allow for reference
  4565. tracking. Involved moving function name code into module.h so
  4566. all could share.
  4567. 97-01-15 ivanw Added the ability to change fonts, style, font size
  4568. and font color in text controls. To see this in
  4569. action run testdb with UITEST=1. For information how to
  4570. use it, see the help pages for the TextStyle table and
  4571. the Text control type.
  4572. -----------------------------
  4573. Release 0.10.00.2513
  4574. -----------------------------
  4575. 97-01-09 johndelo MsiDatabase.Export will now export summary
  4576. information stream to an .idt file as if it were a table.
  4577. Import has always accepted this table which contains
  4578. pairs of integer PID with string|integer|datetime
  4579. data.
  4580. MsiTable.EXE has also been updated to show the table
  4581. in the list box and to copy it with the '*' wildcard.
  4582. -----------------------------
  4583. Release 0.10.00.2509
  4584. -----------------------------
  4585. 97-01-08 ivanw When a control is activated it can set a property to
  4586. the present value of an other property (with
  4587. arbitrary number of indirections). Untill now controls could
  4588. set a property only to a constant value. If anybody
  4589. needs more complex cases (like setting a property to
  4590. some expression) let me know.
  4591. 97-01-08 ivanw Added an admin install wizard sequence to testdb and
  4592. the template database.
  4593. -----------------------------
  4594. Release 0.10.00.2508
  4595. -----------------------------
  4596. 97-01-07 alanr Added new Cursor.DateData automation routine for reading
  4597. date fields from tables.
  4598. 97-01-07 bench Changed AdminInstallFinalize action to only copy the
  4599. necessary Msi files (not Msi*.*). The copied files
  4600. are the same that would be installed with "install
  4601. ACTION=@". The ship launcher will copy the ship
  4602. components and the debug launcher will copy the debug
  4603. components. Currently no error occurs when a file is
  4604. missing.
  4605. 97-01-07 bench Added the AdminInstallFinalize action, which copies the
  4606. launcher, database and Msi* components to the location
  4607. defined by TARGETDIR.
  4608. Launcher: always copied directly to TARGETDIR
  4609. Database: if the DATABASE property is not defined in the
  4610. launcher, an error will occur. Use loadprop.exe
  4611. to add this property to the launcher.
  4612. If DATABASE is defined and is a full path,
  4613. the database is not copied to the admin point.
  4614. If DATABASE is defined and is a relative path,
  4615. the database is copied to the relative path below
  4616. TARGETDIR. Note, setting DATABASE on the command
  4617. line to the launcher has no effect on this logic,
  4618. as that only sets the property in the database and
  4619. not in the launcher's resource.
  4620. Msi* components: If the INSTALLER property is defined in
  4621. the launcher and is a full path, no components are
  4622. copied. If the INSTALLER property is not defined, the
  4623. components are assumed to be located in the same
  4624. directory as the launcher. If the INSTALLER property is
  4625. defined and is a relative path, the components are
  4626. assumed to be in that directory beneath the launcher
  4627. and are copied to that directory beneath the admin point.
  4628. Currently, all MSI* files are copied from the appropriate
  4629. directory.
  4630. I have also added this action and ExecuteFinalize to the
  4631. AdminSequence table of the testdb.
  4632. -----------------------------
  4633. Release 0.10.00.2507
  4634. -----------------------------
  4635. 97-01-06 chetanp Changed Shortcut and ProgMan tables and related
  4636. actions to allow for shortcuts/progman items to files AND
  4637. folders not installed by the current product. See
  4638. help on the tables and MsiEngine::FormatText function
  4639. for more help.
  4640. 97-01-06 chetanp enhanced FormatText functionality to allow for File
  4641. table and Component table keys. See
  4642. MsiEngine::FormatText help for more info.
  4643. 97-01-06 tracyf InstallFiles action now performs a separate query
  4644. for Admin mode, thus copying all files in this mode.
  4645. 97-01-06 bench The DirectoryManager has been updated in the
  4646. following ways. When in Admin mode, SetTargetPaths only uses
  4647. property values for the roots and not for non-root
  4648. directories. Also, SetTargetPaths does not set
  4649. properties when in Admin mode. When not in Admin mode, the
  4650. value of the ROOTDRIVE property is used to resolve
  4651. any undefined roots. In Admin mode an error still
  4652. occurs if a root is undefined.
  4653. 97-01-06 bench The Directory table in the testdb has been updated to reflect the
  4654. change in philosophy regarding the root directory
  4655. names. In short this philosophy is to not use ROOTDRIVE
  4656. as a directory name and to use TARGETDIR as a
  4657. directory name.
  4658. -----------------------------
  4659. Release 0.10.00.2503
  4660. -----------------------------
  4661. 97-01-02 chetanp Added support to FormatText (that expands property
  4662. strings) to handle
  4663. 1. #File where File stands for a key in the File
  4664. table. The property is expanded to a full file path.
  4665. 2. $Component where Component stands for a key in the
  4666. Component table. The property is expanded to a
  4667. Directory of the Component (taking into consideration
  4668. whether the Component is selected to be installed to run
  4669. from source or local).
  4670. 97-01-02 chetanp Added Feature support to the Configuration Manager
  4671. 97-01-02 chetanp Added registry compatibility to the configuration
  4672. manager
  4673. 97-01-02 chetanp Added functionality to Darwin to manage Features
  4674. from Properties
  4675. 97-01-02 chetanp Added functionality to msiexec so as to be able to
  4676. configure features/ uninstall product from command
  4677. line. Type msiexec /? for more.