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="SqlAuthentication"Value=""[INSTALLDIR]db2mobileSQLPackage.exe"/server:[SERVERNAME]/database:[DATABASENAME]/username:[DBUSERNAME]/password:[PASSWORD]/quiet/makedatabase" <
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><
<
</
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
r
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
e 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
Y = 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>CustomAction="IntegratedSecurity"After="SetIntegratedSecurity">$db2mobileSQLPackager.Packages>2
2 AND
USEINTEGRATEDSECURITY=1</Custom>CustomAction="SqlAuthentication"After="SetSqlAuthentication">$db2mobileSQLPackager.Packages>2
AND USEINTEGRATEDSECURITY=0</Custom>InstallExecuteSequence>
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 <[email protected]>
To: Kagiso Seboni <[email protected]>
Cc: Blair wix-users <[email protected]>
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:[email protected]]
Sent: Monday, July 05, 2010 5:19 AM
To: [email protected]
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 <[email protected]>
To: [email protected]
Sent: Mon, July 5, 2010 12:49:01 PM
Subject: Fw: [WiX-users] Fw: EnterpriseSMS Wix Installation
________________________________
From:Kagiso Seboni <[email protected]>
To: Blair <[email protected]>
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:[email protected]]
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 <[email protected]>
To: Kagiso Seboni <[email protected]>
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:[email protected]]
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 <[email protected]>
To: General discussion for Windows Installer XML toolset.
<[email protected]>
Cc: Kagiso Seboni <[email protected]>
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:[email protected]]
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/>
CustomActionId="IntegratedSecurity"BinaryKey="WixCA"DllEntry="CAQuietExec"Execute="deferred"Return="check"Impersonate="no"/>After="InstallFiles"Sequence="execute">$db2mobileSQLPackager.Packages>2</SetProperty> SetPropertyId="IntegratedSecurity"Value=""[INSTALLDIR]db2mobileSQLPackage.exe"/server:[SERVERNAME]/database:[DATABASENAME]/quiet/makedatabase"After="InstallFiles"Sequence="execute">$db2mobileSQLPackager.Packages>2</SetProperty>
------------------------------------------------------------------------------
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/wix-users