This website uses cookies. By clicking Accept, you consent to the use of cookies. Click Here to learn more about how we use cookies.
Turn on suggestions
Auto-suggest helps you quickly narrow down your search results by suggesting possible matches as you type.
- Revenera Community
- :
- InstallShield
- :
- InstallShield Forum
- :
- Function entry point name for custom C++ DLL?
Subscribe
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Subscribe
- Mute
- Printer Friendly Page
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Apr 04, 2013
04:45 PM
Function entry point name for custom C++ DLL?
I have moved all the heavy lifting of some security operations into a C++ DLL.
I have put the dll into a binary table in the Basic MSI.
I have created a MSI type 1 custom action, Immediate Execution, to call my DLL's only function.
My question is because this is a C++ DLL, the name is mangled. The definition of the function is:
I've tried to use demangled variants as the custom actions function name:
SetSeLogin
MSIHelper::SetSeLogon
I've also tried a mangled name (gotten from the VS linker dump of the .dll):
?SetSeLogon@MSIHelper@@SGHK@Z
None work, and all give the same 1723 pop-up error.
For completeness, here is a dump of the .lib and .dll portions that are relevant:
And the .lib:
I'm not sure what other options to try. Any suggestions is appreciated.
Wim
I have put the dll into a binary table in the Basic MSI.
I have created a MSI type 1 custom action, Immediate Execution, to call my DLL's only function.
My question is because this is a C++ DLL, the name is mangled. The definition of the function is:
INT __stdcall MSIHelper::SetSeLogon( MSIHANDLE hModule )
I've tried to use demangled variants as the custom actions function name:
SetSeLogin
MSIHelper::SetSeLogon
I've also tried a mangled name (gotten from the VS linker dump of the .dll):
?SetSeLogon@MSIHelper@@SGHK@Z
None work, and all give the same 1723 pop-up error.
For completeness, here is a dump of the .lib and .dll portions that are relevant:
Section contains the following exports for MSIHelperDLL.dll
00000000 characteristics
515DDF7B time date stamp Thu Apr 04 13:15:55 2013
0.00 version
1 ordinal base
1 number of functions
1 number of names
ordinal hint RVA name
1 0 00011019 ?SetSeLogon@MSIHelper@@SGHK@Z = @ILT+20(?SetSeLogon@MSIHelper@@SGHK@Z)
And the .lib:
5 public symbols
4 ?SetSeLogon@MSIHelper@@SGHK@Z
1 __IMPORT_DESCRIPTOR_MSIHelper
2 __NULL_IMPORT_DESCRIPTOR
4 __imp_?SetSeLogon@MSIHelper@@SGHK@Z
3 ⌂MSIHelper_NULL_THUNK_DATA
...
Version : 0
Machine : 14C (x86)
TimeDateStamp: 515DE308 Thu Apr 04 13:31:04 2013
SizeOfData : 00000038
DLL name : MSIHelper.dll
Symbol name : ?SetSeLogon@MSIHelper@@SGHK@Z (public: static int __stdcall MSIHelper::SetSeLogon(unsigned
long))
Type : code
Name type : name
Hint : 0
Name : ?SetSeLogon@MSIHelper@@SGHK@Z
Exports
ordinal name
?SetSeLogon@MSIHelper@@SGHK@Z (public: static int __stdcall MSIHelper::SetSeLogon(unsigned long))
I'm not sure what other options to try. Any suggestions is appreciated.
Wim
(2) Replies
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Apr 04, 2013
05:41 PM
I whacked the routine time to be *exactly* SetSeLogon.
Using that name in my custom action still gives me the a 1723 error pop-up.
Can anyone share their positive experience on putting a home built .dll into a binary table, and using a custom action to invoke the method properly?
Thanks,
Wim
Using that name in my custom action still gives me the a 1723 error pop-up.
Can anyone share their positive experience on putting a home built .dll into a binary table, and using a custom action to invoke the method properly?
Thanks,
Wim
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Apr 04, 2013
08:45 PM
OK, Solved the major problem -- the .dll was built on a dev machine and the installshield install on a different machine -- it turns out the runtimes were not the same. So changing the linker to generate a statically linked .dll (project->properties->project defaults->Use of MFC->"Use MFC in a static library".