Windows2000/private/shell/ext/webfldrs
2020-09-30 17:12:32 +02:00
..
alpha First commit 2020-09-30 17:12:32 +02:00
i386 First commit 2020-09-30 17:12:32 +02:00
makefile First commit 2020-09-30 17:12:32 +02:00
readme.txt First commit 2020-09-30 17:12:32 +02:00
sources First commit 2020-09-30 17:12:32 +02:00

This file documents the process of converting the 15 or so WebFolders 
NSE files into a single MSI package file.  First some definitions...

NSE         == Name Space Extension (a shell namespace extension).
MSI         == Microsoft Installer (darwin).
Package     == Database file used to control MSI installs.  
Components  == Various DLLs, REG files etc associated with an MSI install.
msiedit.exe == Editor for MSI database files (i.e. webfldrs.msi)
msiinfo.exe == Tool for setting MSI database file values.
msi.hlp     == Help file for MSI stuff.

... then a caveat from me (brianau)...

My goal is to have the Office team generate a single MSI package file
containing all the necessary component files, enlist in our source tree
and check in their binary whenever they make changes.  Currently, we just
get this set of files and have to do it ourselves.  This file documents
how to do it.


Here are the steps:

Step 1 (Get files from Office team) -------------------------------------------

Obtain new MSI package file and component sources from 
David Switzer (davidswi).  These files come organized in the following tree:

    webfldrs.msi
    PFiles\Common\MSShared\webfldrs\msonsext.dll
    PFiles\Common\MSShared\webfldrs\msows409.dll
    PFiles\Common\MSShared\webfldrs\pubplace.htt
    PFiles\Common\MSShared\webfldrs\ragent.dll
    PFiles\Common\MSShared\webfldrs\ragent.tlb
    PFiles\Common\MSShared\webfldrs\msonsext.dll
    PFiles\Common\MSShared\WebSrvEx\bin\fp4anwi.dll
    PFiles\Common\MSShared\WebSrvEx\bin\fp4autl.dll
    PFiles\Common\MSShared\WebSrvEx\bin\fp4awec.dll
    PFiles\Common\MSShared\WebSrvEx\bin\fp4awel.dll
    PFiles\Common\System\Oledb\msdadc.dll
    PFiles\Common\System\Oledb\msdaipp.dll
    PFiles\Common\System\Oledb\msdapml.dll
    PFiles\Common\System\Oledb\msdaurl.dll

Step 2 (Create CAB file from MSI components) ----------------------------------

Feed this script to MAKECAB to generate a single CAB file containing the
14 component files.  Run MAKECAB with the default directory set to the
PFiles directory or modify the script accordingly.

IMPORTANT: Order of the files in this DDF files is CRITICAL.  Files
           MUST be listed in the order of the corresponding "Sequence"
           number in the "File" table in the MSI database.  Use msiedit
           to view the MSI content.

C:\PFiles> MAKECAB /f webfldrs.ddf

    ;
    ;*** WebFolders NSE CAB directive file (webfldrs.ddf).
    ;
    .OPTION EXPLICIT   ; Generate errors on variable typos

    .Set Cabinet=on
    .Set Compress=on
    .Set MaxDiskSize=0 ; Storing on hard drive/CDROM

    "common\MSShared\WebSrvEx\vers40\bin\fp4autl.dll" "fp4autl.dll"
    "common\MSShared\WebSrvEx\vers40\bin\fp4awel.dll" "fp4awel.dll"
    "common\MSShared\WebSrvEx\vers40\bin\fp4awec.dll" "fp4awec.dll"
    "common\MSShared\WebSrvEx\vers40\bin\fp4anwi.dll" "fp4anwi.dll"
    "common\System\Oledb\msdadc.dll" "msdadc.dll"
    "common\MSShared\webfldrs\msows409.dll" "msows409.dll"
    "common\System\Oledb\msdaipp.dll" "msdaipp.dll"
    "common\System\Oledb\msdapml.dll" "msdapml.dll"
    "common\System\Oledb\msdaurl.dll" "msdaurl.dll"
    "common\MSShared\webfldrs\msonsext.dll" "msonsext.dll"
    "common\MSShared\webfldrs\pubplace.htt" "pubplace.htt"
    "common\MSShared\webfldrs\ragent.dll" "ragent.dll"
    "common\MSShared\webfldrs\ragent.tlb" "ragent.tlb"
    ;*** <the end>


Step 3 (Make changes to MSI database file)-------------------------------------

Open the MSI database using msiedit.exe and make the following 
changes:

a) Open the "Media" table.  Enter the following text string in the
   "Cabinet" field of the first record (there should only be 1 record).

        #Icon.WebfldrsCabFile

b) Open the "Icon" table.  Create a new record and enter the following string
   in the "Name" field.
   
        "WebfldrsCabFile".

c) Highlight the "Data" field of this new record and right click.  Select the
   "Import Stream" command.  In the FileOpen dialog, find the CAB file generated
   in step 2 and select it.  Select "Open" to import the CAB file.  This will
   import the CAB file into the MSI package file so that we have only a single
   file to deal with in NT setup.

d) Save the changes and close msiedit.exe


Step 4 (Change Source Type Summary) -------------------------------------------

Issue the following command:

    msiinfo webfldrs.msi /W 2

This will tell Darwin to find the component files inside the MSI package.


Step 5 (Check in the new MSI package) -----------------------------------------

Check out the current MSI package file.
Check in the new MSI package file.


Step 6 (Install the MSI package) ----------------------------------------------

To install the MSI package, call the MsiInstallProduct() API with the path
to the MSI package file.