Read the descriptions of the following ICEs: ICE18, ICE38, ICE43, ICE57*,
ICE64, & ICE91. (I'm sure I'm missing one or more additional pertinent ones
somewhere)
*ICE57 doesn't check the value of ALLUSERS because that property can be
overridden during an installation, so if it thinks the referenced location
*might* be user-profile, it is considered user-profile.

In general, any installation that puts things in both per-machine and
per-profile locations will eventually (depending on circumstances,
especially with roaming profiles and with multiple users on the same box)
"cause problems", either with reinstallation or with orphaning data, or
both. It is best to make your installations pure-perMachine or pure-perUser
and never mix them, and treat data generated during the running of the
application as user data, not program data (even if it isn't formatted for
the user's direct use nor placed in their "Documents" (or "My Documents")
folder).

Since the directory property values associated with the Start menu vary
(based on ALLUSERS) and can be profile data (but don't have to be) the ICE
tests kick in and impose requirements that, for pure perMachine
installations, often seem completely brain-dead. Since the requirement that
the ICE test is intending to protect you from may not apply to your
installation, you may not want the requirement to add useless additional
registry keys in places you prohibit yourself from placing resources. WiX
supplying those additional resources on your behalf without you knowing or
explicitly consenting to would not be considered a good thing by many who
depend on authoring and knowing exactly what is in their packages, and who
are prepared to deal with ignoring certain ICE reports they consider
irrelevant to their package.

"... roaming profiles seemed like such a good idea at the time ..."
wistfully heard around SetupLand.

The rational for using registry instead of file location for the Start menu
is this:
If the keypath of the component is user "A"s Start menu, then user "B" will
never have a shortcut (since it points to a particular non-profile-generic
location. If, on the other hand, the keypath is a HKCU registry key/value,
then when user "B" touches the installation, they will get the shortcut
added because its component will be seen as "missing" invoking a repair.
However, you shouldn't do that to your users since you should be putting
your shortcuts in "All Users" if you install perMachine, and B will never be
able to access the program if it was installed perUser in A's profile,
negating the problem in the first place. Thus, the logic of the ICE is
flawed, in my opinion, if you employ reasonable rules, and may possibly be
ignored. However, if you are seeking approval for Windows Logo, you may not
be able to ignore these ICEs (I don't really know, I have never submitted an
application for Logo), thus "your mileage may vary".

In C++, if I forget to call delete in a tight loop that calls new and leak
memory as a result, I don't want the compiler calling delete for me, since
that tight loop may actually be storing those pointers somewhere (it may not
be a memory leak after all). Same principles apply here. Just as C++ gives
you the Windows Platform with only some protection, WiX gives you Windows
Installer with only some protection. It hands you the loaded gun. It doesn't
force the direction in which you point it. That direction is up to you. Just
as you have to understand the technology you program to make effective and
secure use of it, you have to understand the technology you author to make
effective and secure use of it.

Just because many of the other toolsets for Windows Installer try to hide
the technology (and usually do unsafe  or unreliable things as a result)
from the developer doesn't mean that WiX should. Back in the 90s we used to
say that VB protected you from the platform and C++ allowed you to hang
yourself with it. Both VB and C++ have progressed since then, but the basic
idea is still the same: if you want/need the power of the platform, you go
with the tool that gives you that power, but with that comes the
responsibility to understand the platform. Tools that don't give you the
full power may never be able to address all your needs (or may become so
complex in attempting to do so in a safe fashion that you get caught in the
seams) that they become too expensive one way or another for your needs.

Yes, we recognize that Windows Installer is a technology area that hasn't
yet received enough good documentation and explanation. Some of us are
working on that (slowly, as we can). Please keep these questions coming.
They help us remember what we didn't understand when we were first
confronted with this space, and that is invaluable in trying to get us to
improve the way we disseminate the "tribal knowledge" associated with
application deployment and servicing on Windows Platforms.

-----Original Message-----
From: Markus Karg [mailto:markus.k...@gmx.net] 
Sent: Sunday, November 01, 2009 8:48 AM
To: 'General discussion for Windows Installer XML toolset.'
Subject: [WiX-users] (no subject)

The WiX manual contains the following:

 

"The first is a RemoveFolder element, which ensures the
ApplicationProgramsFolder is correctly removed from the Start Menu when the
user uninstalls the application. The second creates a registry entry on
install that indicates the application is installed."

 

I have two question about this:

 

(1) Why do I have to care about removing the start menu folder? I know, that
this is some issue with the Windows Installer Server (even I actually do not
understand the issue). But since it is a *general* issue that *any* Start
Menu folder will suffer from, why does WiX not solve the problem on it's own
but instead forces the .wsi author to remind this in each and every .wsi
file?

 

(2) If I (as an MSI beginner) understood correctly, the idea of the key file
is to have one unique "thing" that Windows Installer will check to see if
the component is installed currently. What I do not understand here is, why
the the abovementioned example is using an artifical (not further needed)
registry key to remind itself about the need to remove the Start Menu
folder? I mean, why isn't it possible to reference the start menu folder
itself, or at least, why not referencing the installation's main file
instead of introducing an artificial registry entry?

 

Sorry for my silly questions, but I want to really understand this, and MSDN
does not really say why but only what.

 

Thanks

Markus

----------------------------------------------------------------------------
--
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay 
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users


------------------------------------------------------------------------------
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay 
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to