I think you have two different issues going on here:

First issue is how to package (the bitness question):

Here is what I propose you consider for the bitness question (I didn't build
this to verify, but it should be close):

Don't include the Package/@Platform attribute. Instead, call candle/light
twice (like this, replacing "..." with appropriate data, and using the
x86/x64 pattern as the most typical):

candle ... -arch x86 -out ...\x86\ ...
light ... ...\x86\... ...

candle ... -arch -x64 -out ...\x64\ ...
light ... ...\x64\... ...

and in your WXS authoring (I am assuming this is a per-machine installation.
Change the directory tree below as appropriate if this is per-user):
 - for your directory table:
<Directory Id="TARGETDIR" Name="SourceDir">
<?if $(sys.PLATFORM)=Intel?>
<?define BldPlatform=Intel?>
<?else?>
<?foreach BldPlatform in Intel;$(sys.PLATFORM)?>
<?endif?>

<?if $(var.BldPlatform)=Intel?>
<?define ProgFilesDirId=ProgramFilesFolder?>
<?define CapsPlatform=INTEL?>
<?else?>
<?define ProgFilesDirId=ProgramFiles64Folder?>
<?if $(var.BldPlatform)=x64?>
<?define CapsPlatform=X64?>
<?else?>
<?define CapsPlatform=INTEL64?>
<?endif?>
<?endif?>

  <Directory Id="$(sys.ProgFilesDirId)">
    <Directory Id="MYINSTALLDIR$(var.CapsPlatform)"/>
  </Directory>

<?if $(sys.PLATFORM)!=Intel?>
<?endforeach?>
<?endif?>
</Directory>

 - surround your components (individually or as a group) with:
<?if $(sys.PLATFORM)=Intel?>
<?define BldIs64=no>
<?define BldPlatform=Intel?>
<?else?>
<?define BldIs64=yes>
<?foreach BldPlatform in Intel;$(sys.PLATFORM)?>
<?endif?>

<?if $(var.BldPlatform)=Intel?>
<?define CapsPlatform=INTEL?>
<?elseif $(var.BldPlatform)=x64?>
<?define CapsPlatform=X64?>
<?else?>
<?define CapsPlatform=INTEL64?>
<?endif?>

<DirectoryRef Id="MYINSTALLDIR$(var.CapsPlatform)">
  <Component Id="MyCompId$(var.BldPlatform)" Guid="*" Win64="$(var.BldIs64)"
...>
    ...
  </Component>
</DirectoryRef>

<?undef BldIs64?>
<?if $(sys.PLATFORM)!=Intel?>
<?endforeach?>
<?endif?>

Using the above pattern/code you can build x86 (containing just 32-bit) and
either/both x64/ia64 packages that each contain both 32 and 64-bit
components (if you name your build directories "Intel/x64/Intel64" you can
access them using the $(var.BldPlatform) instead of having to add more
conditional code to what is above).

The other question has to do with how the user opts out of particular
registrations and how you protect any "required" values that are already
there, and if you would then somehow "restore" them upon removal, and if so
how you would validate that they are still valid at that time. Can't help
there without more details as to how you intend to implement "opt-out".

-----Original Message-----
From: Jan Wester [mailto:happyhon...@gmail.com] 
Sent: Friday, November 20, 2009 3:56 AM
To: General discussion for Windows Installer XML toolset.
Subject: Re: [WiX-users] Supplemental shell extensions installation

On Fri, Nov 20, 2009 at 10:22 AM, Blair <os...@live.com> wrote:
> Aaron's blog will help you with building your two MSIs (32- & 64-bit)
using
> the exact same sources. On a 64-bit OS, explorer.exe will be a 64-bit app,
> so you won't need the 32-bit mirrored installation. However, if you feel
you
> really need them, you could use the <?foreach?> preprocessor command and
> "duplicate" the components.
>
> As I understand your issue regarding the shell-extension registration, it
is
> that you don't know what file types/extensions you support until such time
> as you are installing, correct? Or do you just need to only install into
> those filetypes you do support if they already existed in the system?
Could
> you please clarify?
>
> Once we know what your intended process is (as Chad seems to be saying),
we
> can then coach with ideas, with both how-to-implement as well as
> this-other-might-be-better styles of responses.

Hello Blair,

Sadly, I -do- need the 32-bit installation side-by-side. When using a
32-bit application (which is the majority of the stuff out there), it
will use the 32-bit explorer components rather than the 64-bit ones.
Since a good part of the focus lies with making metadata available in
explorer and its components (think of having a 32-bit application
going File->Open, using details view and sorting on some of this
custom metadata), both 32-bit and 64-bit are necessary on 64-bit
computers for a seamless experience.

The support for each filetype is fully optional to allow the user to
opt out. A filetype may either not be registered at all (application
using it hasn't registered it) or it may be registered to a (from our
point of view) random application. Suppose you have .XYZ:

* If there is no traces of a .XYZ registration, we make our custommade
ProgID called XYZHandler (I'm not all that original) and register the
appropriate stuff there. In the end, these files would still be
useless for doubleclicking and such, but that is not something I could
change either way as it is beyond the scope of my installation. (Not
installing anything in this case is not preferable - a surprising
amount of people/programs open everything through File->Open dialogs
in programs which don't register filetypes that I have noticed, so
there is most definitely added value by having these registrations.)
* If there is a trace of a .XYZ registration using a 'Xylophone.Zing'
ProgID, we make our modifications to that ProgID, and leave everything
we don't need to change alone. So stuff like open handlers, drop
targets, and whatever other fancy stuff... it remains. Registering
some thumbnail, property and preview handlers is all that is needed.

The point is to supplement the user in his/her daily activities, not
to take control of them. Either way, my apologies for another
long-winded email, and thank you for your valuable insights.

Regards,

Jan Wester

----------------------------------------------------------------------------
--
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus
on 
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users


------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to