I don't feel so bad about my managed CA when I hear about InstallShield 
supporting them.

Thanks for the quote, I read and voted.  I did have some fat finger and 
spelling errors.

It used to be you could just write managed CA in managed C++ in .NET 1.1.  With 
2.0, there is the DLL dependency on the C++ runtime.  With that we get the C++ 
harness with the C#/VB.NET dlls to be loaded.

I guess one could use managed C++, but they would have to place the CRT 
manifext in the directory where the custom actions are run 
(c:\windows\installer or something like that).

I guess if people have enough time and money, they can always stick to native 
C++, but then there is so much code to maintain and test.

Regards,
Aris


---- Christopher Painter <[EMAIL PROTECTED]> wrote: 
> InstallShield creates a DLL with a bunch of exported functions like 
> m1,m2,m3......   Then there is table data that the function queries to know 
> enough to fire everything up and invoke it.   One really cool thing is 
> dependency rows ( Direct Editor... GUI doesn't expose it yet ) where if  
> assembly 1 has a dependency on some file/assembly it'll get extracted out and 
> made available to the process.    Very useful....
>    
>   I leaned ANSI C on Solaris back in the 90's and never did a whole lot on 
> Windows.  C++/MFC/ATL is foreign to me.  I moved on to RAD languages like 
> PowerBuilder/Delphi/VB before finally moving to .NET.   A lot of people today 
> have only ever done .NET.    It's all great if you happen to be a DirectX/C++ 
> MS-MVP but for the rest of the world, there is a disconnect.
>    
>   BTW, hope you don't mind that I quoted you: 
> http://blog.deploymentengineering.com/2008/04/you-cant-escape-net.html
>   
> 
> [EMAIL PROTECTED] wrote:
>   I am doing something similar, but in Wix. I had to write the 
> "CoCreateObjectDotNet()" stuff myself. I'll bet the InstallShield created a 
> more generic, reusable functionality.
> 
> I write my .NET CA's in VB.NET so I can use late binding to do stuff with 
> ADSI, etc. I don't need interop.
> 
> I think that the issue people are worred about is that with .NET loaded in 
> the immediate/deferred processes, there may be issues with things like 
> installing assemblies into the GAC. We don't need to do this with this 
> install.
> 
> The point is clear in the blog link you sent, there is more familiarity with 
> .NET than unmanaged C++ for doing something like creating a random number.
> 
> I can do the native C++ coding, but compared to .NET, its like moving a pile 
> of sand with a small spoon as opposed to a shovel and a wheelbarrow.
> 
> Regards,
> Aris Green
> 
> 
> ---- Christopher Painter wrote: 
> > 
> > 
> > Read this and let me know what you think:
> > 
> > http://blog.deploymentengineering.com/2008/03/installshield-2009-beta-part-ii-managed.html
> > 
> > 
> > [EMAIL PROTECTED] wrote:
> > I have head people preach dillegently about the evil of managed custom 
> > actions.
> > 
> > Let me just say a few things. Often we need tools such as SMO to better 
> > configure a database and the "in-box" custom action in Wix don't do quite 
> > what you need. In some of the installs I have worked on, I need to migrate 
> > old databases, Restore, Detach, Attach, run very large batch scripts, hook 
> > into the batches to echo "Print" SQL statements to the MSI logs.
> > 
> > Also, setting up a Web Service in IIS7 is unsupported.
> > 
> > In comes .NET in a Custom Action to the rescue. This logic can now be coded 
> > in a more affordable way than vast tomes of C++. 
> > 
> > What I have font to work greatly is to use a Unmanaged C++ harness to load 
> > .NET assemblies and run the custom action logic. The C++ harness uses the 
> > unmanaged .NET API for setting up the app domain and firing off the .NET 
> > code in the assembly. All the .NET code is run as a DLL custom action. 
> > NOTE: These are not the "Installer Components" that leave their carcasses 
> > in the installed product. They are simple extracted in the install, ran, 
> > and then deleted (the DLLs are loaded by the unmanaged C++ in another App 
> > Domain so they can be chucked).
> > 
> > I realize there may be issues when installing to the GAC on Server 2003, 
> > fortunately we don't have to do this.
> > 
> > Regards,
> > greenaj
> > 
> > 
> > 
> > 
> > ---- Holmgren Mathias wrote: 
> > > And BTW, this topic is obviously an old beaten horse...
> > > 
> > > http://robmensching.com/blog/archive/2007/04/19/Managed-Code-CustomActio
> > > ns-no-support-on-the-way-and-heres.aspx
> > > 
> > > 
> > > 
> > > /M
> > > 
> > > 
> > > 
> > > ________________________________
> > > 
> > > From: [EMAIL PROTECTED]
> > > [mailto:[EMAIL PROTECTED] On Behalf Of Holmgren
> > > Mathias
> > > Sent: den 29 april 2008 14:39
> > > To: wix-users@lists.sourceforge.net
> > > Subject: Re: [WiX-users] Managed custom actions in Wix 3
> > > 
> > > 
> > > 
> > > AFAIK, MSI can not call your managed code directly and there is no
> > > supported way to easily call into custom actions written in managed
> > > code.
> > > 
> > > 
> > > 
> > > But you can use InstallUtilLib.dll from the framework directory to host
> > > an AppDomain and load+call your managed code custom action. I got the
> > > below to work by using dark to reverse engineer what Visual Studio does
> > > with it's own setup projects.
> > > 
> > > 
> > > 
> > > WARNING - As far as I know this is all undocumented and likely very
> > > unsupported stuff. And I might not understand all the implications of
> > > what I did here.
> > > 
> > > 
> > > 
> > > But it works - no C++ or unmanaged code necessary. :-)
> > > 
> > > 
> > > 
> > > > SourceFile="$(env.FrameworkDir)/$(env.FrameworkVersion)/InstallUtilLib.d
> > > ll" />-->
> > > 
> > > > SourceFile="C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727/InstallUtilLib
> > > .dll" />
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > [snip]
> > > 
> > > 
> > > 
> > > > effect, set required MSI properties (AFAIK required for using
> > > InstallUtilLib.dll) -->
> > > 
> > > > DllEntry="CheckFX" />
> > > 
> > > > DllEntry="ManagedInstall" Execute="deferred" />
> > > 
> > > > Property="CAInstall.install" Value="/installtype=notransaction
> > > /action=install /LogFile= /PS_DEF=[PS_DEF] /PS_ADR="[PS_ADR]"
> > > /PS_BYP=[PS_BYP] "[#ClientEXE]" "[VSDFxConfigFile]""
> > > />
> > > 
> > > > DllEntry="ManagedInstall" Execute="commit" />
> > > 
> > > > Property="CACommit.commit" Value="/installtype=notransaction
> > > /action=commit /LogFile= "[#ClientEXE]"
> > > "[VSDFxConfigFile]"" />
> > > 
> > > 
> > > 
> > > [snip]
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > > Before="CAInstall.install">$Executable>2
> > > 
> > > > Before="CACommit.commit.SetProperty">$Executable>2
> > > 
> > > > Before="CACommit.commit">$Executable>2
> > > 
> > > > Before="RegisterUser">$Executable>2
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > As you can see, you have to explicitly pass in all MSI properties used
> > > by your custom actions for your code to access them. They are not
> > > automatically available. This is an inherit MSI limitation.
> > > 
> > > 
> > > 
> > > The "[#ClientEXE]" param above is a file reference to the
> > > custom action assembly. In our case a 
> > > assembly file in one component of the install package.
> > > 
> > > 
> > > 
> > > Note on the dependent files:
> > > 
> > > The VSDNETCFG.config is a .net config file (w. lots of assembly
> > > bindingRedirects). You also need MSVBDPCA.DLL. Both these files are
> > > embedded in VS setup project MSI-files as a binary stream. Get them by
> > > darking an existing VS setup project or e-mail me and I'll send the ones
> > > I extracted.
> > > 
> > > 
> > > 
> > > 
> > > 
> > > PS. If somebody knows a better/recommended way to call managed CAs,
> > > please let me know too.
> > > 
> > > 
> > > 
> > > /Mathias
> > > 
> > 
> > 
> > -------------------------------------------------------------------------
> > This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
> > Don't miss this year's exciting event. There's still time to save $100. 
> > Use priority code J8TL2D2. 
> > http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
> > _______________________________________________
> > WiX-users mailing list
> > WiX-users@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/wix-users
> > 
> > 
> > 
> > ---------------------------------
> > Be a better friend, newshound, and know-it-all with Yahoo! Mobile. Try it 
> > now.
> 
> 
> 
>        
> ---------------------------------
> Be a better friend, newshound, and know-it-all with Yahoo! Mobile.  Try it 
> now.


-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Don't miss this year's exciting event. There's still time to save $100. 
Use priority code J8TL2D2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to