• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 219
  • Last Modified:

Install Shield and Formula One

I have written an application using the Formula One component.
I have created the intall program with IS Express 1.11a.
When I install it in other computer and try to run it, the computer sends the message "UNREGISTERED CLASS".
I have added the files VCF132.OCX, MFCANS32.DLL, OC30.DLL, MSVCRT20.DLL in the instalation program.

What goes wrong??

Gilberto
0
gmsacoda
Asked:
gmsacoda
  • 5
  • 5
1 Solution
 
gmsacodaAuthor Commented:
Adjusted points to 100
0
 
BoRiSCommented:
gmsacoda

you need to register the ocx etc.

this can be done in tw ways through your code using

regsvr32 [/u] [/s] <DLLname or OCXname>
                                    /u - if you want to unregister COMponent
                                    /s - no message (silent) //use this param for behind the scenes...

or through installshield its self...

this information is taking from
http://support.installshield.com/kb/default.asp?action=Display&documents_id=651 

    All editions of InstallShield Express automatically register any .dll, .exe and .ocx file containing the "OLESelfRegister" string in the
    version
                        resource.

                        Note: The 1.1 version of InstallShield Express Professional will also check .olb files for the "OLESelfRegister" flag.

                        You can check to see if a third-party .ocx or .dll file contains this resource by opening the .dll or .ocx file using Borland
    Resource Workshop or
                        MSVC++ and then checking the `Version Information` resource for the following value:

                        VALUE "OLESelfRegister", "\0"

                        To include this resource in your own DLLs, create an extra string value field in the version resource for the .dll/.ocx file. This
    value should have
                        the name OLESelfRegister. The data for this value is ignored and can be set to "".

                        MSVC++ does not currently allow you to add a new value field to the `Version Information` resource. If you are using
    MSVC++, you will need to
                        add this value directly to the .RC file for your project. You can use any convenient text editor to edit this file and add
    OLESelfRegister to the
                        existing values in the .RC file. Make sure you rebuild your .dll/.ocx file after making this change.

                        After you add this string, the version information block will look something like this:

                          /////////////// Begin sample

                          VS_VERSION_INFO VERSIONINFO
                          FILEVERSION 1,0,0,1
                          PRODUCTVERSION 1,0,0,1
                          FILEFLAGSMASK 0x3fL
                          #ifdef _DEBUG
                          FILEFLAGS 0x1L
                          #else
                          FILEFLAGS 0x0L
                          #endif
                          FILEOS 0x40004L
                          FILETYPE 0x2L
                          FILESUBTYPE 0x0L
                          BEGIN
                          BLOCK "StringFileInfo"
                          BEGIN
                          BLOCK "040904b0"
                          BEGIN
                          VALUE "CompanyName", "InstallShield\0"
                          VALUE "FileDescription", "RESDLL\0"
                          VALUE "FileVersion", "1, 0, 0, 1\0"
                          VALUE "InternalName", "RESDLL\0"
                          VALUE "LegalCopyright", "Copyright _ 1996\0"
                          VALUE "OriginalFilename", "RESDLL.dll\0"
                          VALUE "ProductName", "InstallShield RESDLL\0"
                          VALUE "ProductVersion", "1, 0, 0, 1\0"
                          VALUE "OLESelfRegister","\0"
                          END
                          END
                          BLOCK "VarFileInfo"
                          BEGIN
                          VALUE "Translation", 0x409, 1200
                          END
                          END
                          /////////////// End sample


                        With InstallShield Express2 and Express Professional, you can manually add the following section to the Swdepend.ini file
    used for the
                        installation:

                        [DLLNAME.DLL]

                        Register=$(DLLSelfRegister)

Later
BoRiS
0
 
BoRiSCommented:
gmsacoda

you need to register the ocx etc.

this can be done in tw ways through your code using

regsvr32 [/u] [/s] <DLLname or OCXname>
                                    /u - if you want to unregister COMponent
                                    /s - no message (silent) //use this param for behind the scenes...

or through installshield its self...

this information is taking from
http://support.installshield.com/kb/default.asp?action=Display&documents_id=651 

    All editions of InstallShield Express automatically register any .dll, .exe and .ocx file containing the "OLESelfRegister" string in the
    version
                        resource.

                        Note: The 1.1 version of InstallShield Express Professional will also check .olb files for the "OLESelfRegister" flag.

                        You can check to see if a third-party .ocx or .dll file contains this resource by opening the .dll or .ocx file using Borland
    Resource Workshop or
                        MSVC++ and then checking the `Version Information` resource for the following value:

                        VALUE "OLESelfRegister", "\0"

                        To include this resource in your own DLLs, create an extra string value field in the version resource for the .dll/.ocx file. This
    value should have
                        the name OLESelfRegister. The data for this value is ignored and can be set to "".

                        MSVC++ does not currently allow you to add a new value field to the `Version Information` resource. If you are using
    MSVC++, you will need to
                        add this value directly to the .RC file for your project. You can use any convenient text editor to edit this file and add
    OLESelfRegister to the
                        existing values in the .RC file. Make sure you rebuild your .dll/.ocx file after making this change.

                        After you add this string, the version information block will look something like this:

                          /////////////// Begin sample

                          VS_VERSION_INFO VERSIONINFO
                          FILEVERSION 1,0,0,1
                          PRODUCTVERSION 1,0,0,1
                          FILEFLAGSMASK 0x3fL
                          #ifdef _DEBUG
                          FILEFLAGS 0x1L
                          #else
                          FILEFLAGS 0x0L
                          #endif
                          FILEOS 0x40004L
                          FILETYPE 0x2L
                          FILESUBTYPE 0x0L
                          BEGIN
                          BLOCK "StringFileInfo"
                          BEGIN
                          BLOCK "040904b0"
                          BEGIN
                          VALUE "CompanyName", "InstallShield\0"
                          VALUE "FileDescription", "RESDLL\0"
                          VALUE "FileVersion", "1, 0, 0, 1\0"
                          VALUE "InternalName", "RESDLL\0"
                          VALUE "LegalCopyright", "Copyright _ 1996\0"
                          VALUE "OriginalFilename", "RESDLL.dll\0"
                          VALUE "ProductName", "InstallShield RESDLL\0"
                          VALUE "ProductVersion", "1, 0, 0, 1\0"
                          VALUE "OLESelfRegister","\0"
                          END
                          END
                          BLOCK "VarFileInfo"
                          BEGIN
                          VALUE "Translation", 0x409, 1200
                          END
                          END
                          /////////////// End sample


                        With InstallShield Express2 and Express Professional, you can manually add the following section to the Swdepend.ini file
    used for the
                        installation:

                        [DLLNAME.DLL]

                        Register=$(DLLSelfRegister)

Later
BoRiS
0
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
BoRiSCommented:
gmsacoda

sorry about the comment clicked the wrong box...

Later
BoRiS
0
 
gmsacodaAuthor Commented:
Thank you Boris,

I could run a program after have registered 2 of the four files requested by formula one.
I have used REGSVR32 to register these files.
But some questions remains. I´d like you to give me some more informations.

1. REGSVR32 was not present in the computer. I had to copy from    my computer. What software loads this program?
2. I want to send the installation program to the user. I dont    want the user to use REGSVR32 to register the components. Then    I need the IS Express to generate a instalation program to       register all necessary components.

Regards
Gilberto
0
 
BoRiSCommented:
gmsacoda

If regsrv32 is not present on a machine you may copy it to that machine, but what you need to do as you are sending an installshield version, is in the resource file of the your program add this code ...

VALUE "OLESelfRegister","\0"

if you are using installshield express 2 or professional then you just need to add this line of code to the SWdepend.ini file of the installation

[DLLNAME.DLL] //ini heading
Register=$(DLLSelfRegister) //code under heading...

OR

[OCXNAME.OCX] //ini heading
Register=$(OCXSelfRegister) //code under heading...

Later
BoRiS
0
 
gmsacodaAuthor Commented:
BoRis

I have tried but I could not find how and where to add the code you have suggested.

According to Delphi Help, the resource file has the same name of the application with .RES termination. This file is not an ASCII file and I don't know how to edit it.

I need some more help
Regards
Gilberto



0
 
BoRiSCommented:
what version of the install shield are you using...

you will need a resourse editor to edit the resouce file, or create your own...
for more info on creating an resource file check the delphi help file /search for resource DLL, creating...

it will explain how to use the resource dll wizard, this will create an .rc for you etc...

Later
BoRiS
0
 
gmsacodaAuthor Commented:

I am using the version 1.11.

I´ll try to edit

Gilberto


0
 
gmsacodaAuthor Commented:
Boris

I´ve got a new version of the IS Express and used it to create a installation program.
Then the apllication run without problems.

Thanks
Gilberto
0

Featured Post

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

  • 5
  • 5
Tackle projects and never again get stuck behind a technical roadblock.
Join Now