Components being installed to incorrect location
I have an application that has a msi and setup.exe supplied by the
manufacturer. When I launch the msi I get a "you cannot install by
directly launching the msi. Use setup.exe" message or something to that
effect. I repackaged the app using AdminStudio 7 and setup.exe. The
problem is where it is forcing some component DLL's. When you install the
app manually running setup.exe the DLLS go where they are supposed to -
C:\Program Files\Common Files\Intergraph. After the app has been
repackaged into a MSI those same DLLS get put in the System32 directory.
The app then doesn't function properly. Here is part of the log file on
one of the DLLs.
This is the good install:
MSI (s) (38:1C) [15:00:58:796]: Executing op: ComponentRegister
(ComponentId={97484B47-FB3D-479D-B038-B53E6E1F44D5},KeyPath=C:\Program
Files\Common
Files\Intergraph\ICALLRES.dll,State=3,,Disk=1,SharedDllRefCount=3,BinaryTyp
e=0)
This is the bad install:
MSI (s) (20:14) [15:43:21:265]: Executing op: ComponentRegister
(ComponentId={369A8608-CE63-4421-9A0C-
73F52BC2AA48},KeyPath=C:\WINDOWS\system32
\ICALLRES.dll,State=3,,Disk=1,SharedDllRefCount=1,BinaryType=0)
How or where do I point these components to the proper location. Also,
there are many DLLs this is happening to. Is there a way to make the
change in one spot and not have to change every DLL? Any help is
appreciated.
manufacturer. When I launch the msi I get a "you cannot install by
directly launching the msi. Use setup.exe" message or something to that
effect. I repackaged the app using AdminStudio 7 and setup.exe. The
problem is where it is forcing some component DLL's. When you install the
app manually running setup.exe the DLLS go where they are supposed to -
C:\Program Files\Common Files\Intergraph. After the app has been
repackaged into a MSI those same DLLS get put in the System32 directory.
The app then doesn't function properly. Here is part of the log file on
one of the DLLs.
This is the good install:
MSI (s) (38:1C) [15:00:58:796]: Executing op: ComponentRegister
(ComponentId={97484B47-FB3D-479D-B038-B53E6E1F44D5},KeyPath=C:\Program
Files\Common
Files\Intergraph\ICALLRES.dll,State=3,,Disk=1,SharedDllRefCount=3,BinaryTyp
e=0)
This is the bad install:
MSI (s) (20:14) [15:43:21:265]: Executing op: ComponentRegister
(ComponentId={369A8608-CE63-4421-9A0C-
73F52BC2AA48},KeyPath=C:\WINDOWS\system32
\ICALLRES.dll,State=3,,Disk=1,SharedDllRefCount=1,BinaryType=0)
How or where do I point these components to the proper location. Also,
there are many DLLs this is happening to. Is there a way to make the
change in one spot and not have to change every DLL? Any help is
appreciated.
0 Comments
[ + ] Show comments
Answers (2)
Please log in to answer
Posted by:
meastaugh1
18 years ago
You may want to go back to the vendor supplied installer package. When you get the 'MSI must be launched from EXE' message, you can usually just add the property ISSETUPDRIVEN with a value of 1. Then prevent the customaction OnCheckSilentInstall from executing, either by conditioning it to always evaluate to false, or removing it from the sequence table altogether.
And you'll need to ensure the correct isscript is present on your target clients.
And you'll need to ensure the correct isscript is present on your target clients.
Posted by:
MSIPackager
18 years ago
There's something odd going on with your capture for starters.. it shouldn't be moving your dll files around - your resulting MSI file locations should match the vendor install...
Anyway to fix this open the MSI in Orca (or table view in AdminStudio) - the files are installed by component/s and the installation directory is set against the component/s in question. First go to the file table and look at the component name/s installing the file/s in question - you may find 1 component is doing multiple files or there may be one component per file (depending on how your packaging software is configured).
Goto the component table and look at the directory column - this is a reference to the primary key (1st column in the directory table) and dictates where files in that component are installed.. you need to change these references (from SystemFolder or whatever it is now) to match the correct entry in the directory table (hopefully you already have the relevant entries for the C:\Program Files\Common Files\Intergraph folder - otherwise you'll need to create it with the relevant directory parent.
This will be considerably easier using the AdminStudio 7 GUI rather than by directly editing the tables - but you'll learn more about how MSI's work doing it the hard way.. Links to MS SDK reference info about the relevant tables below.
Component
File
Directory
Don't forget to validate your MSI and fix any ICE errors [8|]
Good luck,
Rob.
Anyway to fix this open the MSI in Orca (or table view in AdminStudio) - the files are installed by component/s and the installation directory is set against the component/s in question. First go to the file table and look at the component name/s installing the file/s in question - you may find 1 component is doing multiple files or there may be one component per file (depending on how your packaging software is configured).
Goto the component table and look at the directory column - this is a reference to the primary key (1st column in the directory table) and dictates where files in that component are installed.. you need to change these references (from SystemFolder or whatever it is now) to match the correct entry in the directory table (hopefully you already have the relevant entries for the C:\Program Files\Common Files\Intergraph folder - otherwise you'll need to create it with the relevant directory parent.
This will be considerably easier using the AdminStudio 7 GUI rather than by directly editing the tables - but you'll learn more about how MSI's work doing it the hard way.. Links to MS SDK reference info about the relevant tables below.
Component
File
Directory
Don't forget to validate your MSI and fix any ICE errors [8|]
Good luck,
Rob.
Rating comments in this legacy AppDeploy message board thread won't reorder them,
so that the conversation will remain readable.
so that the conversation will remain readable.