[wix-users] Issues with Component with Auto Generated GUID
harald goci
harald.goci at panagenda.com
Mon Mar 26 04:29:25 PDT 2018
Well then, ...
Have a look at these:
https://www.firegiant.com/wix/tutorial/events-and-actions/
http://wixtoolset.org/documentation/manual/v3/customactions/
I think you can realize what you want (backup/restore) with the standard
custom action "Quiet execution":
http://wixtoolset.org/documentation/manual/v3/customactions/qtexec.html
With it you can execute any command line command the computer is capable
of.
BR,
Harald Goci
Senior Software Engineer
Email: harald.goci at panagenda.com - Web: www.panagenda.com
Phone: +43 1 890 12 89-44 - Fax: +43 1 890 12 89-15
(Embedded image moved to file: pic10805.jpg)
panagenda GmbH - Schreyvogelgasse 3/10 - 1010 Vienna - Austria
Registered Office: Vienna - HG Wien - FN 293516t - VAT-ID: ATU63362738
Executive Directors: Florian Vogler (CEO & CTO), Felix Vogler (CFO & COO)
(Embedded image moved to file: pic00148.jpg)
The information in this E-Mail is confidential and privileged. It is
intended solely for the addressee. Access to this E-Mail by anyone else is
unauthorized. If you are not the intended recipient, any disclosure,
copying, distribution or any action taken in reliance on it is prohibited
and will be unlawful. If you receive this message in error, please notify
the sender immediately and delete all copies of this message.
From: Ven H <venh.123 at gmail.com>
To: harald goci <harald.goci at panagenda.com>
Cc: Christopher Painter <chrpai at iswix.com>, WiX Toolset Users
Mailing List <wix-users at lists.wixtoolset.org>, wix-users
<wix-users-bounces at lists.wixtoolset.org>
Date: 26.03.2018 13:18
Subject: Re: [wix-users] Issues with Component with Auto Generated GUID
Hi Harold,
I am a little familiar with Custom Action. But I am not sure on how to
backup a file during upgrade and restore it after upgrade. I am not sure if
this will require custom code and if so, what should go inside it and if
not, how to get it done in a declarative way.
Regards,
Venkatesh
On Mon, Mar 26, 2018 at 4:32 PM, harald goci <harald.goci at panagenda.com>
wrote:
Hi Venkatesh,
I am confused about the details you are asking for ...
On 2018-03-20 you asked a very detailed question about custom
actions.
Therefore I expected that you are familiar with the concept of custom
actions.
BR,
Harald Goci
Senior Software Engineer
Email: harald.goci at panagenda.com - Web: www.panagenda.com
Phone: +43 1 890 12 89-44 - Fax: +43 1 890 12 89-15
(Embedded image moved to file: pic06334.jpg)
panagenda GmbH - Schreyvogelgasse 3/10 - 1010 Vienna - Austria
Registered Office: Vienna - HG Wien - FN 293516t - VAT-ID:
ATU63362738
Executive Directors: Florian Vogler (CEO & CTO), Felix Vogler (CFO &
COO)
(Embedded image moved to file: pic26500.jpg)
The information in this E-Mail is confidential and privileged. It is
intended solely for the addressee. Access to this E-Mail by anyone
else is
unauthorized. If you are not the intended recipient, any disclosure,
copying, distribution or any action taken in reliance on it is
prohibited
and will be unlawful. If you receive this message in error, please
notify
the sender immediately and delete all copies of this message.
From: Ven H <venh.123 at gmail.com>
To: harald goci <harald.goci at panagenda.com>
Cc: WiX Toolset Users Mailing List
<wix-users at lists.wixtoolset.org>, Christopher Painter
<chrpai at iswix.com>, wix-users
<wix-users-bounces at lists.wixtoolset.org>
Date: 26.03.2018 12:34
Subject: Re: [wix-users] Issues with Component with Auto
Generated GUID
No Harold. I am not sure of how to do it. Also, as I mentioned
earlier, I
am not sure if it will be advisable for multiple files and even if
not, I
am not sure how to do it. Can you please provide some more details?
Regards,
Venkatesh
On Mon, Mar 26, 2018 at 3:41 PM, harald goci <
harald.goci at panagenda.com>
wrote:
Hi Venkatesh,
have you considered to write a custom action that saves the
content
of the
config file to a different file which is not known by the
uninstall?
BR,
Harald Goci
Senior Software Engineer
Email: harald.goci at panagenda.com - Web: www.panagenda.com
Phone: +43 1 890 12 89-44 - Fax: +43 1 890 12 89-15
(Embedded image moved to file: pic00041.jpg)
panagenda GmbH - Schreyvogelgasse 3/10 - 1010 Vienna - Austria
Registered Office: Vienna - HG Wien - FN 293516t - VAT-ID:
ATU63362738
Executive Directors: Florian Vogler (CEO & CTO), Felix Vogler
(CFO &
COO)
(Embedded image moved to file: pic18467.jpg)
The information in this E-Mail is confidential and privileged.
It is
intended solely for the addressee. Access to this E-Mail by
anyone
else is
unauthorized. If you are not the intended recipient, any
disclosure,
copying, distribution or any action taken in reliance on it is
prohibited
and will be unlawful. If you receive this message in error,
please
notify
the sender immediately and delete all copies of this message.
From: Ven H via wix-users <wix-users at lists.wixtoolset.org>
To: Christopher Painter <chrpai at iswix.com>
Cc: Ven H <venh.123 at gmail.com>, WiX Toolset Users Mailing
List
<wix-users at lists.wixtoolset.org>
Date: 26.03.2018 11:59
Subject: Re: [wix-users] Issues with Component with Auto
Generated GUID
Sent by: "wix-users" <
wix-users-bounces at lists.wixtoolset.org>
Thank you all. Appreciate the time and efforts you all have
taken to
provide your valuable inputs. Unfortunately, the situation is
what it
is
right now. It may not be possible to change it right away. But,
the
client
is already in the process of rewriting the whole stuff. But as
per
the
current situation, they have made some mistakes like having
more than
1
file in a single component. Also, the Component Guid is
assigned a
new guid
using c# utility. So, their component IDs change with every
build.
After
deploying their MSI at their end customer, the end customer has
changed one
of the files in the target. So, now the expectation is this
file
should not
be overwritten, but other files which are part of the same
component
should
get replaced during the major upgrade. I have tried various
combinations of
Schedule attribute values, but they work only if the Component
ID
remains
the same between install and upgrade. If not, in some cases,
the
folder
containing the files gets removed during the upgrade and gets
recreated
only when the upgrade installer is run the 2nd time. I am not
sure
why this
is happening. Given this requirement, I am trying to understand
if
anyone
has come across a similar situation in the past and if so, how
you
handled
it. Also, even though, I have mentioned 1 component with 4
files, in
the
actual case, there are many components and files. Hence backing
up
through
custom action and restoring them will be very difficult.
Regards,
Venkatesh
On Fri, Mar 23, 2018 at 11:18 PM, Christopher Painter <
chrpai at iswix.com>
wrote:
> I've come to realize configuration really needs to be two
files.
It's
> impossible for the installer to be correct otherwise.
>
>
> MSI versioning rules just weren't made for XML/JSON/Other
complex
files.
> You can...
>
>
> 1) Overwrite the file and lose user data
>
> 2) Not overwrite the file and lose some new data provided by
the
newer
> version.
>
>
> Either way you run the risk of being wrong regardless of how
good
you are
> with MSI gymnastics. The only way, IMO, to solve the
problem is
to
split
> the data into two files. One that the installer can safely
always
> overwrite as to not being wrong #2 style and to never
overwrite the
user
> data so that you are never wrong #1 style.
>
>
> Otherwise get really good at gymnastics as you come up with
ways of
> harvesting the user data, replacing the file and overwriting
the
data.
> And if any of this goes wrong it's the installers fault.
>
>
> I'm a very high volume setup developer. I take on dozens of
customers a
> year, Between them and my day job, I probably write around
100
installs a
> year. Sometimes a customer will come back to me a few years
later
for an
> enhancement and I'm a little ashamed to say I don't always
remember
them.
> But my patterns are consistent and I can pick it right back
up and
make
> them happy. I've been doing this tempo for 10+ years now.
Edwin's
> rant is right on the money: The only way to keep up this pace
and
maintain
> happy customers/users is to design the application to fit the
box.
It
> is better to do configuration in a general purpose
programming
language
and
> I offer that as a service also if they don't have time to do
it
> themselves. They will understand a C# configuration
utility far
more
> then they will some custom installer logic.
>
>
> I used to fight that notion and be willing to do all kinds
of
tricks in
> the installer because I was only working on a half dozen
installers
a
> year. That just doesn't scale though.
>
>
> Good luck!
>
>
> Chris
>
>
> ------------------------------
> *From:* Edwin Castro <egcastr at gmail.com>
> *Sent:* Friday, March 23, 2018 12:23 PM
> *To:* WiX Toolset Users Mailing List
> *Cc:* Christopher Painter; Ven H
> *Subject:* Re: [wix-users] Issues with Component with Auto
Generated GUID
>
> Component GUID auto generation should be stable, meaning the
same
GUID
> should be generated, if the keypath is "stable". Without
stability,
then
> auto generation wouldn't work properly in upgrades.
>
> You are in a bad place. The decision on whether the
non-keypath
resources
> are installed or not depends on whether the keypath resource
has a
newer
> version and will get installed. *All* decisions are made
based on
the
> keypath. The only way to avoid overwriting the config is to
not
update
the
> keypath (presumably the exe) which kind of defeats the
upgrade...
>
> Chris provided one possible way to avoid this kind of problem
in
the
> future. His suggestion is accepted as best practice by setup
experts.
>
> On how dig yourself out of your current predicament... You'll
need
to get
> creative.
>
> First, I'd advocate for best practices and work toward
changing the
> application so that the installer installs (and manages) a
"template"
> config and the application is responsible for creating an
instance
of the
> config (in %ProgramData% since %ProgramFiles% is supposed to
be
read-only)
> that which can be modified by sysadmins. The application will
also
need
to
> be responsible for migrating data. In other words, if a
schema
change
> occurs between version 1 and version 3 of the config, then
the
application
> will need to have a mechanism for applying those changes
(diff)
without
> loosing user settings.
>
> Second, (this is where creativity comes into play) you'll
need to
> transition the current installation into one where resources
appear
in
the
> correct components. You might still decide to keep the exe
and the
template
> config in the same component since the schema of the template
config,
> presumably, doesn't change without a change to the exe.
Perhaps you
decide
> that having exe and config in separate components makes more
sense.
In
any
> case, if you decide to change the current 4-file component in
anyway,
then
> you'll need to ensure the new components have different GUIDs
*AND*
you
> *MUST* use a MarjorUpgrade scheduled afterInstallInitialize.
That
means
the
> new component for the original keypath *must* have a
different GUID
which
> will probably need to be hard-coded as opposed to
auto-generated
since
the
> auto-generation would likely still produce the same GUID. The
specifics
> here will depend on your strategy and you're strategy will
depend
on how
> you are able to change the application *and* installer.
>
> If your efforts to improve (correct really) the application
design
fails,
> then your only option left might be to write custom actions
to
> 1. backup current config
> 2. allow installer to overwrite current config
> 3. migrate user data from backup config to real config
>
> Of course, you'll need to take rollback in to account (that
means
some
> combination of install rollback, uninstall rollback, repair
rollback,
> upgrade rollback) as well and how all of these custom actions
need
to be
> conditioned appropriately to make sure they run at the
appropriate
times.
>
> Note, the code for migrating user data gets written (slightly
differently)
> regardless of whether the application does this or whether
the
installer
> does this. The execution environment for MSI installers is
limited
so you
> really don't want this code in the installer simply because
the
developers
> were ignorant of the need for that functionality in the
application
itself.
>
> <rant audience="universe">
> Setup development really *must* be a conversation with
application
> development. Generally speaking application developers (or
product
owners)
> do not have enough understanding of setup concerns to make
good
decisions
> on their own. In my opinion, it is the responsibility of
setup
developers
> to educate and guide application developers (and product
owners) in
the
> same way that QA professionals have a responsibility to
educate and
guide
> application developers (and product owners) in how to bake in
testability
> and quality rather than trying to bolt it on after the fact.
> </rant>
>
> --
> Edwin G. Castro
>
>
> On Fri, Mar 23, 2018 at 9:54 AM, Ven H via wix-users <
> wix-users at lists.wixtoolset.org> wrote:
>
> Thanks a lot for the details, Chris. But unfortunately, this
is the
current
> state of affairs. So, it would be really great, if you could
please
let
me
> know if there is any way to achieve what I am looking for.
>
> Regards,
> Venkatesh
>
> On Fri, Mar 23, 2018 at 7:31 PM, Christopher Painter <
chrpai at iswix.com>
> wrote:
>
> > Having multiple files in a single component isn't an
automatic
component
> > rule violation. However grouping an .exe and .exe.config
in one
> component
> > may or may not give you the desired file overwriting
behavior as
the
> > decision will be based on the keyfile which presumably is
the .exe
file.
> >
> > https://msdn.microsoft.com/en-us/library/windows/desktop/
>
> Develop Windows desktop apps – Windows app development
> <https://msdn.microsoft.com/en-us/library/windows/desktop/>
> msdn.microsoft.com
> Find resources to develop for the Windows desktop such as
APIs and
samples.
>
>
>
> > aa370561(v=vs.85).aspx
> >
> > For config files, I prefer to have one file that is "owned'
by
the
> > installer (stock can always overwrite and will never
contain user
data )
> > and one file created by the application that contains the
user
data.
> The
> > installer can't harm what it doesn't know about. If you
are
coding in
> > .NET, the framework has a pattern to easily support this.
The
main
> > config file can reference the custom (override) config
file and
> seamlessly
> > apply the settings if they are found.
> >
> > https://msdn.microsoft.com/en-us/library/aa903313
(v=vs.71).aspx
> >
> > appsettings at file attribute
> >
> > https://docs.microsoft.com/en-us/dotnet/framework/data/
>
> <https://docs.microsoft.com/en-us/dotnet/framework/data/>
> Data and Modeling in the .NET Framework | Microsoft Docs
> <https://docs.microsoft.com/en-us/dotnet/framework/data/>
> docs.microsoft.com
> Note. The feedback system for this content will be changing
soon.
Old
> comments will not be carried over. If content within a
comment
thread is
> important to you ...
>
>
>
> > adonet/connection-strings-and-configuration-files
> >
> > connectionstring at configsource attribute
> >
> >
> > -----Original Message-----
> > From: wix-users [mailto:
wix-users-bounces at lists.wixtoolset.org]
On
> Behalf
> > Of Ven H via wix-users
> > Sent: Friday, March 23, 2018 6:40 AM
> > To: WiX Toolset Users Mailing List <
wix-users at lists.wixtoolset.org>
> > Cc: Ven H <venh.123 at gmail.com>
> > Subject: [wix-users] Issues with Component with Auto
Generated
GUID
> >
> > I have an MSI which has a component with 4 files (agreed
that
this
> > violates component rules. But my client was unaware of the
best
practices
> > and had implemented it in that way some time ago). They
have also
> > configured auto generated ID (*) for the Component GUID
(again
this may
> not
> > be the best thing to do, but they have done it).
> >
> > Of the 4 files, one will be a config file. So, once it is
installed at
> > their end customer, their end customer can manually modify
this
config
to
> > suit to their environment. Now we are working on an
Upgrade. In
this,
> they
> > don't want to touch the already installed config file at
the
target
even
> > though it is modified in the MSI, but other modified files
should
get
> > updated / overwritten.
> >
> > So, I suggested them to include a MajorUpgrade element with
> > Schedule="afterInstallExecute". But even with this, the
config
file
also
> > seems to be getting overwritten with the installation of
the
upgrade
MSI,
> > probably because the Component GUID is auto generated (*)
all the
time.
> In
> > fact, I tried it out in a sample and could observe that if
the
component
> > GUID is different, no files are getting installed during
upgrade,
> although
> > this is strange.
> >
> > If I keep the Component GUID constant, then I believe it
will
work as
> > expected. But, is it possible to achieve this requirement
with an
auto
> > generated Component GUID everytime? Please suggest if there
is a
good
> > solution / workaround.
> >
> >
____________________________________________________________________
> > WiX Toolset Users Mailing List provided by FireGiant
> > http://www.firegiant.com/
>
> WiX Support | WiX Experts and Resources from FireGiant
> <http://www.firegiant.com/>
> www.firegiant.com
> WiX Support | Installation, Development, Deployment | WiX
Experts
and
> Resources from FireGiant
>
>
>
> >
>
>
____________________________________________________________________
> WiX Toolset Users Mailing List provided by FireGiant
> http://www.firegiant.com/
>
> WiX Support | WiX Experts and Resources from FireGiant
> <http://www.firegiant.com/>
> www.firegiant.com
> WiX Support | Installation, Development, Deployment | WiX
Experts
and
> Resources from FireGiant
>
>
>
>
>
____________________________________________________________________
WiX Toolset Users Mailing List provided by FireGiant
http://www.firegiant.com/
More information about the wix-users
mailing list