Fantastic.., the invocation of the Custom Action happens no matter we use Windows Authenticaion [USEINTEGRATEDSECURITY=1] or SQL Server Authentication [USEINTEGRATEDSECURITY=0]... wonderful the EnterpriseSMS Installer Package works like a charm
Regards Kagiso P.S Correspondence information regarding the SetProperty Tag can be found below: ----- Forwarded Message ---- From: Blair Murri <blairlmu...@msn.com> To: Kagiso Seboni <kagisoseb...@yahoo.com> Cc: wix-users sourceforge <wix-users@lists.sourceforge.net> Sent: Tue, July 6, 2010 6:37:32 AM Subject: RE: [USEINTEGRATEDSECURITY] EnterpriseSMS Wix Installation You set USEINTEGRATEDSECURITY using this control: <ControlId="IntegratedSecurityCheckBox"Type="CheckBox"X="45"Y="123"Text="Use Integrated Security"Property="USEINTEGRATEDSECURITY"Width="200"Height="15"CheckBoxValue="1"/> When using a checkbox to set a property to a value, the checkbox will be set when the value is the value indicated, and the box will set the property to that value when the dialog is closed/a new dialog is opened. If the checkbox is not selected when the dialog moves on, the property will be cleared. Thus, you need one of these two (take your pick): <CustomAction="SqlAuthentication"After="SetSqlAuthentication">$db2mobileSQLPackager.Packages>2 AND USEINTEGRATEDSECURITY<>0</Custom> <CustomAction="SqlAuthentication"After="SetSqlAuthentication">$db2mobileSQLPackager.Packages>2 AND NOT USEINTEGRATEDSECURITY</Custom> The first one would be more “reliable” as some naïve person who passes the variable via the command-line may attempt to set the value to 0, so I recommend the first one. A verbose log would show you the final value of each property defined in the transaction. There you would be able to see if USEINTEGRATEDSECURITY had the value of 0 or no value at all. Unlike many other programming languages, a cleared variable in Windows Installer is NOT the same as the value 0. From:Kagiso Seboni [mailto:kagisoseb...@yahoo.com] Sent: Monday, July 05, 2010 12:14 PM To: Blair Murri Cc: wix-users sourceforge Subject: Re: [USEINTEGRATEDSECURITY] EnterpriseSMS Wix Installation My Gosh..@ I've tried various sequencing permutations and changing the timing of Custom Action invocation but to no avail....even the changes you'd recommended only reverse the situation whereby when USEINTEGRATEDSECURITY=1 the custom action begins the console applications but fails whenever USEINTEGRATEDSECURITY=0 <SetPropertyId="IntegratedSecurity"Value=""[INSTALLDIR]db2mobileSQLPackage.exe"/server:[SERVERNAME]/database:[DATABASENAME]/quiet/makedatabase" After="InstallFiles"Sequence="execute">$db2mobileSQLPackager.Packages>2</SetProperty> <SetPropertyId="SqlAuthentication"Value=""[INSTALLDIR]db2mobileSQLPackage.exe"/server:[SERVERNAME]/database:[DATABASENAME]/username:[DBUSERNAME]/password:[PASSWORD]/quiet/makedatabase" After="InstallFiles"Sequence="execute">$db2mobileSQLPackager.Packages>2</SetProperty> <CustomActionId="IntegratedSecurity"BinaryKey="WixCA"DllEntry="CAQuietExec"Execute="deferred"Return="check"Impersonate="no"/> <CustomActionId="SqlAuthentication"BinaryKey="WixCA"DllEntry="CAQuietExec"Execute="deferred"Return="check"Impersonate="no"/> These are the recommended changes to the "SqlAuthentication".., but i still cannot get the same custom action to get invoked, notwithstanding the Execution path selected as per the value of USEINTEGRATEDSECURITY=0 or 1 <InstallExecuteSequence> <CustomAction="IntegratedSecurity"After="SetIntegratedSecurity">$db2mobileSQLPackager.Packages>2 AND USEINTEGRATEDSECURITY=1</Custom> <CustomAction="SqlAuthentication"After="SetSqlAuthentication">$db2mobileSQLPackager.Packages>2 AND USEINTEGRATEDSECURITY=0</Custom> </InstallExecuteSequence> Let me just follow up this request for assistance with details of the UI code that chooses the values relating to USEINTEGRATEDSECURITY: <Fragment> <UI> <TextStyleId="GUI_Font_Normal"FaceName="Tahoma"Size="8"/> <PropertyId="WixUIFont"Value="WixUI_Font_Normal"/> <ProgressTextAction="Database.Install">Installing EnterpriseSMS Database "[DATABASENAME]"</ProgressText> <DialogId="SQLServerPromptingDlg"Width="370"Height="270"Title="[ProductName] [Setup]"NoMinimize="yes"> <ControlId="ServerLabel"Type="Text"X="45"Y="73"Width="100"Height="18"TabSkip="no"Text="&Server Name:"/> <ControlId="ServerEdit"Type="Edit"X="115"Y="73"Width="220"Height="18"Property="SERVERNAME"Text="{80}"/> <ControlId="DatabaseLabel"Type="Text"X="45"Y="98"Width="100"Height="18"TabSkip="no"Text="&Database Name:"/> <ControlId="DatabaseEdit"Type="Edit"X="115"Y="98"Width="220"Height="18"Property="DATABASENAME"Text="{80}"/> <ControlId="IntegratedSecurityCheckBox"Type="CheckBox"X="45"Y="123"Text="Use Integrated Security"Property="USEINTEGRATEDSECURITY"Width="200"Height="15"CheckBoxValue="1"/> <ControlId="UserNameLabel"Type="Text"X="45"Y="148"Width="100"Height="18"TabSkip="no"Text="&User Name:"/> <ControlId="UserNameEdit"Type="Edit"X="115"Y="148"Width="110"Height="18"Property="DBUSERNAME"Text="{50}"> <ConditionAction="disable">USEINTEGRATEDSECURITY = 1</Condition> <ConditionAction="enable"><![CDATA[USEINTEGRATEDSECURITY <>1]]></Condition> </Control> <ControlId="PasswordLabel"Type="Text"X="45"Y="173"Width="100"Height="18"TabSkip="no"Text="&Password:"/> <ControlId="PasswordEdit"Type="Edit"X="115"Y="173"Width="110"Height="18"Property="PASSWORD"Password="no"Text="{50}"> <ConditionAction="disable">USEINTEGRATEDSECURITY = 1</Condition> <ConditionAction="enable"><![CDATA[USEINTEGRATEDSECURITY <>1]]></Condition> </Control> <ControlId="Back"Type="PushButton"X="180"Y="243"Width="56"Height="17"Text="<Back"> <PublishEvent="NewDialog"Value="LicenseAgreementDlg">1</Publish> </Control> <ControlId="Next"Type="PushButton"X="236"Y="243"Width="56"Height="17"Default="yes"Text="Next>"> <PublishEvent="SpawnWaitDialog"Value="WaitForCostingDlg">CostingComplete = 1</Publish> <PublishEvent='NewDialog'Value='SetupTypeDlg'>1</Publish> </Control> <ControlId="Cancel"Type="PushButton"X="304"Y="243"Width="56"Height="17"Cancel="yes"Text="Cancel"> <PublishEvent="SpawnDialog"Value="CancelDlg">1</Publish> </Control> <ControlId="BannerBitmap"Type="Bitmap"X="0"Y="0"Width="370"Height="44"TabSkip="no"Text="WixUI_Bmp_Banner"/> <ControlId="Description"Type="Text"X="25"Y="23"Width="280"Height="15"Transparent="yes"NoPrefix="yes"> <Text>Please specify database installation information</Text> </Control> <ControlId="BottomLine"Type="Line"X="0"Y="234"Width="370"Height="0"/> <ControlId="Title"Type="Text"X="15"Y="6"Width="200"Height="15"Transparent="yes"NoPrefix="yes"> <Text><![CDATA[{\WixUI_Font_Title}SQL Server Information]]></Text> </Control> <ControlId="BannerLine"Type="Line"X="0"Y="44"Width="370"Height="0"/> </Dialog> </UI> </Fragment> Really appreciate your insight into WiX.., i have learnt so much from my correspondence with you i'm really having sleepless nights just getting the EnterpriseSMS Installer to work 100% HoLLa Kagiso ________________________________ From:Blair Murri <blairlmu...@msn.com> To: Kagiso Seboni <kagisoseb...@yahoo.com> Cc: Blair wix-users <os...@live.com> Sent: Mon, July 5, 2010 5:20:01 PM Subject: RE: [WiX-users] Fw: EnterpriseSMS Wix Installation Change <CustomAction="SqlAuthentication"After="SetSqlAuthentication">$db2mobileSQLPackager.Packages>2</Custom> To <CustomAction="SqlAuthentication"After="SetSqlAuthentication">$db2mobileSQLPackager.Packages>2 AND USEINTEGRATEDSECURITY=0</Custom> From:Kagiso Seboni [mailto:kagisoseb...@yahoo.com] Sent: Monday, July 05, 2010 5:19 AM To: blairlmu...@msn.com Cc: Blair wix-users Subject: Re: [WiX-users] Fw: EnterpriseSMS Wix Installation However after fiddling around with the timing of my sequencing i was able to make the invocation of the custom action in both scenarios when USEINTEGRATEDSECURITY=0/1: But one functional error arising is that wen i run the Installer with USEINTEGRATEDSECURITY=1 the custom action get invoked twice instead on once: <SetPropertyId="IntegratedSecurity"Value=""[INSTALLDIR]db2mobileSQLPackage.exe"/server:[SERVERNAME]/database:[DATABASENAME]/quiet/makedatabase" After="InstallFiles"Sequence="execute">$db2mobileSQLPackager.Packages>2</SetProperty> <SetPropertyId="SqlAuthentication"Value=""[INSTALLDIR]db2mobileSQLPackage.exe"/server:[SERVERNAME]/database:[DATABASENAME]/username:[DBUSERNAME]/password:[PASSWORD]/quiet/makedatabase" After="InstallFiles"Sequence="execute">$db2mobileSQLPackager.Packages>2</SetProperty> <CustomActionId="IntegratedSecurity"BinaryKey="WixCA"DllEntry="CAQuietExec"Execute="deferred"Return="check"Impersonate="no"/> <CustomActionId="SqlAuthentication"BinaryKey="WixCA"DllEntry="CAQuietExec"Execute="deferred"Return="check"Impersonate="no"/> <InstallExecuteSequence> <CustomAction="IntegratedSecurity"After="SetIntegratedSecurity">$db2mobileSQLPackager.Packages>2 AND USEINTEGRATEDSECURITY=1</Custom> <CustomAction="SqlAuthentication"After="SetSqlAuthentication">$db2mobileSQLPackager.Packages>2</Custom> </InstallExecuteSequence> I would like to rectify the sequencing so as to invoke the CAQuietExec Custom Action only once when running IntegratedSecurity thancxz Kagiso ________________________________ From:Kagiso Seboni <kagisoseb...@yahoo.com> To: blairlmu...@msn.com Sent: Mon, July 5, 2010 12:49:01 PM Subject: Fw: [WiX-users] Fw: EnterpriseSMS Wix Installation ________________________________ From:Kagiso Seboni <kagisoseb...@yahoo.com> To: Blair <os...@live.com> Sent: Mon, July 5, 2010 12:42:11 PM Subject: Re: [WiX-users] Fw: EnterpriseSMS Wix Installation 1. For clarification db2mobileSQLPackage.exe can be invoked in two kind of ways 1st with the servername:[SERVERNAME] and databasename:[DATABASENAME] properties set for Windows Authentication whenever USEINTEGRATEDSECURITY=1 which is checked from the UI <SetPropertyId="IntegratedSecurity"Value=""[INSTALLDIR]db2mobileSQLPackage.exe"/server:[SERVERNAME]/database:[DATABASENAME]/quiet/makedatabase" After="InstallFiles"Sequence="execute">$db2mobileSQLPackager.Packages>2 AND USEINTEGRATEDSECURITY=1</SetProperty> 2. 2nd db2mobileSQLPackage.exe can be invoked servername:[SERVERNAME], databasename:[DATABASENAME], username:[DBUSERNAME] and password:[PASSWORD] properties set for typical SQL Severve Authentication whenever USEINTEGRATEDSECURITY=0 which is unchecked from the UI <SetPropertyId="SqlAuthentication"Value=""[INSTALLDIR]db2mobileSQLPackage.exe"/server:[SERVERNAME]/database:[DATABASENAME]/username:[DBUSERNAME]/password:[PASSWORD]/quiet/makedatabase" After="InstallFiles"Sequence="execute">$db2mobileSQLPackager.Packages>2 AND USEINTEGRATEDSECURITY=0</SetProperty> The object now would be to create 2 independent Custom Actions which will get executed depending on the value of USEINTEGRATEDSECURITY <CustomActionId="IntegratedSecurity"BinaryKey="WixCA"DllEntry="CAQuietExec"Execute="deferred"Return="check"Impersonate="no"/> <CustomActionId="SqlAuthentication"BinaryKey="WixCA"DllEntry="CAQuietExec"Execute="deferred"Return="check"Impersonate="no"/> Similarly the InstallExecuteSequence for the actually invocation of my custom actions: <InstallExecuteSequence> <!--<Custom Action="Database.Install.Properties" After="InstallFiles">$db2mobileSQLPackager.Packages>2 </Custom> <Custom Action="Database.Install.Properties.Sql" After="Database.Install.Properties">$db2mobileSQLPackager.Packages>2 AND USEINTEGRATEDSECURITY=0</Custom> <Custom Action="Database.Install" After="Database.Install.Properties.Sql">$db2mobileSQLPackager.Packages>2 AND USEINTEGRATEDSECURITY=1</Custom>--> <CustomAction="IntegratedSecurity"After="SetIntegratedSecurity">$db2mobileSQLPackager.Packages>2</Custom> <CustomAction="SqlAuthentication"After="SetSqlAuthentication">$db2mobileSQLPackager.Packages>2</Custom> </InstallExecuteSequence> This sequencing compiles with no errors.., for if i follow your example and Unresolved Reference to Symbol 'Custom Action : InstallExecuteSequence/SetIntegratedSecurity' ensues Regards Kagiso If that is indeed the case I have two ideas, one similar to what you have done, and the other may appear easier to understand. I will present the second. <SetPropertyId="IntegratedSecurity"Value="/username:[DBUSERNAME]/password:[PASSWORD]"After="InstallFiles" Sequence="execute">$db2mobileSQLPackager.Packages>2 AND USEINTEGRATEDSECURITY=1</SetProperty> <SetPropertyId="Database.Install"Value=""[INSTALLDIR]db2mobileSQLPackage.exe"/server:[SERVERNAME]/database:[DATABASENAME][IntegratedSecurity]/quiet/makedatabase"After="SetIntegratedSecurity" Sequence="execute">$db2mobileSQLPackager.Packages>2</SetProperty> ERROR LIST: Unresolved Reference to symbol 'CustomAction: InstallExecuteSequence/SetIntegratedSecurity <CustomActionId="Database.Install"BinaryKey="WixCA"DllEntry="CAQuietExec"Execute="deferred"Return="check"Impersonate="no"/> <InstallExecuteSequence> <CustomAction="Database.Install"After="SetDatabase.Install">$db2mobileSQLPackager.Packages>2</Custom> </InstallExecuteSequence> From:Kagiso Seboni [mailto:kagisoseb...@yahoo.com] Sent: Friday, July 02, 2010 4:21 AM To: Blair Subject: Re: [WiX-users] Fw: EnterpriseSMS Wix Installation The purpose of having 2 custom actions using the same property is because of SQLPackage component that can take [ServerName] and [DatabaseName] or alternatively: [Servername] , [DatabaseName], [DBUserName] and [Password] properties.... but either execution path requires the CAQuietExec Custom Action. <CustomActionId="Database.Install.Properties"Property="Database.Install" Value=""[INSTALLDIR]db2mobileSQLPackage.exe"/server:[SERVERNAME]/database:[DATABASENAME]/quiet/makedatabase"Execute="immediate"/> <CustomActionId="Database.Install.Properties.Sql"Property="Database.Install" Value=""[INSTALLDIR]db2mobileSQLPackage.exe"/server:[SERVERNAME]/database:[DATABASENAME]/username:[DBUSERNAME]/password:[PASSWORD]/quiet/makedatabase"Execute="immediate"/> <CustomActionId="Database.Install"BinaryKey="WixCA"DllEntry="CAQuietExec"Execute="deferred"Return="check"Impersonate="no"/> The InstallExecuteSequence which sequences the execution of my Custom Actions: <InstallExecuteSequence> <CustomAction="Database.Install.Properties"After="InstallFiles">$db2mobileSQLPackager.Packages>2 </Custom> <CustomAction="Database.Install.Properties.Sql"After="Database.Install.Properties">$db2mobileSQLPackager.Packages>2 AND USEINTEGRATEDSECURITY=0</Custom> <CustomAction="Database.Install"After="Database.Install.Properties.Sql">$db2mobileSQLPackager.Packages>2 AND USEINTEGRATEDSECURITY=1</Custom> </InstallExecuteSequence> SQLPackage component described in the Directory tag: <ComponentId="db2mobileSQLPackager.Packages"Guid="9AE25F26-602C-4148-B223-A3FD8AC0AA45"> <FileId="db2mobileSQLPackage"Name="db2mobileSQLPackage.exe"KeyPath="yes"Vital="yes" DiskId="1"Source="db2mobileSQLPackage.exe"/> <RegistryKeyId='Database.State.Server'Root='HKLM'Key='SOFTWARE\EnterpriseSMS'Action='createAndRemoveOnUninstall'> <RegistryValueType='string'Name='ServerName'Value='[SERVERNAME]'/> </RegistryKey> <RegistryKeyId='Database.State.Database'Root='HKLM'Key='SOFTWARE\EnterpriseSMS'Action='createAndRemoveOnUninstall'> <RegistryValueType='string'Name='DatabaseName'Value='[DATABASENAME]'/> </RegistryKey> <RegistryKeyId='Database.State.Username'Root='HKLM'Key='SOFTWARE\EnterpriseSMS'Action='createAndRemoveOnUninstall'> <RegistryValueType='string'Name='DBUserName'Value='[DBUSERNAME]'/> </RegistryKey> <RegistryKeyId='Database.State.Password'Root='HKLM'Key='SOFTWARE\EnterpriseSMS'Action='createAndRemoveOnUninstall'> <RegistryValueType='string'Name='Password'Value='[PASSWORD]'/> </RegistryKey> <RegistryKeyId='Database.State.Integrated'Root='HKLM'Key='SOFTWARE\EnterpriseSMS'Action='createAndRemoveOnUninstall'> <RegistryValueType='string'Name='IntegratedSecurity'Value='[USEINTEGRATEDSECURITY]'/> </RegistryKey> </Component> The following code component is from the <UI> fragment: <ControlId="IntegratedSecurityCheckBox"Type="CheckBox"X="45"Y="123"Text="Use Integrated Security"Property="USEINTEGRATEDSECURITY"Width="200"Height="15"CheckBoxValue="1"/> <ControlId="UserNameLabel"Type="Text"X="45"Y="148"Width="100"Height="18"TabSkip="no"Text="&User Name:"/> <ControlId="UserNameEdit"Type="Edit"X="115"Y="148"Width="110"Height="18"Property="DBUSERNAME"Text="{50}"> <ConditionAction="disable">USEINTEGRATEDSECURITY = 1</Condition> <ConditionAction="enable"><![CDATA[USEINTEGRATEDSECURITY <>1]]></Condition> </Control> <ControlId="PasswordLabel"Type="Text"X="45"Y="173"Width="100"Height="18"TabSkip="no"Text="&Password:"/> <ControlId="PasswordEdit"Type="Edit"X="115"Y="173"Width="110"Height="18"Property="PASSWORD"Password="no"Text="{50}"> <ConditionAction="disable">USEINTEGRATEDSECURITY = 1</Condition> <ConditionAction="enable"><![CDATA[USEINTEGRATEDSECURITY <>1]]></Condition> </Control> The objective is to get both custom actions to execute notwithstanding whichever combination of Windows Authentication or SQLServer Authentication properties.: Appreciate ur Help Kagiso ________________________________ From:Blair <os...@live.com> To: Kagiso Seboni <kagisoseb...@yahoo.com> Sent: Fri, July 2, 2010 9:54:07 AM Subject: RE: [WiX-users] Fw: EnterpriseSMS Wix Installation You appear to have two actions that set properties, and yet only one action that calls an executable. There is a reason I used <SetProperty> instead of <CustomAction> elements in the example I sent you. <SetProperty> creates property-setting custom actions and sets their scheduling all in one tag. <CustomAction> elements require corresponding <Custom> elements to schedule them, and thus tend to be more verbose overall (too many tags for the actions you are trying to use). Also, you test the USEINTEGRATEDSECURITY property in your conditions. What exactly is your aim with these two command-lines? Are the two different command-lines intended to be mutually exclusive? If they are to be mutually exclusive, then it makes sense to have two property-setting CAs and only one CAQuietExec CA. However, if that is the case, you have several problems with your conditions WRT the USEINTEGRATEDSECURITY property and the command-line-related property you are setting to pass to that CA. Please explain. From:Kagiso Seboni [mailto:kagisoseb...@yahoo.com] Sent: Thursday, July 01, 2010 11:57 PM To: Blair Subject: Re: [WiX-users] Fw: EnterpriseSMS Wix Installation HoLLa Blair Your insight was very helpful in being able to use custom actions with my WiX Installer MSI Package. To actually test invocation of custom actions one would need to run the realease version of the package.msi..... I've created the following custom actions below, but now only the one custom action is invoked this one fails to be invoked: Database.Install.Properties.Sql"After="Database.Install.Properties">$db2mobileSQLPackager.Packages>2 AND USEINTEGRATEDSECURITY=0</Custom> from the InstallExecuteSequence and the other fails to get started : <CustomActionId="Database.Install.Properties"Property="Database.Install" Value=""[INSTALLDIR]db2mobileSQLPackage.exe"/server:[SERVERNAME]/database:[DATABASENAME]/quiet/makedatabase"Execute="immediate"/> <CustomActionId="Database.Install.Properties.Sql"Property="Database.Install2" Value=""[INSTALLDIR]db2mobileSQLPackage.exe"/server:[SERVERNAME]/database:[DATABASENAME]/username:[DBUSERNAME]/password:[PASSWORD]/quiet/makedatabase"Execute="immediate"/> <!--_______________________________________________________________________________________________________________ --> <!--Note: QtExec custom action allows you to run an arbitrary command line in an MSI-based setup in silent mode. --> <!--QtExec is commonly used to suppress console windows that would otherwise appear appear when invoking --> <!--the executable directly. The custom action is located in the WixCA library, which is a part of the --> <!--WixUtilExtension --> <!--_______________________________________________________________________________________________________________ --> <CustomActionId="Database.Install"BinaryKey="WixCA"DllEntry="CAQuietExec"Execute="deferred"Return="check"Impersonate="no"/> <!--____________________________________________________________________________________________________________ --> <!--Our custom tasks run in the InstallExecuteSequence, the following install and uninstall conditions included --> <!--(componentname=2 means to run only on uninstall) vs (componentname>2 means to run only on install) --> <!--____________________________________________________________________________________________________________ --> <InstallExecuteSequence> <CustomAction="Database.Install.Properties"After="InstallFiles">$db2mobileSQLPackager.Packages>2 </Custom> <CustomAction="Database.Install.Properties.Sql"After="Database.Install.Properties">$db2mobileSQLPackager.Packages>2 AND USEINTEGRATEDSECURITY=0</Custom> <CustomAction="Database.Install"After="Database.Install.Properties.Sql">$db2mobileSQLPackager.Packages>2 AND USEINTEGRATEDSECURITY=1</Custom> </InstallExecuteSequence> ________________________________ From:Blair <os...@live.com> To: General discussion for Windows Installer XML toolset. <wix-users@lists.sourceforge.net> Cc: Kagiso Seboni <kagisoseb...@yahoo.com> Sent: Mon, June 28, 2010 8:59:35 PM Subject: RE: [WiX-users] Fw: EnterpriseSMS Wix Installation What happens in 3.x as compared to 2.0 is the following: the extension DLLs contain, as .net embedded resources, a “bound” wixlib that itself contains the <Binary> tags referring to the CA DLL(s) which are further bound inside of the wixlib itself. Simply by referencing the embedded Binary tag the fragment from the embedded wixlib that contains the <Binary> is included in your linking which places the DLL into the MSIs Binary table, from which it is then made available for your use during installation and maintenance transactions. The extension dll itself can’t be used during transactions, only during the build. It should not be necessary to write your own <Binary> element to use any of the WiX-supplied extensions. At most, a <BinaryRef> would be appropriate, but only if/when the instructions for that extension indicate that is needed. Here are the instructions for using the QAQuietExec supplied with 3.x: http://wix.sourceforge.net/manual-wix3/qtexec.htm. Remember that casing is significant in Windows Installer (and that includes WiX). When upgrading from 2.0 to 3.x, you should be able to use the WixCop.exe utility supplied in the toolset to help you transition the schema changes along with some of the structural changes such as this one. We feel it is more convenient to have just one WiX extension DLL that “contains” everything needed for its consumption, instead of the trifecta of extension dll, ca dll, and wixlib that was required to be present during builds in 2.0. This feature also makes distribution of third-party extension dlls easier (although it requires more build-knowledge) for the 3.x toolset vs. the 2.0 experience. It also makes the toolset more stable because the extension dll’s code can depend on knowing that the ca and wixlib are always present and haven’t likely been corrupted or lost. If you are using tutorials or example code designed for 2.0, you will need to upgrade those examples. From:Kagiso Seboni [mailto:kagisoseb...@yahoo.com] Sent: Monday, June 28, 2010 11:10 AM To: Blair Subject: Re: [WiX-users] Fw: EnterpriseSMS Wix Installation Basically i cannot find the wixca.dll anywhere on the hard disk even upon successful installation of the Windows Installer XML v3.5 This is the report you'd requested: which includes some of the compilation errors i've been getting whenever trying the specify the path to the binary file wixca.dll which is apparently part of the WixUtilExtension.dll <report-redacted-due-to-verbosity/> ------------------------------------------------------------------------------ This SF.net email is sponsored by Sprint What will you do first with EVO, the first 4G phone? Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first _______________________________________________ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users