yep - back to being 100% frustrated

41 Messages Forum Options Options
Permalink
1 2 3
Chris Mumford-2
yep - back to being 100% frustrated
Reply Threaded More
Print post
Permalink
Man:
 
I can't believe how much making Windows Installer based installs suck - I mean really sucks! Did we just invent this technology to make us hate our lives?
 
And WiX doesn't make it any easier.
 
I'm calling it a night.
 
Peace out man...

-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference
Don't miss this year's exciting event. There's still time to save $100.
Use priority code J8TL2D2.
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
WiX-users mailing list
WiX-users@...
https://lists.sourceforge.net/lists/listinfo/wix-users
Siva Poobalasingam
Re: yep - back to being 100% frustrated
Reply Threaded More
Print post
Permalink
well.. the local supermarket here .. is looking for a Security Guard???

if u want i can help pass ya resume...

Chris Mumford-2 wrote:
Man:

I can't believe how much making Windows Installer based installs suck - I
mean really sucks! Did we just invent this technology to make us hate our
lives?

And WiX doesn't make it any easier.

I'm calling it a night.

Peace out man...

-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference
Don't miss this year's exciting event. There's still time to save $100.
Use priority code J8TL2D2.
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users
Markus Kuehni
Re: yep - back to being 100% frustrated
Reply Threaded More
Print post
Permalink
In reply to this post by Chris Mumford-2
Some javascript/style in this post has been disabled (why?)
Hi Chris
 
I can only second your opinion. It's almost unbelievable, how difficult even the most common, primitive task is. 
 
One has this long-honed professional developer instinct that constantly tells you "there must be an easier way, I just have to find it". Believe me: in case of MSI there is none! Stop wasting your time searching for any sign of logic, design or even common sense.  
 
And it took me a while to realize, that WiX is only a wrapper. No abstraction whatsoever. So dont't blame WiX, except maybe for not making the "thin wrapper catch" clear from the beginning.  
 
It helps to cross the custom action / custom dialog barrier. Don't even try without, even if you think your application is plain vanilla!
 
There has to be an awful lot of (pre-)historical bagagge that crippels MSIs "design" (to insult that word). I guess its a cross-breed between declarative and imperative princibles terribly gone wrong and awfully neglected since.
 
Survival guide:
 
0. switch off your expectations
1. learn how to write custom actions and use them liberally
2. learn how to write custom dialogs and use them liberally
3. forget minor and small updates - use major upgrades only
4. realize that they only really thought of files and registry entries! Shortcuts, .ini-file entries, in some cases even directories, etc. were seemingly "tacked on later" and are terribly crippled because they have to somehow "piggy back" either on a file, directory or registry key; use the ugly hacks in the internet and don't waste your time searching for elegance
5. realize the power of properties set through custom actions
6. realize the power of conditions (often you can't dynamically change even the simplest things, like i.e. the name of a shortcut. But you can switch OFF one component and switch ON another - sometimes that helps)
6. isolate everything in your application that remains absolutely static once it's deployed
7. then only(!) setup that static part with MSI/WiX
8. setup everything else (such as initial configuration, initial databases, etc.) either with a custom action or with your application (first run)
9. expect problems - this "technology" (to insult that word too) is gagging for trial and error (and shot deadlines)
 
 
Hope that helps a bit.
 
-Mark
 
 
 

Von: wix-users-bounces@... [mailto:wix-users-bounces@...] Im Auftrag von Chris Mumford
Gesendet: Montag, 12. Mai 2008 06:13
An: wix-users@...
Betreff: [WiX-users] yep - back to being 100% frustrated

Man:
 
I can't believe how much making Windows Installer based installs suck - I mean really sucks! Did we just invent this technology to make us hate our lives?
 
And WiX doesn't make it any easier.
 
I'm calling it a night.
 
Peace out man...

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
WiX-users mailing list
WiX-users@...
https://lists.sourceforge.net/lists/listinfo/wix-users
Richard-45
Re: yep - back to being 100% frustrated
Reply Threaded More
Print post
Permalink

In article <013801c8b461$680f26f0$0301a8c0@venom>,
    "Markus Kuehni" <markus.kuehni@...>  writes:

> 1. learn how to write custom actions and use them liberally

Disagree

> 2. learn how to write custom dialogs and use them liberally

Use custom dialogs only when needed; most projects don't need them.

> 3. forget minor and small updates - use major upgrades only

Disagree

> 4. realize that they only really thought of files and registry entries!

Disagree

> 5. realize the power of properties set through custom actions

For Type 51 (set a property) CAs, Agree.

> 6. realize the power of conditions [...]

Agree

> 6. isolate everything in your application that remains absolutely static
> once it's deployed

I'm not sure what this is even talking about.

> 7. then only(!) setup that static part with MSI/WiX

Disagree, if this is talking about files and not items in 8.  If only
talking about items in 8, then Agree.

> 8. setup everything else (such as initial configuration, initial databases,
> etc.) either with a custom action or with your application (first run)

Agree

> 9. expect problems - this "technology" (to insult that word too) is gagging
> for trial and error (and shot deadlines)

Disagree.

Like anything else, it helps if you read the documentation.  I've had
a summer intern do just with with a relatively complex MSI
installation (and this was with MSI 1.2) just by taking the time to
read documentation and understand what it says before flailing about
in a non-productive fashion and then declaring frustration.
--
"The Direct3D Graphics Pipeline" -- DirectX 9 draft available for download
      <http://www.xmission.com/~legalize/book/download/index.html>

        Legalize Adulthood! <http://blogs.xmission.com/legalize/>

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
WiX-users mailing list
WiX-users@...
https://lists.sourceforge.net/lists/listinfo/wix-users
Chris Mumford-2
Re: yep - back to being 100% frustrated
Reply Threaded More
Print post
Permalink
In reply to this post by Markus Kuehni
Definitely interesting commentary. I'd have to say that I agree with Richard and mostly disagree with Markus' comment - although I see where he's coming from. My guess is that his rules are mostly born from experience and he's chosen the most pragmatic approach that seems likely to work. It's my understanding that nearly all custom actions are improperly written and I really want to try to create an installation with zero CA's if possible. I'm sure that when I get to some crazy things like deleting files and registry values (that no installer would ever want to do <sarcasm />) I'll have to write a CA.

I did my first MSI somewhere around 8-9 years ago and have used most of the major installer tools from Wise, InstallShield, WiX, and MakeMSI. It's been a good five years since I've wrestled with Windows Installer - staying away for obvious reasons.

So now I'm rewriting one of my installations (which has always had issues) and I'm going to try to do it "right" with WiX. So I get it to install a few files in the right folder, and my very next step is to create a simple stupid shortcut - and it doesn't work with an ICE48 error. Searching around didn't really turn up much, but there was a Google hit on Rob's site - which was down - Grrrr.

Call me old fashioned but I think that any solution should make it easy to do what 80% of the users want. Maybe this is a bad example but who cares a flip about advertised features. I don't see this as a feature at all. It just complicates our lives as installer writers and it complicates the lives of the end user too. Sure this isn't a WiX thing - it's a *feature* of Windows Installer, but man I wish WiX made things easier for us - and it could.

Well anyhow, I've gotta get back to my day gig now. Thanks for your thoughts.

BTW stay in touch Siva - I may be begging you forward my resume for that security guard gig after a few more weeks of playing with this tech. ;-)

Cheers.

On Mon, May 12, 2008 at 11:53 AM, Markus Kuehni <markus.kuehni@...> wrote:
Hi Chris
 
I can only second your opinion. It's almost unbelievable, how difficult even the most common, primitive task is. 
 
One has this long-honed professional developer instinct that constantly tells you "there must be an easier way, I just have to find it". Believe me: in case of MSI there is none! Stop wasting your time searching for any sign of logic, design or even common sense.  
 
And it took me a while to realize, that WiX is only a wrapper. No abstraction whatsoever. So dont't blame WiX, except maybe for not making the "thin wrapper catch" clear from the beginning.  
 
It helps to cross the custom action / custom dialog barrier. Don't even try without, even if you think your application is plain vanilla!
 
There has to be an awful lot of (pre-)historical bagagge that crippels MSIs "design" (to insult that word). I guess its a cross-breed between declarative and imperative princibles terribly gone wrong and awfully neglected since.
 
Survival guide:
 
0. switch off your expectations
1. learn how to write custom actions and use them liberally
2. learn how to write custom dialogs and use them liberally
3. forget minor and small updates - use major upgrades only
4. realize that they only really thought of files and registry entries! Shortcuts, .ini-file entries, in some cases even directories, etc. were seemingly "tacked on later" and are terribly crippled because they have to somehow "piggy back" either on a file, directory or registry key; use the ugly hacks in the internet and don't waste your time searching for elegance
5. realize the power of properties set through custom actions
6. realize the power of conditions (often you can't dynamically change even the simplest things, like i.e. the name of a shortcut. But you can switch OFF one component and switch ON another - sometimes that helps)
6. isolate everything in your application that remains absolutely static once it's deployed
7. then only(!) setup that static part with MSI/WiX
8. setup everything else (such as initial configuration, initial databases, etc.) either with a custom action or with your application (first run)
9. expect problems - this "technology" (to insult that word too) is gagging for trial and error (and shot deadlines)
 
 
Hope that helps a bit.
 
-Mark
 
 
 

Von: wix-users-bounces@... [mailto:wix-users-bounces@...] Im Auftrag von Chris Mumford
Gesendet: Montag, 12. Mai 2008 06:13
An: wix-users@...
Betreff: [WiX-users] yep - back to being 100% frustrated

Man:
 
I can't believe how much making Windows Installer based installs suck - I mean really sucks! Did we just invent this technology to make us hate our lives?
 
And WiX doesn't make it any easier.
 
I'm calling it a night.
 
Peace out man...


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
WiX-users mailing list
WiX-users@...
https://lists.sourceforge.net/lists/listinfo/wix-users
Markus Kuehni
Re: yep - back to being 100% frustrated
Reply Threaded More
Print post
Permalink
In reply to this post by Richard-45
Richard

> Like anything else, it helps if you read the documentation.

I've just done that. Read what scarce documentation is available about WiX.
Read the dusty "tramontana" tutorial cover to cover before I started.

Maybe its my mistake, but it took me a long time to realize that WiX is just
a wrapper and that it in no way aspires to abstract from MSI. That indeed it
assumes you know all about MSI to succeed in the first place. In hindsight
it's clear as water but that's now.

On the WiX site it says:

  "The Windows Installer XML (WiX) is a toolset that builds Windows
installation packages from XML source code"

when it should say something like

  "The Windows Installer XML (WiX) is a toolset built around a human
readable, easily machine generatable XML representation of the otherwise
unaltered relational structure of Windows Installer packages"

Now, it's true that by the time I realized this, I was knee deep into my
installer generator and learned many things the hard way, desperately
scratching together morsels of information from bad, outdated and incomplete
documentation bits, desperado blogs and mailing lists.

Just consider the "pain level" in this mailing list as evidence of that!


I should have stopped and bought me a Windows Installer Book. Maybe.

However, I (kind of) succeeded in the end. So this is NOT a "non-productive
frustration" rant like you suggested. Its more a glance back over my
shoulder, still shaking my head in disbelief.

My critisism does not come from the frustration of being stuck. It does come
from realization, once it was solved, how complicated even the simplest task
was!

Just some of the snags I encountered (if I'm talking about "custom action",
I mean "self-made"):

- minor updates/small updates can't be administered by double clicking the
.msi; this bug was not fixed since at least 2004 (I think)
- adding a bootstrapper to fix this, IMHO breaks the rule of
self-containedness
- non-advertised shortcuts need to piggy back on a dummy per user(!)
registry entry just to pass ICEs; incredibly, even with per machine
installations!
- advertised shortcuts bloat the .msi if you use external .cabs
- advertised shortcut with same binary but different command-line argument
did not work (didn't really try to confirm or resolve that, because I
switched to non-advertised)
- shortcuts can't have dynamic names (set by property)
- shortcut folders need to be explicitely removed on uninstall while file
directories need not (why?)
- ini file entries must be piggy backed to the containing directory
component
  (no, I can't use the registry: it's not network transparent)
- IniFileSearch does only work in the Windows folder!
- FileSearch produces parent folder when @Id not set: documentation wrong
and/or does not work; bad hack work-around required
- features without components (empty or all conditioned false) behave
eradically (don't know if that's WiX_UI's or MSI's fault)
- features can't be declared mutually exclusive (basic requirement IMHO)
- because of the last two shortcomings: you can't use the feature tree to
configure simple additional setup options; custom dialogs are required
- there is no "warning->OK|cancel" action built in (just "error->cancel");
again: custom dialog required for the simplest thing
- incredibly there ist not even a properties expression syntax: anything
more complex than concatenating properties together and some text, does
require a custom action
- condition expressions is limited to ~200 odd characters, again requiring
custom actions to set dedicated condition properties (condition expressions
tend to become huge as there is no "else if"-chaining possible)
- component update rules (confusingly named REINSTALLMODE, although active
on initial install) are global, not per component
- component update rules operate on momentary assumptions, not taking
RemoveExistingProducts into consideration, thus leaving some files
uninstalled(!) if you choose the wrong (but documented as valid!) sequence;
(incredible, considering the huge database driven overhead behind the scene
- what is it for, then?)
- this one took me ages to believe: MSI does not support setting up the
initial version of files (like databases or configuration files) that are
thereafter modified by the application and should be left alone both on
repair AND on major upgrade (I managed to get one or the other working but
not both); one needs to copy/write those files using a custom action (like I
said: deploy static stuff only!)
- internationalization? don't ask; incredible considering it's just looking
up strings (no, our product does not need a language code; it's
multilingual); many bugs in WiX there too
- the overall confusion, the misinformation about component GUIDs is
amazing! in complete violation of the zero overhead rule, ALL components of
an installation suffer the full blast from the complexities of the oddest
shared component scenario! (our app has no shared components)
- auto-generating WiX files and GUIDs? a contradiction! I solved it using
type 3 MD5 UUISs on product [version] URI + relative installation key path
(a solution that was later independantly added to WiX3, I read somewhere).


There was much more. I must have repressed the memory to save some of my
mental sanity...

And no. Just because I have finally (sort of) clawed my way to the top of
that heap, I don't think everybody else should suffer as much as I have.

RTFM? No, FTFS! (fix the f**ng software!)

Cheers.

_Mark



-----Ursprüngliche Nachricht-----
Von: wix-users-bounces@...
[mailto:wix-users-bounces@...] Im Auftrag von Richard
Gesendet: Montag, 12. Mai 2008 21:10
An: WiX Users
Betreff: Re: [WiX-users] yep - back to being 100% frustrated


In article <013801c8b461$680f26f0$0301a8c0@venom>,
    "Markus Kuehni" <markus.kuehni@...>  writes:

> 1. learn how to write custom actions and use them liberally

Disagree

> 2. learn how to write custom dialogs and use them liberally

Use custom dialogs only when needed; most projects don't need them.

> 3. forget minor and small updates - use major upgrades only

Disagree

> 4. realize that they only really thought of files and registry entries!

Disagree

> 5. realize the power of properties set through custom actions

For Type 51 (set a property) CAs, Agree.

> 6. realize the power of conditions [...]

Agree

> 6. isolate everything in your application that remains absolutely static
> once it's deployed

I'm not sure what this is even talking about.

> 7. then only(!) setup that static part with MSI/WiX

Disagree, if this is talking about files and not items in 8.  If only
talking about items in 8, then Agree.

> 8. setup everything else (such as initial configuration, initial
databases,
> etc.) either with a custom action or with your application (first run)

Agree

> 9. expect problems - this "technology" (to insult that word too) is
gagging
> for trial and error (and shot deadlines)

Disagree.

Like anything else, it helps if you read the documentation.  I've had
a summer intern do just with with a relatively complex MSI
installation (and this was with MSI 1.2) just by taking the time to
read documentation and understand what it says before flailing about
in a non-productive fashion and then declaring frustration.
--
"The Direct3D Graphics Pipeline" -- DirectX 9 draft available for download
      <http://www.xmission.com/~legalize/book/download/index.html>

        Legalize Adulthood! <http://blogs.xmission.com/legalize/>

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
WiX-users mailing list
WiX-users@...
https://lists.sourceforge.net/lists/listinfo/wix-users


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
WiX-users mailing list
WiX-users@...
https://lists.sourceforge.net/lists/listinfo/wix-users
Richard-45
Re: yep - back to being 100% frustrated
Reply Threaded More
Print post
Permalink
In reply to this post by Chris Mumford-2

In article <42852f730805121445k510107ffs9fe3eaa9db6afdcb@...>,
    "Chris Mumford" <cmumford@...>  writes:

> So now I'm rewriting one of my installations (which has always had issues)
> and I'm going to try to do it "right" with WiX. So I get it to install a few
> files in the right folder, and my very next step is to create a simple
> stupid shortcut - and it doesn't work with an ICE48 error. Searching around
> didn't really turn up much, but there was a Google hit on Rob's site - which
> was down - Grrrr.

Creating plain shortcuts is rather straightforward, but for some
reason its something that people seem to get hung up on relatively
often.  From the MSI documentation for the Shortcut table:

    "Target
    The shortcut target.

    [...]

    For a non-advertised shortcut, the installer evaluates this field
    as a Formatted string. The field should contains a property
    identifier enclosed by square brackets ([ ]), that is expanded
    into the file or a folder pointed to by the shortcut. For more
    information, see the CreateShortcuts action."

If you're getting an ICE48 error ("ICE48 checks for directories that
are hard-coded to local paths in the Property table."), then that
doesn't have anything to do with shortcuts.  In your Target column of
your shortcut, you should be using the properties associated with
directories as you've defined them in rows of the Directory table.  If
you're trying to create shortcuts to items in folders you didn't
create, then use AppSearch to set the directory property.

That WiX isn't an abstraction that raises you above having to
understand the MSI table schema is a valid observation.  I don't know
if its a valid criticism of WiX as having an abstraction that raises
you above the schema wasn't a design goal of WiX.  You might as well
criticize WiX because it doesn't solve world hunger.

My aversion to CA's is that for some reason people immediately rush to
create a CA when most of the time the standard actions already do what
they want.  Then there's the stupid VS.NET documentation that tells
people to write CA's to get around the limitations of their authoring
tool and not Windows Installer...

Yet, CAs are there for a reason and sometimes you need them.  But
getting all the error handling working properly in a CA isn't easy and
most of the bugs that I've fixed in complex installs revolved around
CAs that failed in some peculiar way and didn't handle the failure
properly.
--
"The Direct3D Graphics Pipeline" -- DirectX 9 draft available for download
      <http://www.xmission.com/~legalize/book/download/index.html>

        Legalize Adulthood! <http://blogs.xmission.com/legalize/>

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
WiX-users mailing list
WiX-users@...
https://lists.sourceforge.net/lists/listinfo/wix-users
Markus Kuehni
Re: yep - back to being 100% frustrated
Reply Threaded More
Print post
Permalink
Hi Richard

> Creating plain shortcuts is rather straightforward

It's not the shortcut @Target but the @Name I wanted to vary.


>Shortcut [..] ICE

There seems NOT to be any other solution than to use a dummy current user(!)
registry entry according to various blog entries by the "gurus". I just want
to have a non-advertised Shortcut to an exe that I install and one to
another (third party) exe I found using FileSearch.
Solution:
http://robmensching.com/blog/archive/2007/04/27/How-to-create-an-uninstall-s
hortcut-and-pass-all-the.aspx
(the uninstaller example is obviously a bad thing to do, but the solution
applies to my problem as well)
If you know another solution (through WiX), glad to revise that.


> You might as well criticize WiX because it doesn't solve world hunger.

Like I said: "So dont't blame WiX, except maybe for not making the "thin
wrapper catch" clear from the beginning."  


>My aversion to CA's is that for some reason people immediately rush to
>create a CA when most of the time the standard actions already do what
>they want.

That's exactly how I felt at the beginning. I set goals very alike those of
Chris in his second post. "zero CA's if possible". I can only laugh at that
now.

Just two examples

Pop Quiz 1:

You have a configuration file (.ini, XML, database, etc.). The user can
change the preferences saved in it during normal use of the application (no
elevated priviledges required). You would like to provide an initial setting
with your installer. But of course the file should not be overwritten on
[major] update or repair.

Oulandish requirement? I don't think so.

Possible with MSI? No!


Pop Quiz 2:

I want to read an .ini file entry from outside the Windows folder into a
property. Why .ini and not Registry? In our case it's because the .ini may
reside on a network server. Million other reasons thinkable.

Outlandish requirement? I don't think so.

Possible with MSI? No!




Regarding self-made CAs:

I'm a professional, university trained developer with lots of theoretical
and practical background in multi-user concurrent transaction processing,
serializability and all. I know all about the complexities of "commits and
rollbacks".

I know enough NOT to meddle with the transactional actions of the installer.
My CAs are purely side effect free, except for setting properties. The real
work is left to MSI. The CAs read some .ini files and mostly perform logic
on properties that MSI can't. They set new properties to condition actions,
components and dialogs.

This is also the reason why I postponed the setup of non-static files (Pop
Quiz 1) to the first application start, so I don't have to handle the
rollback case.



No really. Chris' initial statement really sums it up:

"I can't believe how much making Windows Installer based installs sucks - I
mean really sucks! Did we just invent this technology to make us hate our
lives?"


Cheers,

Mark.




 

-----Ursprüngliche Nachricht-----
Von: wix-users-bounces@...
[mailto:wix-users-bounces@...] Im Auftrag von Richard
Gesendet: Dienstag, 13. Mai 2008 00:07
An: WiX Users
Betreff: Re: [WiX-users] yep - back to being 100% frustrated


In article <42852f730805121445k510107ffs9fe3eaa9db6afdcb@...>,
    "Chris Mumford" <cmumford@...>  writes:

> So now I'm rewriting one of my installations (which has always had issues)
> and I'm going to try to do it "right" with WiX. So I get it to install a
few
> files in the right folder, and my very next step is to create a simple
> stupid shortcut - and it doesn't work with an ICE48 error. Searching
around
> didn't really turn up much, but there was a Google hit on Rob's site -
which
> was down - Grrrr.

Creating plain shortcuts is rather straightforward, but for some
reason its something that people seem to get hung up on relatively
often.  From the MSI documentation for the Shortcut table:

    "Target
    The shortcut target.

    [...]

    For a non-advertised shortcut, the installer evaluates this field
    as a Formatted string. The field should contains a property
    identifier enclosed by square brackets ([ ]), that is expanded
    into the file or a folder pointed to by the shortcut. For more
    information, see the CreateShortcuts action."

If you're getting an ICE48 error ("ICE48 checks for directories that
are hard-coded to local paths in the Property table."), then that
doesn't have anything to do with shortcuts.  In your Target column of
your shortcut, you should be using the properties associated with
directories as you've defined them in rows of the Directory table.  If
you're trying to create shortcuts to items in folders you didn't
create, then use AppSearch to set the directory property.

That WiX isn't an abstraction that raises you above having to
understand the MSI table schema is a valid observation.  I don't know
if its a valid criticism of WiX as having an abstraction that raises
you above the schema wasn't a design goal of WiX.  You might as well
criticize WiX because it doesn't solve world hunger.

My aversion to CA's is that for some reason people immediately rush to
create a CA when most of the time the standard actions already do what
they want.  Then there's the stupid VS.NET documentation that tells
people to write CA's to get around the limitations of their authoring
tool and not Windows Installer...

Yet, CAs are there for a reason and sometimes you need them.  But
getting all the error handling working properly in a CA isn't easy and
most of the bugs that I've fixed in complex installs revolved around
CAs that failed in some peculiar way and didn't handle the failure
properly.
--
"The Direct3D Graphics Pipeline" -- DirectX 9 draft available for download
      <http://www.xmission.com/~legalize/book/download/index.html>

        Legalize Adulthood! <http://blogs.xmission.com/legalize/>

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
WiX-users mailing list
WiX-users@...
https://lists.sourceforge.net/lists/listinfo/wix-users


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
WiX-users mailing list
WiX-users@...
https://lists.sourceforge.net/lists/listinfo/wix-users
Rob Mensching-2
Re: yep - back to being 100% frustrated
Reply Threaded More
Print post
Permalink
In reply to this post by Markus Kuehni
1.  Yes, WiX is a relatively thin layer above MSI.  Some people liken it to assembly but I still think C/C++ is more appropriate.  The only thing that makes C++ reasonable is a wide range of libraries to help do some heavy lifting (like file IO (libc, kernel32) or drawing pixels on the screen (gdi32)).  We're still building up those layers.

2.  I basically agree with all of the issues raised below.  I don't see anything new in that list of pain points with the Windows Installer.

3.  However, the real question is how would you fix them in a way that always works?  So far we have been very cautious about "automagically fixing things" since there are a lot of different valid ways to solve the same problem.


-----Original Message-----
From: wix-users-bounces@... [mailto:wix-users-bounces@...] On Behalf Of Markus Kuehni
Sent: Monday, May 12, 2008 15:02
To: 'Richard'; 'WiX Users'
Subject: Re: [WiX-users] yep - back to being 100% frustrated

Richard

> Like anything else, it helps if you read the documentation.

I've just done that. Read what scarce documentation is available about WiX.
Read the dusty "tramontana" tutorial cover to cover before I started.

Maybe its my mistake, but it took me a long time to realize that WiX is just
a wrapper and that it in no way aspires to abstract from MSI. That indeed it
assumes you know all about MSI to succeed in the first place. In hindsight
it's clear as water but that's now.

On the WiX site it says:

  "The Windows Installer XML (WiX) is a toolset that builds Windows
installation packages from XML source code"

when it should say something like

  "The Windows Installer XML (WiX) is a toolset built around a human
readable, easily machine generatable XML representation of the otherwise
unaltered relational structure of Windows Installer packages"

Now, it's true that by the time I realized this, I was knee deep into my
installer generator and learned many things the hard way, desperately
scratching together morsels of information from bad, outdated and incomplete
documentation bits, desperado blogs and mailing lists.

Just consider the "pain level" in this mailing list as evidence of that!


I should have stopped and bought me a Windows Installer Book. Maybe.

However, I (kind of) succeeded in the end. So this is NOT a "non-productive
frustration" rant like you suggested. Its more a glance back over my
shoulder, still shaking my head in disbelief.

My critisism does not come from the frustration of being stuck. It does come
from realization, once it was solved, how complicated even the simplest task
was!

Just some of the snags I encountered (if I'm talking about "custom action",
I mean "self-made"):

- minor updates/small updates can't be administered by double clicking the
.msi; this bug was not fixed since at least 2004 (I think)
- adding a bootstrapper to fix this, IMHO breaks the rule of
self-containedness
- non-advertised shortcuts need to piggy back on a dummy per user(!)
registry entry just to pass ICEs; incredibly, even with per machine
installations!
- advertised shortcuts bloat the .msi if you use external .cabs
- advertised shortcut with same binary but different command-line argument
did not work (didn't really try to confirm or resolve that, because I
switched to non-advertised)
- shortcuts can't have dynamic names (set by property)
- shortcut folders need to be explicitely removed on uninstall while file
directories need not (why?)
- ini file entries must be piggy backed to the containing directory
component
  (no, I can't use the registry: it's not network transparent)
- IniFileSearch does only work in the Windows folder!
- FileSearch produces parent folder when @Id not set: documentation wrong
and/or does not work; bad hack work-around required
- features without components (empty or all conditioned false) behave
eradically (don't know if that's WiX_UI's or MSI's fault)
- features can't be declared mutually exclusive (basic requirement IMHO)
- because of the last two shortcomings: you can't use the feature tree to
configure simple additional setup options; custom dialogs are required
- there is no "warning->OK|cancel" action built in (just "error->cancel");
again: custom dialog required for the simplest thing
- incredibly there ist not even a properties expression syntax: anything
more complex than concatenating properties together and some text, does
require a custom action
- condition expressions is limited to ~200 odd characters, again requiring
custom actions to set dedicated condition properties (condition expressions
tend to become huge as there is no "else if"-chaining possible)
- component update rules (confusingly named REINSTALLMODE, although active
on initial install) are global, not per component
- component update rules operate on momentary assumptions, not taking
RemoveExistingProducts into consideration, thus leaving some files
uninstalled(!) if you choose the wrong (but documented as valid!) sequence;
(incredible, considering the huge database driven overhead behind the scene
- what is it for, then?)
- this one took me ages to believe: MSI does not support setting up the
initial version of files (like databases or configuration files) that are
thereafter modified by the application and should be left alone both on
repair AND on major upgrade (I managed to get one or the other working but
not both); one needs to copy/write those files using a custom action (like I
said: deploy static stuff only!)
- internationalization? don't ask; incredible considering it's just looking
up strings (no, our product does not need a language code; it's
multilingual); many bugs in WiX there too
- the overall confusion, the misinformation about component GUIDs is
amazing! in complete violation of the zero overhead rule, ALL components of
an installation suffer the full blast from the complexities of the oddest
shared component scenario! (our app has no shared components)
- auto-generating WiX files and GUIDs? a contradiction! I solved it using
type 3 MD5 UUISs on product [version] URI + relative installation key path
(a solution that was later independantly added to WiX3, I read somewhere).


There was much more. I must have repressed the memory to save some of my
mental sanity...

And no. Just because I have finally (sort of) clawed my way to the top of
that heap, I don't think everybody else should suffer as much as I have.

RTFM? No, FTFS! (fix the f**ng software!)

Cheers.

_Mark



-----Ursprüngliche Nachricht-----
Von: wix-users-bounces@...
[mailto:wix-users-bounces@...] Im Auftrag von Richard
Gesendet: Montag, 12. Mai 2008 21:10
An: WiX Users
Betreff: Re: [WiX-users] yep - back to being 100% frustrated


In article <013801c8b461$680f26f0$0301a8c0@venom>,
    "Markus Kuehni" <markus.kuehni@...>  writes:

> 1. learn how to write custom actions and use them liberally

Disagree

> 2. learn how to write custom dialogs and use them liberally

Use custom dialogs only when needed; most projects don't need them.

> 3. forget minor and small updates - use major upgrades only

Disagree

> 4. realize that they only really thought of files and registry entries!

Disagree

> 5. realize the power of properties set through custom actions

For Type 51 (set a property) CAs, Agree.

> 6. realize the power of conditions [...]

Agree

> 6. isolate everything in your application that remains absolutely static
> once it's deployed

I'm not sure what this is even talking about.

> 7. then only(!) setup that static part with MSI/WiX

Disagree, if this is talking about files and not items in 8.  If only
talking about items in 8, then Agree.

> 8. setup everything else (such as initial configuration, initial
databases,
> etc.) either with a custom action or with your application (first run)

Agree

> 9. expect problems - this "technology" (to insult that word too) is
gagging
> for trial and error (and shot deadlines)

Disagree.

Like anything else, it helps if you read the documentation.  I've had
a summer intern do just with with a relatively complex MSI
installation (and this was with MSI 1.2) just by taking the time to
read documentation and understand what it says before flailing about
in a non-productive fashion and then declaring frustration.
--
"The Direct3D Graphics Pipeline" -- DirectX 9 draft available for download
      <http://www.xmission.com/~legalize/book/download/index.html>

        Legalize Adulthood! <http://blogs.xmission.com/legalize/>

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
WiX-users mailing list
WiX-users@...
https://lists.sourceforge.net/lists/listinfo/wix-users


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
WiX-users mailing list
WiX-users@...
https://lists.sourceforge.net/lists/listinfo/wix-users

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
WiX-users mailing list
WiX-users@...
https://lists.sourceforge.net/lists/listinfo/wix-users
Neil Sleightholm
Re: yep - back to being 100% frustrated
Reply Threaded More
Print post
Permalink
Just to add my thoughts on this.

For me the key thing was learning that deployment is hard, no very hard!
I was relatively late to MSIs but have used Wise Installer and SMS
Installer (same thing really) to write many script based installs. I
found these tools hide far too much from me and actually made it too
easy, I think I was just lucky that installs worked and I always ignored
uninstall. In one corporate environment we decided that all installs
would be install only and that uninstall meant rebuild the box!

IMHO part of the reason for deployment being hard is that application
designers rarely think about it, then 2 days before shipping someone
says "write an install for this". Rob wrote an interesting blog about
this http://robmensching.com/blog/archive/2007/08/10/SDD-before-TDD.aspx
and as I commented before, I believe you should write the install then
the code - if you can't install it, don't code it.

I find a lot of the odd things I am asked to do installs could have been
solved in the application much easier and if I can push back I do but it
is usually too late.

Neil

Neil Sleightholm
X2 Systems Limited
neil@...



-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
WiX-users mailing list
WiX-users@...
https://lists.sourceforge.net/lists/listinfo/wix-users
Scott Palmer-3
Re: yep - back to being 100% frustrated
Reply Threaded More
Print post
Permalink
In reply to this post by Rob Mensching-2
Well I dropped by to ask for help (I wonder if I will get it now :-)) but first I have to chime in and agree with Chris and Mark.  I dislike that what I am about to post is basically a rant, but I think there are a lot more people on their side than others seem to think, so I want to show my support.

Rob, it's worse than assembly... I can handle assembly, it's just low level, there is still logic and order to it (well, less so with Intel.. but still).    Many of the statements in this thread defending WiX demonstrates to me how out of touch some people (the development team?) are with the needs of the users.  Of course the fact that MSI sucks beyond belief isn't the fault of WiX.  That WiX does so little to remedy the situation is something that can be addressed though.  If it wasn't a "design goal" one wonders why?  Your #3 - "being very cautious" is valid of course... but there is a very strong need to "automagically fix things" because what you've got with MSI is a REALLY big mess.

I still laugh that short filenames are required in what is labelled as version 2... that is so far off the mark.  I've even seen comments relating to V3 (where short filenames were addressed) that go something like "apparently some developers found that useful" maybe I missed the sarcasm, but it seemed as if the WiX development team didn't get how brain dead the short filenames were in the first place?  Keeping short filenames around at all has got to be one of Microsoft's biggest blunders, the fact that MSI only runs on systems that support long filenames adds to the pain.  I still to this day am dumbfounded that anyone uses WiX V2, they are masochists I guess.

(comments below are referring to other messages, not Rob's that I have quoted at the bottom)

>> 2. learn how to write custom dialogs and use them liberally

>Use custom dialogs only when needed; most projects don't need them.

So very wrong.  They are needed.. in my experience, almost always.  In the cases where you don't need them, you usually don't even need an installer at all - though I think all software on Windows should require an installer that is properly integrated into the Add/Remove programs database before the system will even run it.  It would probably plug a few user vulnerabilities in a much friendlier way than the Vista disaster, It's just not practical because of the difficulty in making a proper installer - a fault of MSI.

>"My critisism does not come from the frustration of being stuck. It does come from realization, once it was solved, how complicated even the simplest task was!"

Full agreement here.  We have a team of very bright developers.. and all of them stare in disbelief at what needs to be done for the installer. When I have to seriously struggle with the decision to write an installer framework from scratch or suffer though the poorly thought out crap that is available already - something is wrong.  I choose to suffer through MSI because it appears to be "the right way to install software on Windows" - why else is it "built-in"?

We moved to WiX because the other products like Install Shield/Install Anywhere were too narrow and only worked well for the most trivial installs - and they were severely overpriced for that.  Hearing that internal projects at Microsoft were using WiX gave us some confidence in it.

I do need to re-state that I realize most of the pain points with WiX are because of the complete rubbish that WiX has to work with - MSI.  MSI is so filled with seemingly arbitrary restrictions and odd-ball requirements.   Simple things like getting icons to work properly for example are needlessly encumbered with nonsensical requirements.   That's a perfect example of something WiX could "fix" but doesn't.   Another example is the simple task of  getting the "back" button to work in a UI if you need a few custom dialogs (with some of them conditionally shown).  That the end user EVER has to code the logic for the back button is ridiculous.  I realize that the way MSI does UIs is much lower level, that having a back button at all isn't a requirement of MSI... but be practical - handling the common case of having the back button is a good thing and doesn't need to interfere with anyone that chooses to slap some odd-ball UI on their installer.

I think the WiX development team underestimates the number of p