Home All Groups Group Topic Archive Search About
Author
27 Jan 2006 1:01 AM
Yama
Hi,

Here is a scenario using VS.NET 2003 CAB deployment solution:

Step 1: Open new instance of  VS.NET.
Step 2: File -> New -> Project (Shift + CTRL + N)
Step 3: Select the "Setup and Deployment Projects" folder
Step 4: Click on the "Cab Project" icon (file cabinet image)
Step 5: Click OK
Step 6: In Solution Explorer ( View -> Solution Explorer (CTRL + Alt + L) )
right-click and select Add->File...
Step 7: Browse to any of your ActiveX controls, select, then click Open
Step 8: Build->Solution (CTRL+Shift+B)

Now open the CAB file by browsing to it in the Debug or Release folder under
the project folder.
Drag-and drop the OSD<randomInteger>.osd to your desktop or anywhere else.
Open it with Notepad (Start->Run-> "notepad " + drag-and-drop the
OSD<randomInteger>.osd and click OK)

The auto-generated Open Software Document (OSD) is garbage. If you tried to
use the cab it will throw an exception of any type.

Here is what my OSD looks like when auto-generated:
--------------------------------------------------------------------------------

<?XML version="1.0" ENCODING='UTF-8'?>
<!DOCTYPE SOFTPKG SYSTEM "http://www.microsoft.com/standards/osd/osd.dtd">
<?XML::namespace href="http://www.microsoft.com/standards/osd/msicd.dtd"
as="MSICD"?>
<SOFTPKG NAME="Cab1" VERSION="1,0,0,0">
        <TITLE> Cab1 </TITLE>
        <MSICD::NATIVECODE>
            <CODE NAME="VideoMedia">
                <IMPLEMENTATION>
                    <CODEBASE FILENAME="VideoMedia.ocx">
                    </CODEBASE>
                </IMPLEMENTATION>
            </CODE>
        </MSICD::NATIVECODE>
</SOFTPKG>
--------------------------------------------------------------------------------

The actual OSD should resemble something like this:
--------------------------------------------------------------------------------
<?XML version="1.0" ENCODING='UTF-8'?>
<!DOCTYPE SOFTPKG SYSTEM "http://www.microsoft.com/standards/osd/osd.dtd">
<?XML::namespace href="http://www.microsoft.com/standards/osd/msicd.dtd"
as="MSICD"?>
<SOFTPKG NAME="{1B1DCB17-4041-41FB-AEBC-B58882511838}"
        VERSION="1,0,0,2"
STYLE="MSICD">
<TITLE>VideoMedia version 1,2,0,1</TITLE>

        <MSICD::NATIVECODE>
              <CODE CLASSID="{1B1DCB17-4041-41FB-AEBC-B58882511838}"
NAME="VideoMedia.ocx" VERSION="1,2,0,1">
                        <IMPLEMENTATION>
                                <PROCESSOR VALUE="x86" />
                                <CODEBASE FILENAME="VideoMedia.ocx" />
                        </IMPLEMENTATION>
                </CODE>
        </MSICD::NATIVECODE>
</SOFTPKG>
--------------------------------------------------------------------------------


There is no way to tell the project or the solution to not generate this
*.osd file. Nor is there a way to edit it to make reflective changes without
having the compiler auto-generate the precedent. This makes it impossible to
use this approach to create a cabinet file.

Does anyone here know about this?

Could there possibly be a way to tell the solution not to create the *.osd
file when packaging the cabinet file?

Or perhaps is there a way to edit/create an *.osd file so that it will not
be auto-generated?

Once auto-generated it will break your cab! So I figured this product should
have NEVER made it to VS.NET as it is a show stopper BUG!


Yama Kamyar

AddThis Social Bookmark Button