[wix-users] MSI database update at install time

Stephen Woolhead stephen at perfectphase.com
Thu Nov 12 09:06:37 PST 2015


Thanks everyone for the advice.

It's weird that my attempts to delete rows don't fail, I only get the errors on inserts after deletes.

I'm going to switch over to having my custom action create the rows I need rather than trying to patch the existing ones.

As to the reason why I want to do this, it mainly relates to creating IIS app pools, and the user accounts they run under.  The the issue I have is that the IIS extension does not easily map the combination of identity type and user into a format in the MSI DB that lends it's self to properties, so I was trying to fix up the identity at install time via a custom action.   I'll add that we have a solution at the moment that covers the differences using conditions, but this is very verbose in the .wxs files and given the scale of our solution this is starting to lead to maintainability issues, so we want to codify some of these 'hacks' to make it easier to maintain.

Cheers,

Stephen.

________________________________________
From: wix-users <wix-users-bounces at lists.wixtoolset.org> on behalf of Edwin Castro <egcastr at gmail.com>
Sent: 11 November 2015 22:48
To: WiX Toolset Users Mailing List
Subject: Re: [wix-users] MSI database update at install time

The Windows Installer does not allow you to delete/modify rows in custom
actions.

You can add temporary rows using an immediate custom action.

Why do you think you need to update rows at install time? Perhaps you can
use Formatted strings and properties instead?

--
Edwin G. Castro

On Wed, Nov 11, 2015 at 2:40 PM, Stephen Woolhead <stephen at perfectphase.com>
wrote:

> Hi, I writing a WiX extension and one of the steps I need my custom
> actions to do is update existing records in the MSI database at install
> time.
>
>
> After a bit of research it appears that I can't use SQL UPDATE on
> permanent tables at install time. Blog posts I've seen [1] say that I need
> to delete and insert a new row, but when I try this I get the following
> errors:
>
>
> Ready to execute delete query: DELETE FROM `IIsAppPool` WHERE
> `IIsAppPool`.`AppPool`='web_general_apppool'
> Delete Query Executed Successfully
> Ready to execute insert query: INSERT INTO `IIsAppPool` (`AppPool`,
> `Name`, `Component_`, `Attributes`, `User_`, `RecycleMinutes`,
> `RecycleRequests`, `RecycleTimes`, `IdleTimeout`, `QueueLimit`, `CPUMon`,
> `MaxProc`, `VirtualMemory`, `PrivateMemory`, `ManagedRuntimeVersion`,
> `ManagedPipelineMode`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
> ?) TEMPORARY
> Executing insert query...
> MSI (s) (B8!D0) [22:33:20:906]: Database string pool is corrupted.
> MSI (s) (B8!D0) [22:33:20:906]: Note: 1: 2259 2:  3:  4:
> Exception Type: Microsoft.Deployment.WindowsInstaller.InstallerException
>
>
> Is this possible or am I heading down a blind end?
>
>
> Cheer,
>
>
> Stephen.
>
>
>
>
> [1]
> http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/Updating-msi-database-install-time-tp7587512p7587523.html
>
>
> ____________________________________________________________________
> WiX Toolset Users Mailing List provided by FireGiant
> http://www.firegiant.com/
>

____________________________________________________________________
WiX Toolset Users Mailing List provided by FireGiant http://www.firegiant.com/


More information about the wix-users mailing list