[wix-users] Some questions
William Fisher
wfisher at summa.com
Thu Jul 20 12:11:03 PDT 2017
The easiest way I can find to do this is util:RemoveFolderEx. It wipes the
entire folder. The problem is, I can't put it in the <Package> for SQL
Server or any other package. As you say, I can't delete files without the
SQL server being stopped, but the intention is to remove the SQL server
before we run this RemoveFolderEx call. It seems like I need to create an
installer for the Registry Key that I create, and then when we uninstall
that registry key, we also throw a RemoveFolderEx call into the component,
and it will delete everything. Can you think of a better way to do that?
Am I explaining it clearly?
Thanks,
Bill
On Wed, Jul 19, 2017 at 5:10 PM William Fisher <wfisher at summa.com> wrote:
> That's what I was afraid of. This version of the installer doesn't allow
> changing the file's location, so for now, that's not an issue. It will be
> once we update it to allow storing the database somewhere other than the
> default location.
>
> OK, thanks a lot for your help.
>
> On Wed, Jul 19, 2017 at 5:08 PM Hoover, Jacob <Jacob.Hoover at greenheck.com>
> wrote:
>
>> <RemoveFile .../> Just ensure you get your condition correct so you don't
>> accidentally remove it on upgrade. Also, unless you are controlling the
>> location of those files when it is initially created, you are going to need
>> to add some searches to find the actual location on the end users machine.
>> I wonder if you are going to be able to remove them without explicitly
>> stopping the SQL server in order to free any open file handles...
>>
>> -----Original Message-----
>> From: wix-users [mailto:wix-users-bounces at lists.wixtoolset.org] On
>> Behalf Of William Fisher
>> Sent: Wednesday, July 19, 2017 3:36 PM
>> To: WiX Toolset Users Mailing List <wix-users at lists.wixtoolset.org>
>> Subject: Re: [wix-users] Some questions
>>
>> The files left in C:\Program Files\Microsoft SQL
>> Server\MSSQL12.ApplicationDB caused the reinstall to fail. Is there a way
>> to delete those files?
>>
>> On Wed, Jul 19, 2017 at 4:29 PM William Fisher <wfisher at summa.com> wrote:
>>
>> > OK, install and uninstall worked. Thanks, everyone, for your help and
>> > patience with me. I'm reinstalling after an uninstall to see if the
>> > database files left by the uninstall will cause a problem in future
>> > installs. If that works, then I move on to .NET issues, which I think
>> > I'll start a new thread about that if I can't figure it out.
>> >
>> > On Wed, Jul 19, 2017 at 3:32 PM Hoover, Jacob
>> > <Jacob.Hoover at greenheck.com>
>> > wrote:
>> >
>> >> winerror.h 0x80070643
>> >> #define ERROR_INSTALL_FAILURE
>> >> Fatal error during installation.
>> >>
>> >> For more info, you should look at the MSI's log file.
>> >>
>> >> -----Original Message-----
>> >> From: wix-users [mailto:wix-users-bounces at lists.wixtoolset.org] On
>> >> Behalf Of William Fisher
>> >> Sent: Wednesday, July 19, 2017 2:27 PM
>> >> To: WiX Toolset Users Mailing List <wix-users at lists.wixtoolset.org>
>> >> Subject: Re: [wix-users] Some questions
>> >>
>> >> OK, moved past that problem by removing the [] around the SQL user ID
>> >> and Password in the database installer MSI. Now I'm getting this
>> >> when running the database installer:
>> >>
>> >> [2060:2064][2017-07-19T15:20:45]e000: Error 0x80070643: Failed to
>> >> install MSI package.
>> >> [2060:2064][2017-07-19T15:20:45]e000: Error 0x80070643: Failed to
>> >> execute MSI package.
>> >> [1F70:1F74][2017-07-19T15:20:45]e000: Error 0x80070643: Failed to
>> >> configure per-machine MSI package.
>> >> [1F70:1F74][2017-07-19T15:20:45]i319: Applied execute package:
>> >> Client.Application.Database.Installer, result: 0x80070643, restart:
>> >> None
>> >> [1F70:1F74][2017-07-19T15:20:45]e000: Error 0x80070643: Failed to
>> >> execute MSI package.
>> >>
>> >> Would this be due to the exclamation mark in the password? (the
>> >> password is 'Password1!' without quotes).
>> >>
>> >> On Wed, Jul 19, 2017 at 1:51 PM William Fisher <wfisher at summa.com>
>> wrote:
>> >>
>> >> > I have not used any Requires/Provides. I have tried manually
>> >> > uninstalling the MSI itself. An interesting development, however.
>> >> >
>> >> > In the burn log, I get this (no longer getting the "found dependents"
>> >> > error):
>> >> >
>> >> > [1818:298C][2017-07-19T13:31:01]i301: Applying execute package:
>> >> > Client.Application.Database.Installer, action: Uninstall, path:
>> >> > (null),
>> >> > arguments: ' ARPSYSTEMCOMPONENT="1" MSIFASTINSTALL="7"'
>> >> > [1818:298C][2017-07-19T13:31:01]w307: Attempted to uninstall absent
>> >> > package: Client.Application.Database.Installer. Continuing...
>> >> > [2AF0:2A88][2017-07-19T13:31:01]i319: Applied execute package:
>> >> > Client.Application.Database.Installer, result: 0x0, restart: None
>> >> > [1818:298C][2017-07-19T13:31:01]i329: Removed package dependency
>> >> provider:
>> >> > {57CE8281-F8CA-427E-B22F-ED2B6F9BD4C5}, package:
>> >> > Client.Application.Installer32
>> >> > [1818:298C][2017-07-19T13:31:01]i326: Removed dependency:
>> >> > {49e9682c-aefe-4bd6-b5b1-a472d60d0144} on package provider:
>> >> > {8113DD22-3416-4CC2-9EA1-3A4E46AC034A}, package
>> >> > Client.Application.Installer64
>> >> > [1818:298C][2017-07-19T13:31:01]i329: Removed package dependency
>> >> provider:
>> >> > {8113DD22-3416-4CC2-9EA1-3A4E46AC034A}, package:
>> >> > Client.Application.Installer64
>> >> >
>> >> > The Client.Application.Database.Installer.log has this:
>> >> >
>> >> > === Verbose logging started: 7/19/2017 13:35:44 Build type: SHIP
>> >> > UNICODE
>> >> > 5.00.10011.00 Calling process: C:\ProgramData\Package
>> >> >
>> Cache\{49e9682c-aefe-4bd6-b5b1-a472d60d0144}\Client.Application.Setup.
>> >> > exe
>> >> > ===
>> >> > MSI (c) (3C:A0) [13:35:44:419]: Resetting cached policy values MSI
>> >> > (c)
>> >> > (3C:A0) [13:35:44:419]: Machine policy value 'Debug' is 3 MSI (c)
>> >> > (3C:A0) [13:35:44:419]: ******* RunEngine:
>> >> > ******* Product: {16BE52F2-6F0E-477D-A38C-D07A5DA5A2A7}
>> >> > ******* Action:
>> >> > ******* CommandLine: ********** MSI (c) (3C:A0)
>> >> > [13:35:44:419]: Client-side and UI is none or basic:
>> >> > Running entire install on the server.
>> >> > MSI (c) (3C:A0) [13:35:44:419]: Grabbed execution mutex.
>> >> > MSI (c) (3C:A0) [13:35:44:576]: Cloaking enabled.
>> >> > MSI (c) (3C:A0) [13:35:44:576]: Attempting to enable all disabled
>> >> > privileges before calling Install on Server MSI (c) (3C:A0)
>> >> > [13:35:44:576]: Incrementing counter to disable shutdown.
>> >> > Counter after increment: 0
>> >> > MSI (s) (A4:DC) [13:35:44:591]: Running installation inside
>> >> > multi-package transaction {16BE52F2-6F0E-477D-A38C-D07A5DA5A2A7}
>> >> > MSI (s) (A4:DC) [13:35:44:591]: Grabbed execution mutex.
>> >> > MSI (s) (A4:E4) [13:35:44:591]: Resetting cached policy values MSI
>> >> > (s)
>> >> > (A4:E4) [13:35:44:591]: Machine policy value 'Debug' is 3 MSI (s)
>> >> > (A4:E4) [13:35:44:591]: ******* RunEngine:
>> >> > ******* Product: {16BE52F2-6F0E-477D-A38C-D07A5DA5A2A7}
>> >> > ******* Action:
>> >> > ******* CommandLine: ********** MSI (s) (A4:E4)
>> >> > [13:35:44:591]: Machine policy value 'DisableUserInstalls'
>> >> > is 0
>> >> > MSI (s) (A4:E4) [13:35:44:591]: MainEngineThread is returning 1605
>> >> > MSI
>> >> > (s) (A4:DC) [13:35:44:591]: User policy value 'DisableRollback' is
>> >> > 0 MSI (s) (A4:DC) [13:35:44:591]: Machine policy value
>> 'DisableRollback'
>> >> > is 0 MSI (s) (A4:DC) [13:35:44:591]: Incrementing counter to
>> >> > disable
>> >> shutdown.
>> >> > Counter after increment: 0
>> >> > MSI (s) (A4:DC) [13:35:44:591]: Note: 1: 1402 2:
>> >> > HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Instal
>> >> > ler
>> >> > \Rollback\Scripts
>> >> > 3: 2
>> >> > MSI (s) (A4:DC) [13:35:44:607]: Note: 1: 1402 2:
>> >> > HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Instal
>> >> > ler
>> >> > \Rollback\Scripts
>> >> > 3: 2
>> >> > MSI (s) (A4:DC) [13:35:44:607]: Decrementing counter to disable
>> >> shutdown.
>> >> > If counter >= 0, shutdown will be denied. Counter after decrement:
>> >> > -1 MSI (c) (3C:A0) [13:35:44:607]: Decrementing counter to disable
>> >> shutdown.
>> >> > If counter >= 0, shutdown will be denied. Counter after decrement:
>> >> > -1 MSI (c) (3C:A0) [13:35:44:607]: MainEngineThread is returning
>> >> > 1605 === Verbose logging stopped: 7/19/2017 13:35:44 ===
>> >> >
>> >> > It looks like 1605 may be "This action is only valid for products
>> >> > that are installed." as in, I'm trying to uninstall a package
>> >> > that's not
>> >> installed.
>> >> > Except my DETECT condition says it IS installed:
>> >> >
>> >> > [2B98:2BF0][2017-07-19T13:46:43]i101: Detected package:
>> >> > CertificatePackage, state: Absent, cached: None
>> >> > [2B98:2BF0][2017-07-19T13:46:43]i101: Detected package: NetFx462,
>> state:
>> >> > Present, cached: None
>> >> > [2B98:2BF0][2017-07-19T13:46:43]i101: Detected package:
>> >> > SQLEXPR_x64_ENU.exe, state: Absent, cached: None
>> >> > [2B98:2BF0][2017-07-19T13:46:43]i101: Detected package:
>> >> > SQLEXPR_x86_ENU.exe, state: Absent, cached: None
>> >> > [2B98:2BF0][2017-07-19T13:46:43]i101: Detected package:
>> >> > Client.Application.Installer64, state: Absent, cached: None
>> >> > [2B98:2BF0][2017-07-19T13:46:43]i101: Detected package:
>> >> > Client.Application.Installer32, state: Absent, cached: None
>> >> > [2B98:2BF0][2017-07-19T13:46:43]i101: Detected package:
>> >> > Client.Application.Database.Installer, state: Present, cached: None
>> >> >
>> >> > Here's the bundle.wxs section that calls the MSI:
>> >> >
>> >> > <Fragment>
>> >> > <PackageGroup Id="Client.Application.Database.Installer">
>> >> > <MsiPackage
>> >> > Name="Client.Application.Database.Installer"
>> >> > Compressed="yes"
>> >> > SourceFile="C:\Users\310284944\Documents\Visual Studio
>> >> >
>> >> 2015\Projects\Client.Application.Setup\Client.Application.Database.In
>> >> staller\bin\Debug\en-us\Client.Application.Database.Installer.msi"/>
>> >> > </PackageGroup>
>> >> > </Fragment>
>> >> >
>> >> > And here's the MSI XML:
>> >> >
>> >> > <?xml version="1.0" encoding="UTF-8"?> <?include
>> >> > Includes\ApplicationVariables.wxi?>
>> >> > <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
>> >> > xmlns:sql="http://schemas.microsoft.com/wix/SqlExtension"
>> >> > xmlns:util="http://schemas.microsoft.com/wix/UtilExtension" >
>> >> > <Product Id="*"
>> >> > Name="!(loc.ProductName)"
>> >> > Language="1033"
>> >> > Version="1.0.0.0"
>> >> > Manufacturer="!(loc.Manufacturer)"
>> >> > UpgradeCode="9f87f1dd-89ec-4979-bf25-9f0245004507">
>> >> > <Package InstallerVersion="200"
>> >> > Compressed="yes"
>> >> > InstallScope="perMachine" /> <MajorUpgrade
>> >> > DowngradeErrorMessage="A newer version of [ProductName] is already
>> >> > installed." /> <Feature Id="SQLDatabase"
>> >> > Title="Client.Application.Database.Installer"
>> >> > Level="1">
>> >> > <ComponentRef Id="SQLDatabaseComponent" /> </Feature>
>> >> > <Media Id="1" />
>> >> > <Property Id="SQLServerName">(Local)</Property>
>> >> > <Property Id="SQLInstance">$(var.InstanceName)</Property>
>> >> > <Property Id="SQLDBName">TonicDB</Property>
>> >> > <Property Id="SQLUsername">sa</Property>
>> >> > <Property Id="SQLPassword">Password1!</Property>
>> >> > </Product>
>> >> > <Fragment>
>> >> > <util:User Id="SQLUser"
>> >> > Name="[SQLUsername]"
>> >> > Password="[SQLPassword]" /> <Binary Id="CreateSQL"
>> >> > SourceFile="output\DBCreate.sql" /> <Directory Id="TARGETDIR"
>> >> > Name="SourceDir">
>> >> > <Component Id="SQLDatabaseComponent"
>> >> > Guid="{D1B62CE5-FFEE-43E9-A298-C7DAB06D7D38}">
>> >> > <sql:SqlDatabase Id="ApplicationDB"
>> >> > Server="[SQLServerName]"
>> >> > Instance="[SQLInstance]"
>> >> > Database="[SQLDBName]"
>> >> > User="SQLUser"
>> >> > CreateOnInstall="yes"
>> >> > DropOnUninstall="yes">
>> >> > <sql:SqlScript Id="CreateSQLScript" BinaryKey="CreateSQL"
>> >> > ExecuteOnInstall="yes"/>
>> >> > </sql:SqlDatabase>
>> >> > <RegistryKey Root="HKLM"
>> >> > Key="Software\Client\Application">
>> >> > <RegistryValue Type="integer" Name="Installed" Value="1"
>> >> > KeyPath="yes"/>
>> >> > <RegistryValue Type="string" Value="Default Value"/>
>> >> > </RegistryKey>
>> >> > </Component>
>> >> > </Directory>
>> >> > </Fragment>
>> >> > </Wix>
>> >> >
>> >> > On Wed, Jul 19, 2017 at 1:37 PM Hoover, Jacob
>> >> > <Jacob.Hoover at greenheck.com>
>> >> > wrote:
>> >> >
>> >> >> Were you at one time using Requires/Provides in your bundle
>> authoring?
>> >> >> Have you tried manually uninstalling the MSI's, or testing on a
>> >> >> clean
>> >> VM?
>> >> >>
>> >> >> -----Original Message-----
>> >> >> From: wix-users [mailto:wix-users-bounces at lists.wixtoolset.org] On
>> >> >> Behalf Of William Fisher
>> >> >> Sent: Wednesday, July 19, 2017 10:19 AM
>> >> >> To: WiX Toolset Users Mailing List
>> >> >> <wix-users at lists.wixtoolset.org>
>> >> >> Subject: Re: [wix-users] Some questions
>> >> >>
>> >> >> The bundle.wxs was included in my most recent message. For the
>> >> >> other
>> >> >> question:
>> >> >>
>> >> >> OnPackageDetectComplete() {
>> >> >> var package = _packages.FirstOrDefault(x =>
>> >> >> x.PackageId == e.PackageId);
>> >> >> if (package != null)
>> >> >> {
>> >> >> package.CurrentState = e.State;
>> >> >> } else { //throw exception }
>> >> >>
>> >> >> OnDetectComplete() {
>> >> >> BootstrapperApplication.DetectPackageComplete -=
>> >> >> OnDetectPackageComplete;
>> >> >> BootstrapperApplication.DetectComplete -=
>> OnDetectComplete;
>> >> >> BeginPlanningPhase();
>> >> >> }
>> >> >>
>> >> >> OnPlanPackageBegin() {
>> >> >> SetRequestState(e, InstallToBitDepth.Both,
>> >> >> SetupState.InstallAfterReboot); // For example. Code for
>> >> >> SetRequestState is below. Each package has a separate line in a
>> >> >> case statement. This is the one for the DatabaseInstaller.
>> >> >> }
>> >> >>
>> >> >> OnPlanComplete() {
>> >> >> BeginApply();
>> >> >> }
>> >> >>
>> >> >> private void SetRequestState(PlanPackageBeginEventArgs e,
>> >> >> InstallToBitDepth targetBitDepth, SetupState setupTiming)
>> >> >> {
>> >> >> bool isTarget64Bit = targetBitDepth ==
>> >> >> InstallToBitDepth.Only64Bit;
>> >> >> bool isMatchedBitDepth = (targetBitDepth ==
>> >> >> InstallToBitDepth.Both) || isTarget64Bit ==
>> >> >> _is64BitOperatingSystem;
>> >> >>
>> >> >> BootstrapperApplication.Engine.Log(LogLevel.Verbose,
>> >> >> "Package: " + e.PackageId + " - isMatchedBitDepth: "
>> >> >> + isMatchedBitDepth + " - isTarget64Bit: " +
>> >> >> isTarget64Bit);
>> >> >>
>> >> >> // Default is to do nothing.
>> >> >> e.State = RequestState.None;
>> >> >> if (isMatchedBitDepth)
>> >> >> {
>> >> >> if (_launchAction == LaunchAction.Install)
>> >> >> {
>> >> >> if (_setupState == setupTiming)
>> >> >> {
>> >> >> e.State = RequestState.Present;
>> >> >> }
>> >> >> }
>> >> >> else if (_launchAction == LaunchAction.Uninstall)
>> >> >> {
>> >> >> e.State = RequestState.Absent;
>> >> >> }
>> >> >> else
>> >> >> {
>> >> >>
>> >> BootstrapperApplication.Engine.Log(LogLevel.Verbose,
>> >> >> "Illegal launch action state: " +
>> >> >> e.PackageId
>> >> + "
>> >> >> - " + _launchAction);
>> >> >> throw new Exception("Illegal launch action
>> state:
>> >> >> " + e.PackageId + " - " +
>> >> >> _launchAction);
>> >> >> }
>> >> >> }
>> >> >> }
>> >> >>
>> >> >> If you want more detail, that's fine, but I have to sanitize so it
>> >> >> would take some time to provide.
>> >> >>
>> >> >> On Wed, Jul 19, 2017 at 10:55 AM Hoover, Jacob <
>> >> >> Jacob.Hoover at greenheck.com>
>> >> >> wrote:
>> >> >>
>> >> >> > So you are using a custom BA... Are you certain you don't have
>> >> >> > another fragment in your bundle authoring with Requires/Provides?
>> >> >> > If not, what is your BA doing on any of the OnPlan* and
>> >> >> > OnDetect*
>> >> >> callbacks?
>> >> >> >
>> >> >> > -----Original Message-----
>> >> >> > From: wix-users [mailto:wix-users-bounces at lists.wixtoolset.org]
>> >> >> > On Behalf Of William Fisher
>> >> >> > Sent: Tuesday, July 18, 2017 2:38 PM
>> >> >> > To: WiX Toolset Users Mailing List
>> >> >> > <wix-users at lists.wixtoolset.org>
>> >> >> > Subject: Re: [wix-users] Some questions
>> >> >> >
>> >> >> > Sadly, that doesn't tell me anything I didn't know. The problem
>> >> >> > is, this MSI is the LAST thing to install for this bootstrapper
>> >> >> > (and should be the first thing uninstalled). The "other package"
>> >> >> > doesn't actually exist. The name (Where I had "Application Name"
>> >> >> > in the last
>> >> >> > message) is the name of the installer itself. I'll include the
>> >> >> > bundle.wxs (for the bootstrapper) and the product.wxs from the
>> >> >> > MSI that's not being uninstalled below, edited only to remove
>> >> >> > client information. If I can get the bootstrapper to recognize
>> >> >> > that the offending MSI isn't actually installed, I'd be
>> >> >> > satisfied. But there
>> >> >> are no registry entries for that GUID, so...
>> >> >> >
>> >> >> > product.wxs (Individual MSI that won't uninstall)
>> >> >> >
>> >> >> > <?xml version="1.0" encoding="UTF-8"?> <?include
>> >> >> > Includes\Variables.wxi?> <Wix
>> >> >> > xmlns="http://schemas.microsoft.com/wix/2006/wi"
>> >> >> > xmlns:sql="http://schemas.microsoft.com/wix/SqlExtension"
>> >> >> > xmlns:util="http://schemas.microsoft.com/wix/UtilExtension"
>> >> >> > > <Product Id="*"
>> >> >> > Name="!(loc.ProductName)"
>> >> >> > Language="1033"
>> >> >> > Version="1.0.0.0"
>> >> >> > Manufacturer="!(loc.Manufacturer)"
>> >> >> > UpgradeCode="9f87f1dd-89ec-4979-bf25-9f0245004507">
>> >> >> > <Package InstallerVersion="200"
>> >> >> > Compressed="yes"
>> >> >> > InstallScope="perMachine" /> <MajorUpgrade
>> >> >> > DowngradeErrorMessage="A newer version of [ProductName] is
>> >> >> > already installed." /> <Feature Id="SQLDatabase"
>> >> >> > Title="Application.Name.Database.Installer"
>> >> >> > Level="1">
>> >> >> > <ComponentRef Id="SQLDatabaseComponent" /> </Feature>
>> >> >> > <Media Id="1" />
>> >> >> > <Property Id="SQLServerName">(Local)</Property>
>> >> >> > <Property Id="SQLInstance">$(var.InstanceName)</Property>
>> >> >> > <Property Id="SQLDBName">ApplicationDB</Property>
>> >> >> > <Property Id="SQLUsername">sa</Property>
>> >> >> > <Property Id="SQLPassword">Password1!</Property>
>> >> >> > </Product>
>> >> >> > <Fragment>
>> >> >> > <util:User Id="SQLUser"
>> >> >> > Name="[SQLUsername]"
>> >> >> > Password="[SQLPassword]" /> <Binary Id="CreateSQL"
>> >> >> > SourceFile="output\DBCreate.sql" /> <Directory Id="TARGETDIR"
>> >> >> > Name="SourceDir">
>> >> >> > <Component Id="SQLDatabaseComponent"
>> >> >> > Guid="{D1B62CE5-FFEE-43E9-A298-C7DAB06D7D38}">
>> >> >> > <sql:SqlDatabase Id="ApplicationDB"
>> >> >> > Server="[SQLServerName]"
>> >> >> > Instance="[SQLInstance]"
>> >> >> > Database="[SQLDBName]"
>> >> >> > User="SQLUser"
>> >> >> > CreateOnInstall="yes"
>> >> >> > DropOnUninstall="yes">
>> >> >> > <sql:SqlScript Id="CreateSQLScript"
>> BinaryKey="CreateSQL"
>> >> >> > ExecuteOnInstall="yes"/>
>> >> >> > </sql:SqlDatabase>
>> >> >> > <RegistryKey Root="HKLM"
>> >> >> > Key="Software\Client\Application">
>> >> >> > <RegistryValue Type="integer" Name="Installed" Value="1"
>> >> >> > KeyPath="yes"/>
>> >> >> > <RegistryValue Type="string" Value="Default Value"/>
>> >> >> > </RegistryKey>
>> >> >> > </Component>
>> >> >> > </Directory>
>> >> >> > </Fragment>
>> >> >> > </Wix>
>> >> >> >
>> >> >> > bundle.wxs (Bootstrapper)
>> >> >> >
>> >> >> > 3:36 PM 7/18/2017<?xml version="1.0" encoding="UTF-8"?>
>> >> >> > <?include Includes/ApplicationVariables.wxi ?> <Wix xmlns="
>> >> >> > http://schemas.microsoft.com/wix/2006/wi"
>> >> >> > xmlns:util="http://schemas.microsoft.com/wix/UtilExtension"
>> >> >> >
>> >> >> > xmlns:netfx="http://schemas.microsoft.com/wix/NetFxExtension">
>> >> >> > <Bundle
>> >> >> > Name="$(var.ProductName)"
>> >> >> > Version="$(var.VersionNumber)"
>> >> >> > Manufacturer="$(var.ManufacturerName)"
>> >> >> > UpgradeCode="64857b79-4f2d-48ef-ae8a-08bab1d77294"
>> >> >> > Compressed="yes">
>> >> >> > <BootstrapperApplicationRef
>> >> Id="ManagedBootstrapperApplicationHost">
>> >> >> > <PayloadGroupRef Id="InstallerPayload" />
>> >> >> > </BootstrapperApplicationRef> <util:User Id="SQLsa"
>> >> >> > Name="[sa]"
>> >> >> > Password="[Password1!]" /> <Chain> <PackageGroupRef
>> >> >> > Id="CertificatePackage"/>
>> >> >> > <PackageGroupRef Id="NetFx462" After="CertificatePackage"/>
>> >> >> > <PackageGroupRef Id="SQLServerExpress2014_64Bit"/>
>> >> >> > <PackageGroupRef Id="SQLServerExpress2014_32Bit"/>
>> >> >> > <PackageGroupRef Id="Application64Bit"/>
>> >> >> > <PackageGroupRef Id="Application32Bit"/>
>> >> >> > <PackageGroupRef
>> >> >> > Id="Client.Application.Database.Installer"/>
>> >> >> > </Chain>
>> >> >> > </Bundle>
>> >> >> > <Fragment>
>> >> >> > <util:RegistrySearch
>> >> >> > Id="NETFRAMEWORK462"
>> >> >> > Variable="NETFRAMEWORK462"
>> >> >> > Root="HKLM"
>> >> >> > Key="SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full"
>> >> >> > Value="Install"
>> >> >> > Result="value"/>
>> >> >> > <WixVariable Id="WixMbaPrereqPackageId"
>> Value="NetFx462Redist" />
>> >> >> > <WixVariable Id="WixMbaPrereqLicenseUrl" Value="
>> >> >> > https://msdn.microsoft.com/en-us/library/ms994405.aspx"
>> >> >> Overridable="yes"
>> >> >> > />
>> >> >> > <PackageGroup Id="NetFx462">
>> >> >> > <ExePackage Id="NetFx462"
>> >> >> > Cache="no"
>> >> >> > Compressed="yes"
>> >> >> > PerMachine="yes"
>> >> >> > Permanent="yes"
>> >> >> > Vital="yes"
>> >> >> > Name="NDP462-KB3151800-x86-x64-AllOS-ENU.exe"
>> >> >> >
>> >> >> > SourceFile="redist\NDP462-KB3151800-x86-x64-AllOS-ENU.exe"
>> >> >> > DetectCondition="NETFRAMEWORK462"
>> >> >> > InstallCommand="/q /norestart"/>
>> >> >> > </PackageGroup>
>> >> >> > </Fragment>
>> >> >> > <Fragment>
>> >> >> > <PayloadGroup Id="InstallerPayload">
>> >> >> > <!-- TODO: determine relative sources to prevent errors
>> >> >> > when moving the solution -->
>> >> >> > <Payload
>> >> >> > SourceFile="C:\\Users\\310284944\\Documents\\Visual
>> >> >> > Studio
>> >> >> 2015\\Projects\\Client.Application.Setup\\ApplicationBootstrapper\
>> >> >> \bi n\\Debug\\ApplicationBootstrapper.dll"/>
>> >> >> > <Payload
>> >> >> > SourceFile="C:\\Users\\310284944\\Documents\\Visual
>> >> >> > Studio
>> >> >> 2015\\Projects\\Client.Application.Setup\\ApplicationBootstrapper\
>> >> >> \Bo
>> >> >> otstrapperCore.config"/>
>> >> >> > <Payload
>> >> >> > SourceFile="C:\\Users\\310284944\\Documents\\Visual
>> >> >> > Studio
>> >> >> 2015\\Projects\\Client.Application.Setup\\ApplicationBootstrapper\
>> >> >> \bi n\\Debug\\Microsoft.Deployment.WindowsInstaller.dll"/>
>> >> >> > <Payload
>> >> >> > SourceFile="C:\\Users\\310284944\\Documents\\Visual
>> >> >> > Studio
>> >> >> 2015\\Projects\\Client.Application.Setup\\Client.Application.Insta
>> >> >> lle
>> >> >> r.UserInterface\\bin\\Debug\\Client.Application.Installer.UserInte
>> >> >> rfa
>> >> >> ce.exe"/>
>> >> >> > <Payload
>> Name="redist\\NDP462-KB3151800-x86-x64-AllOS-ENU.exe"
>> >> >> >
>> >> >> > SourceFile="C:\\Users\\310284944\\documents\\visual
>> >> >> > studio
>> >> >> 2015\\Projects\\Client.Application.Setup\\Client.Application.Setup
>> >> >> \\r edist\\NDP462-KB3151800-x86-x64-AllOS-ENU.exe"/>
>> >> >> > </PayloadGroup>
>> >> >> > </Fragment>
>> >> >> > <Fragment>
>> >> >> > <PackageGroup Id="CertificatePackage">
>> >> >> > <MsiPackage Id="CertificatePackage"
>> >> >> > Name="Client.Application.Certificate.Installer"
>> >> >> > Compressed="yes"
>> >> >> > Visible="no"
>> >> >> >
>> >> >> > SourceFile="C:\\Users\\310284944\\Documents\\Visual
>> >> >> > Studio
>> >> >> >
>> >> >> >
>> >> >> 2015\\Projects\\Client.Application.Setup\\Client.Application.Certi
>> >> >> fic
>> >> >> ate.Installer\\bin\\Release\\Client.Application.Certificate.Instal
>> >> >> ler
>> >> >> .msi"/>
>> >> >> > </PackageGroup>
>> >> >> > </Fragment>
>> >> >> > <Fragment>
>> >> >> > <util:RegistrySearch
>> >> >> > Id='SearchForSQLServerExpress64'
>> >> >> > Variable="ISSQLSERVER64INSTALLED"
>> >> >> > Result="exists"
>> >> >> > Root="HKLM"
>> >> >> > Key="SOFTWARE\Microsoft\Microsoft SQL
>> >> >> > Server\MSSQL12.$(var.InstanceName)"
>> >> >> > Win64="yes" />
>> >> >> > <PackageGroup Id="SQLServerExpress2014_64Bit">
>> >> >> > <ExePackage Compressed="yes"
>> >> >> > PerMachine="yes"
>> >> >> > Cache="yes"
>> >> >> > Vital="yes"
>> >> >> > Permanent="no"
>> >> >> > InstallCommand='/ACTION=Install /Q
>> >> >> > /IACCEPTSQLSERVERLICENSETERMS /FEATURES=SQLEngine
>> >> >> > /INSTANCENAME=$(var.InstanceName)
>> >> >> > /SQLSYSADMINACCOUNTS=BUILTIN\Administrators /SECURITYMODE=SQL
>> >> >> > /SAPWD="Password1!" /SkipRules=RebootRequiredCheck'
>> >> >> > UninstallCommand='/ACTION=Uninstall /Q
>> >> >> > /FEATURES=SQLEngine /INSTANCENAME=$(var.InstanceName)'
>> >> >> > SourceFile='redist\SQLEXPR_x64_ENU.exe'
>> >> >> > Name="redist\SQLEXPR_x64_ENU.exe"
>> >> >> > DetectCondition="Installed OR
>> >> ISSQLSERVER64INSTALLED"
>> >> >> > InstallCondition="VersionNT64">
>> >> >> > <ExitCode Behavior="forceReboot"/>
>> >> >> > </ExePackage>
>> >> >> > </PackageGroup>
>> >> >> > </Fragment>
>> >> >> > <Fragment>
>> >> >> > <util:RegistrySearch
>> >> >> > Id='SearchForSQLServerExpress32'
>> >> >> > Variable="ISSQLSERVER32INSTALLED"
>> >> >> > Result="exists"
>> >> >> > Root="HKLM"
>> >> >> > Key="SOFTWARE\Microsoft\Microsoft SQL
>> >> >> > Server\MSSQL12.$(var.InstanceName)"
>> >> >> > Win64="no" />
>> >> >> > <PackageGroup Id="SQLServerExpress2014_32Bit">
>> >> >> > <ExePackage Compressed="yes"
>> >> >> > PerMachine="yes"
>> >> >> > Cache="yes"
>> >> >> > Vital="yes"
>> >> >> > Permanent="no"
>> >> >> > InstallCommand='/ACTION=Install /Q
>> >> >> > /IACCEPTSQLSERVERLICENSETERMS /FEATURES=SQLEngine
>> >> >> > /INSTANCENAME=$(var.InstanceName)
>> >> >> > /SQLSYSADMINACCOUNTS=BUILTIN\Administrators /SECURITYMODE=SQL
>> >> >> > /SAPWD="Password1!" /SkipRules=RebootRequiredCheck'
>> >> >> > UninstallCommand='/ACTION=Uninstall /Q
>> >> >> > /FEATURES=SQLEngine /INSTANCENAME=$(var.InstanceName)'
>> >> >> > SourceFile='redist\SQLEXPR_x86_ENU.exe'
>> >> >> > Name="redist\SQLEXPR_x86_ENU.exe"
>> >> >> > DetectCondition="Installed OR
>> >> ISSQLSERVER32INSTALLED"
>> >> >> > InstallCondition="NOT VersionNT64">
>> >> >> > <ExitCode Behavior="forceReboot"/>
>> >> >> > </ExePackage>
>> >> >> > </PackageGroup>
>> >> >> > </Fragment>
>> >> >> > <Fragment>
>> >> >> > <PackageGroup Id="Application64Bit">
>> >> >> > <MsiPackage
>> >> >> > Name="Client.Application.Installer64"
>> >> >> > Compressed="yes"
>> >> >> > SourceFile="C:\Users\310284944\Documents\Visual Studio
>> >> >> >
>> >> >>
>> >>
>> 2015\Projects\Client.Application.Setup\Client.Application.Installer64\bin\Debug\en-US\Client.Application.Installer64.msi"
>> >> >> > InstallCondition="VersionNT64" />
>> >> >> > </PackageGroup>
>> >> >> > </Fragment>
>> >> >> > <Fragment>
>> >> >> > <PackageGroup Id="Application32Bit">
>> >> >> > <MsiPackage
>> >> >> > Name="Client.Application.Installer32"
>> >> >> > Compressed="yes"
>> >> >> > SourceFile="C:\Users\310284944\Documents\Visual Studio
>> >> >> >
>> >> >>
>> >>
>> 2015\Projects\Client.Application.Setup\Client.Application.Installer32\bin\Debug\en-US\Client.Application.Installer32.msi"
>> >> >> > InstallCondition="NOT VersionNT64" />
>> >> >> > </PackageGroup>
>> >> >> > </Fragment>
>> >> >> > <Fragment>
>> >> >> > <!-- Placed here as this fragment is guaranteed to be
>> included.
>> >> >> > The Icon and Property can
>> >> >> > be placed anywhere in the WIX project. -->
>> >> >> > <Icon Id="shield.ico" SourceFile="Resources\Client_logo.ico"/>
>> >> >> > <Property Id="ARPPRODUCTICON" Value="shield.ico"/>
>> >> >> > <PackageGroup Id="Client.Application.Database.Installer">
>> >> >> > <MsiPackage
>> >> >> > Name="Client.Application.Database.Installer"
>> >> >> > Compressed="yes"
>> >> >> > SourceFile="C:\Users\310284944\Documents\Visual Studio
>> >> >> >
>> >> >> 2015\Projects\Client.Application.Setup\Client.Application.Database
>> >> >> .In
>> >> >> staller\bin\Debug\en-us\Client.Application.Database.Installer.msi"
>> >> >> />
>> >> >> > </PackageGroup>
>> >> >> > </Fragment>
>> >> >> > </Wix>
>> >> >> >
>> >> >> >
>> >> >> > On Tue, Jul 18, 2017 at 3:27 PM Hoover, Jacob
>> >> >> > <Jacob.Hoover at greenheck.com>
>> >> >> > wrote:
>> >> >> >
>> >> >> > > You'd have to provide some more info on your bundle authoring,
>> >> >> > > specifically around this MSI that isn't uninstalling and any
>> >> >> > > dependency authoring you've done. The logs indicate the engine
>> >> >> > > deciding to not uninstall this MSI because another package
>> >> >> > > depends upon it. So what you should be looking at is the
>> >> >> > > other package, and see what it's plan looks like.
>> >> >> > >
>> >> >> > > If you had a bad bundle before and you need to manually remove
>> >> >> > > the leftovers, you can manually uninstall the MSI's from the
>> >> command line.
>> >> >> > >
>> >> >> > > -----Original Message-----
>> >> >> > > From: wix-users
>> >> >> > > [mailto:wix-users-bounces at lists.wixtoolset.org]
>> >> >> > > On Behalf Of William Fisher
>> >> >> > > Sent: Tuesday, July 18, 2017 2:04 PM
>> >> >> > > To: WiX Toolset Users Mailing List
>> >> >> > > <wix-users at lists.wixtoolset.org>
>> >> >> > > Subject: Re: [wix-users] Some questions
>> >> >> > >
>> >> >> > > More on this installer:
>> >> >> > >
>> >> >> > > I have an MSI that's installed as part of my bootstrapper.
>> >> >> > > Installation seems to go fine, but when I try to uninstall, it
>> >> says:
>> >> >> > >
>> >> >> > > [23BC:2900][2017-07-18T11:14:36]w327: Will not uninstall
>> package:
>> >> >> > > Application.Name.Database.Installer, found dependents: 1
>> >> >> > > [23BC:2900][2017-07-18T11:14:36]w328: Found dependent:
>> >> >> > > {5c31825e-d40e-44ce-8fcb-1d9656eee9fb}, name: Application Name
>> >> >> > >
>> >> >> > > In this question:
>> >> >> > >
>> >> >> > > https://stackoverflow.com/questions/12828514/wix-burn-issue-un
>> >> >> > > ins
>> >> >> > > tal
>> >> >> > > l- fails-saying-found-dependent Brian Johnson says that it's
>> >> >> > > because I have stale data left over in the registry. This
>> >> >> > > very well may be the case, but when I do a search in the
>> >> >> > > registry for that GUID, regedit churns along for a while and
>> >> >> > > (so far) returns no results - it's still running minutes
>> >> >> > > later, it may have crashed and just not informed me of that.
>> >> >> > >
>> >> >> > > Has anyone solved this problem? I can't install now, because
>> >> >> > > the database installer is the thing that loads the SQL into
>> >> >> > > SQL Server, and since I don't have any tables, the app opens
>> >> >> > > but doesn't save or load any data in the DB and crashes when I
>> try.
>> >> >> > >
>> >> >> > > Thanks for any info.
>> >> >> > >
>> >> >> > >
>> >> >> > > On Mon, Jul 17, 2017 at 10:30 AM William Fisher
>> >> >> > > <wfisher at summa.com>
>> >> >> > wrote:
>> >> >> > >
>> >> >> > > > Nir Bar and Habib,
>> >> >> > > >
>> >> >> > > > Thanks very much for the input. I guess I didn't see the
>> >> >> > > > link to the supportedRuntime values somehow (definitely not
>> >> >> > > > that I'm frustrated, not that at all). I'm going to look at
>> >> >> > > > the mbapreq.thm and mbapreq.wxl to see if I can't just
>> >> >> > > > completely co-opt it. I feel like I'm doing something
>> >> >> > > > wrong, because this is a fairly simple set of tasks.
>> >> >> > > > Install a certificate if it's Win7SP1, run .NET
>> >> >> > > > installation, run SQL Server installation, reboot, run app
>> >> >> > > > installation, run db schema
>> >> >> > > installation.
>> >> >> > > >
>> >> >> > > > I'll run some tests, but I feel like I had <supportedRuntime
>> >> >> > > > version="v2.0.50727"/><supportedRuntime version="v4.0"/>
>> >> >> > > > there, but it didn't work right. I'm willing to accept any
>> >> >> > > > version of 4, as long as the installer runs (because I can
>> >> >> > > > use the redistributable to install the ACTUAL version I need
>> in my wxs).
>> >> >> > > >
>> >> >> > > > On Mon, Jul 17, 2017 at 8:13 AM Nir Bar
>> >> >> > > > <nir.bar at panel-sw.com>
>> >> >> wrote:
>> >> >> > > >
>> >> >> > > >> To change the default .NET bootstrapping UI, customize
>> >> >> > > >> mbapreq.thm, mbapreq.wxl.You can find the default files in
>> >> >> > > >> WiX source code in src\ext\BalExtension\wixstdba\Resources
>> >> >> > > >> folder
>> >> >> > > >>
>> >> >> > > >>
>> >> >> > > >> You can see valid values for supportedRuntime elements in
>> >> >> > > >> https://docs.microsoft.com/en-us/dotnet/framework/configure
>> >> >> > > >> -ap ps/ fi le -schema/startup/supportedruntime-element
>> >> >> > > >>
>> >> >> > > >>
>> >> >> > > >> P.S
>> >> >> > > >> Habib- thank you for the warm words.
>> >> >> > > >>
>> >> >> > > >>
>> >> >> > > >>
>> >> >> > > >>
>> >> >> > > >>
>> >> >> > > >> --Independent WiX Expert. Creator of- https://JetBA.net -
>> >> >> > > >> Native and WPF WiX BootstrapperApplication Frameworks
>> >> >> > > >>
>> >> >> > > >>
>> >> >> > > >>
>> >> >> > > >>
>> >> >> > > >>
>> >> >> > > >>
>> >> >> > > >> ___________________________________________________________
>> >> >> > > >> ___ ___ __ _ WiX Toolset Users Mailing List provided by
>> >> >> > > >> FireGiant http://www.firegiant.com/
>> >> >> > > >>
>> >> >> > > > --
>> >> >> > > > Bill Fisher | Technical Consultant
>> >> >> > > > [ *m* ] 412.427.9804 <(412)%20427-9804> <(412)%20427-9804>
>> <(412)%20427-9804>
>> >> <(412)%20427-9804>
>> >> >> <(412)%20427-9804>
>> >> >> > <(412)%20427-9804>
>> >> >> > > wfisher at summa.com
>> >> >> > > > [image: [ l ]] billfishersumma <
>> >> >> > > https://linkedin.com/in/billfishersumma>
>> >> >> > > > 611 William Penn Place
>> >> >> > > > Pittsburgh, PA 15219
>> >> >> > > > summa.com <http://www.summa.com/> [image: Summa]
>> >> >> > > > <http://www.summa.com/>
>> >> >> > > >
>> >> >> > > --
>> >> >> > > Bill Fisher | Technical Consultant
>> >> >> > > [ *m* ] 412.427.9804 <(412)%20427-9804> <(412)%20427-9804>
>> <(412)%20427-9804>
>> >> <(412)%20427-9804>
>> >> >> <(412)%20427-9804>
>> >> >> > wfisher at summa.com
>> >> >> > > [image: [ l ]] billfishersumma <
>> >> >> > https://linkedin.com/in/billfishersumma>
>> >> >> > > 611 William Penn Place
>> >> >> > > Pittsburgh, PA 15219
>> >> >> > > summa.com <http://www.summa.com/> [image: Summa]
>> >> >> > > <http://www.summa.com/>
>> >> >> > >
>> >> >> > > ______________________________________________________________
>> >> >> > > ___ ___ WiX Toolset Users Mailing List provided by FireGiant
>> >> >> > > http://www.firegiant.com/
>> >> >> > >
>> >> >> > > ______________________________________________________________
>> >> >> > > ___ ___ WiX Toolset Users Mailing List provided by FireGiant
>> >> >> > > http://www.firegiant.com/
>> >> >> > >
>> >> >> > --
>> >> >> > Bill Fisher | Technical Consultant
>> >> >> > [ *m* ] 412.427.9804 <(412)%20427-9804> <(412)%20427-9804>
>> <(412)%20427-9804>
>> >> <(412)%20427-9804>
>> >> >> wfisher at summa.com
>> >> >> > [image: [ l ]] billfishersumma <
>> >> >> https://linkedin.com/in/billfishersumma>
>> >> >> > 611 William Penn Place
>> >> >> > Pittsburgh, PA 15219
>> >> >> > summa.com <http://www.summa.com/> [image: Summa]
>> >> >> > <http://www.summa.com/>
>> >> >> >
>> >> >> > ________________________________________________________________
>> >> >> > ___ _ WiX Toolset Users Mailing List provided by FireGiant
>> >> >> > http://www.firegiant.com/
>> >> >> >
>> >> >> > ________________________________________________________________
>> >> >> > ___ _ WiX Toolset Users Mailing List provided by FireGiant
>> >> >> > http://www.firegiant.com/
>> >> >> >
>> >> >> --
>> >> >> Bill Fisher | Technical Consultant
>> >> >> [ *m* ] 412.427.9804 <(412)%20427-9804> <(412)%20427-9804>
>> <(412)%20427-9804>
>> >> wfisher at summa.com
>> >> >> [image: [ l ]] billfishersumma <
>> >> https://linkedin.com/in/billfishersumma
>> >> >> >
>> >> >> 611 William Penn Place
>> >> >> Pittsburgh, PA 15219
>> >> >> summa.com <http://www.summa.com/> [image: Summa]
>> >> >> <http://www.summa.com/>
>> >> >>
>> >> >> __________________________________________________________________
>> >> >> __ WiX Toolset Users Mailing List provided by FireGiant
>> >> >> http://www.firegiant.com/
>> >> >>
>> >> >> __________________________________________________________________
>> >> >> __ WiX Toolset Users Mailing List provided by FireGiant
>> >> >> http://www.firegiant.com/
>> >> >>
>> >> > --
>> >> > Bill Fisher | Technical Consultant
>> >> > [ *m* ] 412.427.9804 <(412)%20427-9804> <(412)%20427-9804>
>> <(412)%20427-9804>
>> >> wfisher at summa.com
>> >> > [image: [ l ]] billfishersumma <
>> >> https://linkedin.com/in/billfishersumma>
>> >> > 611 William Penn Place
>> >> > Pittsburgh, PA 15219
>> >> > summa.com <http://www.summa.com/> [image: Summa]
>> >> > <http://www.summa.com/>
>> >> >
>> >> --
>> >> Bill Fisher | Technical Consultant
>> >> [ *m* ] 412.427.9804 <(412)%20427-9804> <(412)%20427-9804>
>> wfisher at summa.com
>> >> [image: [ l ]] billfishersumma <
>> https://linkedin.com/in/billfishersumma
>> >> >
>> >> 611 William Penn Place
>> >> Pittsburgh, PA 15219
>> >> summa.com <http://www.summa.com/> [image: Summa]
>> >> <http://www.summa.com/>
>> >>
>> >> ____________________________________________________________________
>> >> WiX Toolset Users Mailing List provided by FireGiant
>> >> http://www.firegiant.com/
>> >>
>> >> ____________________________________________________________________
>> >> WiX Toolset Users Mailing List provided by FireGiant
>> >> http://www.firegiant.com/
>> >>
>> > --
>> > Bill Fisher | Technical Consultant
>> > [ *m* ] 412.427.9804 <(412)%20427-9804> <(412)%20427-9804>
>> wfisher at summa.com
>> > [image: [ l ]] billfishersumma <
>> https://linkedin.com/in/billfishersumma>
>> > 611 William Penn Place
>> > Pittsburgh, PA 15219
>> > summa.com <http://www.summa.com/> [image: Summa]
>> > <http://www.summa.com/>
>> >
>> --
>> Bill Fisher | Technical Consultant
>> [ *m* ] 412.427.9804 <(412)%20427-9804>
>> wfisher at summa.com
>> [image: [ l ]] billfishersumma <https://linkedin.com/in/billfishersumma
>> >
>> 611 William Penn Place
>> Pittsburgh, PA 15219
>> summa.com <http://www.summa.com/> [image: Summa] <http://www.summa.com/>
>>
>> ____________________________________________________________________
>> WiX Toolset Users Mailing List provided by FireGiant
>> http://www.firegiant.com/
>>
>> ____________________________________________________________________
>> WiX Toolset Users Mailing List provided by FireGiant
>> http://www.firegiant.com/
>>
> --
> Bill Fisher | Technical Consultant
> [ *m* ] 412.427.9804 <(412)%20427-9804>
> wfisher at summa.com
> [image: [ l ]] billfishersumma <https://linkedin.com/in/billfishersumma>
> 611 William Penn Place
> Pittsburgh, PA 15219
> summa.com <http://www.summa.com/> [image: Summa] <http://www.summa.com/>
>
--
Bill Fisher | Technical Consultant
[ *m* ] 412.427.9804
wfisher at summa.com
[image: [ l ]] billfishersumma <https://linkedin.com/in/billfishersumma>
611 William Penn Place
Pittsburgh, PA 15219
summa.com <http://www.summa.com/> [image: Summa] <http://www.summa.com/>
More information about the wix-users
mailing list