I finally managed to get it to work, anyone that wants a copy of the working
Visual studio 2005 solution with hello world wix send me an email.
Thanks to Mathias Holmgren for the sample provided.
Andreas
On Wed, Apr 30, 2008 at 2:17 PM, Holmgren Mathias <[EMAIL PROTECTED]>
wrote:
> Replace $Executeable with $ProductComponent in the custom action
> conditions in the sequence.
>
>
>
> $ is an access prefix telling MSI to substitute it with the install state
> of the specified component.
>
>
>
> See this ref for more on these MSI-prefixes and install states, etc:
>
> http://msdn.microsoft.com/en-us/library/aa368012.aspx
>
>
>
>
>
>
> ------------------------------
>
> *From:* [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] *On
> Behalf Of *Andreas Ringdal
> *Sent:* den 30 april 2008 14:01
> *To:* Holmgren Mathias
> *Subject:* Re: [WiX-users] Managed custom actions in Wix 3
>
>
>
> When attempting to use your sample I get these errors
>
> ICE79: Component 'Executable' referenced in column
> 'InstallExecuteSequence'.'Condition' of row 'CAInstall.install' is
> invalid. .\WixCustomActions.wxs 42 1 WixCustomActions
> ICE79: Component 'Executable' referenced in column
> 'InstallExecuteSequence'.'Condition' of row 'CAInstall.install.SetProperty'
> is invalid. .\WixCustomActions.wxs 41 1 WixCustomActions
> ICE79: Component 'Executable' referenced in column
> 'InstallExecuteSequence'.'Condition' of row 'CACommit.commit' is invalid.
> .\WixCustomActions.wxs 44 1 WixCustomActions
> ICE79: Component 'Executable' referenced in column
> 'InstallExecuteSequence'.'Condition' of row 'CACommit.commit.SetProperty' is
> invalid. .\WixCustomActions.wxs 43 1 WixCustomActions
>
> My entire WixCustomActions file now looks like this
>
> <?xml version="1.0" encoding="UTF-8"?>
> <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
> <Product Id="{A62D5476-1335-4721-9CDA-E6F5B23E84F9}" Name="Hello world
> sample" Language="1033"
> Version="1.0.0.0" Manufacturer="Hello World inc"
> UpgradeCode="{298B84DE-352E-44F9-A043-202EC9A68DAC}">
> <Package InstallerVersion="200" Compressed="yes" Description="Hello
> world installer" Comments="testpackage" />
> <Property Id="DiskPrompt" Value="the disk prompt" />
> <Media Id="1" EmbedCab="yes" Cabinet="sample.cab" />
>
> <Binary Id="CustomUtil" SourceFile="HelloCustomAction.dll" />
> <Binary Id="InstallUtil"
> SourceFile="C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727/InstallUtilLib.dll"
> />
> <Binary Id="VSDNETCFG" SourceFile="./VSDNETCFG.config" />
> <Binary Id="MSVBDPCADLL" SourceFile="./MSVBDPCA.DLL" />
>
> <Directory Id="TARGETDIR" Name="SourceDir">
> <Directory Id="ProgramFilesFolder" Name="PFiles">
> <Directory Id="INSTALLLOCATION" Name="Hello world
> dir">
> <Component Id="ProductComponent"
> Guid="{95AD1474-BC7F-4B2A-808C-D10D4D0ED755}">
> <File Id="CustomFile"
> Source="..\..\..\HelloCustomAction\bin\Debug\HelloCustomAction.dll"
> Name="HelloCustomAction.dll" />
> <File Id='HelloWorldEXE' Name='HelloWorld.exe'
> Source='..\..\..\HelloWorld\bin\Debug\HelloWorld.exe'
> Vital='yes'/>
> </Component>
> </Directory>
> </Directory>
> </Directory>
> <Feature Id='Complete' Level='1'>
> <ComponentRef Id='ProductComponent' />
> </Feature>
>
> <!-- DIRCA_CheckFX will check for .NET FW, but also, as a side effect,
> set required MSI properties (AFAIK required for using InstallUtilLib.dll)
> -->
> <CustomAction Id="DIRCA_CheckFX" BinaryKey="MSVBDPCADLL"
> DllEntry="CheckFX" />
> <CustomAction Id="CAInstall.install" BinaryKey="InstallUtil"
> DllEntry="ManagedInstall" Execute="deferred" />
> <CustomAction Id="CAInstall.install.SetProperty"
> Property="CAInstall.install"
> Value="/installtype=notransaction /action=install
> /LogFile= /PS_DEF=[PS_DEF] /PS_ADR="[PS_ADR]" /PS_BYP=[PS_BYP]
> "[#CustomFile]" "[VSDFxConfigFile]"" />
> <CustomAction Id="CACommit.commit" BinaryKey="InstallUtil"
> DllEntry="ManagedInstall" Execute="commit" />
> <CustomAction Id="CACommit.commit.SetProperty"
> Property="CACommit.commit"
> Value="/installtype=notransaction /action=commit
> /LogFile= "[#CustomFile]" "[VSDFxConfigFile]"" />
>
> <InstallExecuteSequence>
> <Custom Action="DIRCA_CheckFX" Sequence="1" />
> <Custom Action="CAInstall.install.SetProperty"
> Before="CAInstall.install">$Executable>2</Custom>
> <Custom Action="CAInstall.install"
> Before="CACommit.commit.SetProperty">$Executable>2</Custom>
> <Custom Action="CACommit.commit.SetProperty"
> Before="CACommit.commit">$Executable>2</Custom>
> <Custom Action="CACommit.commit"
> Before="RegisterUser">$Executable>2</Custom>
> </InstallExecuteSequence>
> </Product>
> </Wix>
>
> On Tue, Apr 29, 2008 at 2:39 PM, Holmgren Mathias <[EMAIL PROTECTED]>
> wrote:
>
> 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. J
>
>
>
-------------------------------------------------------------------------
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