Re: [WiX-users] Using heat.exe as part of an automated build process

2007-05-24 Thread Rob Mensching
Well said, Dacian.

From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of fiordean dacian
Sent: Wednesday, May 23, 2007 2:00 AM
To: wix-users@lists.sourceforge.net
Subject: Re: [WiX-users] Using heat.exe as part of an automated build process

Scott,

Not everything that goes into the installer is COM and self registration. 
Imagine you have a folder containing hundreds of html and gif files for your 
product documentation. Now having a tool for automating the 'harvesting' 
process such that every time you add few gifs to that folder, the tool keeps 
the GUIDs for existing components and only creates new GUIDs for the gifs you 
added. It seems to me like the solution is a catalog component, which it's not 
that easy to implement (no component rules breaking).

Dacian

-
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/___
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users


Re: [WiX-users] Using heat.exe as part of an automated build process

2007-05-24 Thread Rob Mensching
Yes, as long as you have no other shared resources (registry keys?  Common 
files folder?).  Essentially, changing the path makes none of those files 
shared.

-Original Message-
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Anthony Wieser
Sent: Tuesday, May 22, 2007 12:23 AM
To: wix-users@lists.sourceforge.net
Subject: Re: [WiX-users] Using heat.exe as part of an automated build process

Thanks for the heads up.  I'll bear that in mind.

Presumably, changing the root folder for the files each time would solve
this problem then.

so
sample-v1
sample-v2, etc would fix it as the root of the installed pieces.


Anthony Wieser
Wieser Software Ltd

- Original Message -
From: Mike Dimmick [EMAIL PROTECTED]
To: 'Anthony Wieser' [EMAIL PROTECTED];
wix-users@lists.sourceforge.net
Sent: Tuesday, May 22, 2007 12:17 AM
Subject: RE: [WiX-users] Using heat.exe as part of an automated build
process


 Yes, you're breaking rule 1 of the component rules: a file installed to
 the
 same location must always belong to the same component and have the same
 GUID. Change the GUID, it's a new component; change the component, you
 must
 change the final path name of the file. If you don't, you mess up Windows
 Installer's reference counting and it may either remove files prematurely
 or
 not remove them when it should.

 At the very least you restrict where you can schedule the
 RemoveExistingProducts action when performing an upgrade (if you do it
 after
 InstallFiles in the new product, Windows Installer will happily remove all
 the old components - and the files it's just installed).

 --
 Mike Dimmick


-
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
___
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

-
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
___
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users


Re: [WiX-users] Using heat.exe as part of an automated build process

2007-05-24 Thread Rob Mensching
0.  Okay, so you're looking for simplistic code divination.  smile/

1.  I've never met a dev team that when presented with the option of doing more 
work accepted (unless it was some cool graphics work or something).  smile/  
Distributed development rarely happens because each developer says, Ooh, I 
want to maintain the system how my files get installed (although some do).  It 
usually happens because someone that can see the big picture says, Our 
processes and product would be better if we distributed the labor across all of 
our developers so that the people with the knowledge of how things work are 
responsible for making them work.  I often compare this to the build process.  
Are the individual developers responsible for adding their new source files to 
the build system?  In this day and age, the answer is almost always yes.  I 
don't know why adding new files to the product is different.

Note, I'm not being critical.  I'm just trying to push conventional wisdom a 
little bit so that people at least entertain the idea that setup development 
should be distributed like all the rest of the development.  The fact that the 
WiX toolset integrates into a build process makes this possible where 
(historically) other setup authoring tools tended to centralize the work.

2.  Because you have such a controlled environment it may be possible to 
generate the portions of setup as you desire.  Your strict rule of uninstalling 
before installing the next version makes this possible *as long as* you never 
have shared resources.  If you share resources, you again have to worry about 
automagically generating the shared GUIDs.

3.   Heat.exe is not the tool you're looking for (although it looks a lot like 
the one you need) because the WiX toolset is not tailored for any particular 
environment.  Because the WiX toolset is intended to be used by anyone that 
needs to build Windows Installer packages we keep the tools following the 
widest array of best practices possible.

In the distant past there was an autogenerate feature (like the one you 
describe) as part of the WiX toolset.  A team used that tool to ship their 
product.  When it came time to patch the product they were screwed because they 
had to install into far less controlled environments than the one you described 
and had to take into account some shared libraries.  They were livid with me 
and the WiX toolset for not pointing them in the right direction.  Since then, 
I've shied away from adding features that could silently hose a developer.

4.  That said, I have a couple research projects going on to try to aid code 
divination tools.

5.  So, bottom line, as long as you can control your environment then you can 
probably get away with a very simplistic code divination tool and since the 
WiX toolset operates in a great many uncontrolled environments we have not yet 
figured out how to write a code divination tool that works correctly in all 
cases.


PS:  Feel free to keep checking back here or my blog, 
http://robmensching.com/blog.  If any of the code divination research bears 
fruit, I'm quite certain I'll be blogging about it.  smile/


From: Yexley, Robert (LNG-CON) [mailto:[EMAIL PROTECTED]
Sent: Monday, May 21, 2007 12:21 PM
To: Rob Mensching; Scott Palmer
Cc: wix-users@lists.sourceforge.net
Subject: RE: [WiX-users] Using heat.exe as part of an automated build process

Thanks Rob. But the code divination that you speak of is not really what I'm 
looking for. I'm not looking for some voodoo that will get me out of doing my 
job, I'm just looking for a way to do it more efficiently and effectively. The 
*actual* situation that I have is that the files that make up the web 
application that I'm trying to create an installer for change, at least 
slightly, from week-to-week. ASPX pages get added, js files get removed, etc. 
The file system is a moving target. I've discussed the maintenance of .wxs 
files with the development team and the general consensus seems to be that 
having to update/change a .wxs file to add or remove a component whenever a 
file is added or removed from the codebase is not really feasible. The hope, 
then, was that there might be some way, some tool that I could use, to 
automatically generate a .wxs source file with all of the components needed 
by simply pointing it at a given directory. I can setup my automated build 
process to take the raw code directory and copy only the files needed to a 
staging directory (remove all files with the following extensions: .cs, 
.csproj, etc)...that directory then becomes a mirror image of what I want the 
target machine to look like after having run the installer.

I have no problem with creating a main .wxs source file with all of the custom 
UI logic and stuff like that in it, but having to manually maintain files for 
each and every single file that makes up an application is tedious at best 
(more colorful ways of describing that process come to mind as well).

The other

Re: [WiX-users] Using heat.exe as part of an automated build process

2007-05-24 Thread Rob Mensching
1.  Yes.  You are correct.  Many tools in Visual Studio still encourage self 
registration.  It has been a long hard fight (6 years or so) and I’m just 
starting to get people over there that understand what a horrible example they 
are setting.  Some of them have asked, “Why is deployment so hard” and I point 
at the things they’ve done to encourage SelfReg (ATL built in and Installer 
classes).  Believe it or not, SelfReg is a key component of the pain that 
was/is DLL Hell.

2.  I agree that other processes should be put in place to move completely away 
from SelfReg and towards  declarative statements.  I would like to point out 
though that if Visual Studio did not automatically generate the registry code 
for you to write all of your keys to the registry that you’d probably be 
complaining about that amount of work.  It takes far less effort to declare 
your COM registration in the WiX toolset (sometimes only one Class element) 
than code to write the dozen or so registry keys.

3.  Actually your comment about SelfReg being self-contained is actually the 
root of the issue.  The SelfReg code can’t see enough of the big picture to do 
the right things in all cases.  For example, let’s say you and I share a DLL 
that is SelfReg’d.  User installs your app and my app (order doesn’t matter).  
User decides she doesn’t like my app so she uninstalls my app.  My app calls 
off to the SelfReg DLL to uninstall and suddenly your app doesn’t work anymore. 
 That pretty much sucks for the user, eh?

4.  I’m glad that your application is simple enough to be completely happy with 
the major upgrade functionality provided by the Windows Installer.  That 
certainly the easiest way to do things.  However even that simplicity does not 
solve the problem I pointed out in the scenario in #3 above.

5.  “All I see is that the rules are changing and it's making things 
difficult.” The rules are not changing.  These rules have been in place for 
almost a decade now and the rules really applied before that.. there just 
weren’t many people that were aware of them.  Because many people weren’t aware 
of them bad things happened, DLL Hell being the most famous.

6.  As I’ve noted in other threads, if you have a controlled environment and 
all of your stuff isolated from the rest of the world and you don’t do any 
sharing in your application then you can get away with pretty simple “code 
divination” rules.  There are admittedly not good tools in the WiX toolset 
(yet) to do this simple code divination (because it doesn’t work at all in many 
cases).

From: Scott Palmer [mailto:[EMAIL PROTECTED]
Sent: Tuesday, May 22, 2007 1:09 PM
To: Rob Mensching
Cc: wix-users@lists.sourceforge.net
Subject: Re: [WiX-users] Using heat.exe as part of an automated build process

The problem here is that Microsoft tools are already in the habit of automatic 
code generation - and they all are designed to produce code for SELF 
REGISTRATION.  The process of self registration is effectively encouraged by 
the development environment.

Now if the development process has to change, fine.  But then we are forced to 
throw out a great deal of the support in Visual Studio for building COM DLLs.  
What replaces what was taken away?  Heat is the closest thing I've found so far 
and I fully understand that trying to extract the needed information from the 
final code like it does can be problematic.

The point is it is a *huge* step backwards in productivity to go from SelfReg 
DLLs to needing every developer trained in WiX so they can manually tweak the 
installer every time they make a relevant change to their COM DLL, let alone 
that they must now remember that this is even necessary.  Other processes could 
be put in place so the COM developer doesn't need to learn WiX but there will 
still be added steps and opportunity for things to go wrong.

When you write: I have yet to see an automated code generation tool that can 
just point at any application of any complexity and go, Oh, that's a 
FizzlyBear and it needs to be installed, uninstalled, upgraded, patched, and 
handle rollback like this.  Oh, and it needs to be per-user/per-machine and 
store state in this location and… and… and…

If you were talking install, uninstall and rollback, then that's an excellent 
argument for using SelfReg.  Everything is nicely self-contained in the DLL and 
no installer-related tool needs to get too complex.

Patching or anything else short of a complete uninstall followed by a 
re-install is something I'm not interested in.  It's asking for trouble and 
simply not worth the effort.  I've seen the writings discouraging CustomActions 
on the grounds that they are just to hard to get right if you need to account 
for all of those scenarios and I believe it.

Anyway... I'm just looking for a build process, including creating the 
installer, that doesn't suck...

Something as simple as a tool that will take the .rgs files from my visual 
studio projects and convert

Re: [WiX-users] Using heat.exe as part of an automated build process

2007-05-23 Thread fiordean dacian
Scott,

Not everything that goes into the installer is COM and self registration. 
Imagine you have a folder containing hundreds of html and gif files for your 
product documentation. Now having a tool for automating the 'harvesting' 
process such that every time you add few gifs to that folder, the tool keeps 
the GUIDs for existing components and only creates new GUIDs for the gifs you 
added. It seems to me like the solution is a catalog component, which it's not 
that easy to implement (no component rules breaking).

Dacian



- Original Message 
From: Scott Palmer [EMAIL PROTECTED]
To: Rob Mensching [EMAIL PROTECTED]
Cc: wix-users@lists.sourceforge.net wix-users@lists.sourceforge.net
Sent: Tuesday, May 22, 2007 10:08:59 PM
Subject: Re: [WiX-users] Using heat.exe as part of an automated build process

The problem here is that Microsoft tools are already in the habit of automatic 
code generation - and they all are designed to produce code for SELF 
REGISTRATION.  The process of self registration is effectively encouraged by 
the development environment.


Now if the development process has to change, fine.  But then we are forced to 
throw out a great deal of the support in Visual Studio for building COM DLLs.  
What replaces what was taken away?  Heat is the closest thing I've found so far 
and I fully understand that trying to extract the needed information from the 
final code like it does can be problematic.


The point is it is a *huge* step backwards in productivity to go from SelfReg 
DLLs to needing every developer trained in WiX so they can manually tweak the 
installer every time they make a relevant change to their COM DLL, let alone 
that they must now remember that this is even necessary.  Other processes could 
be put in place so the COM developer doesn't need to learn WiX but there will 
still be added steps and opportunity for things to go wrong.


When you write: I have yet to see an automated code generation tool that can
just point at any application of any complexity and go, Oh, that's
a FizzlyBear and it needs to be installed, uninstalled, upgraded, patched, and
handle rollback like this.  Oh, and it needs to be per-user/per-machine
and store state in this location and… and… and…

If you were talking install, uninstall and rollback, then that's an excellent 
argument for using SelfReg.  Everything is nicely self-contained in the DLL and 
no installer-related tool needs to get too complex.


Patching or anything else short of a complete uninstall followed by a
re-install is something I'm not interested in.  It's asking for trouble
and simply not worth the effort.  I've seen the writings discouraging 
CustomActions on the grounds that they are just to hard to get right if you 
need to account for all of those scenarios and I believe it.


Anyway... I'm just looking for a build process, including creating the 
installer, that doesn't suck...

Something as simple as a tool that will take the .rgs files from my visual 
studio projects and convert them to the appropriate WiX code might work.  I 
don't know yet.  All I see is that the rules are changing and it's making 
things difficult. Code Devination is something that was already there when I 
used SelfReg... and it was working fine... but now we can't use it.  The tools 
we have to use don't do the job they used to, because they only support SelfReg.


We have the source for the ATL register and unregister code.. I wonder if a 
tool like Heat couldn't just find all the .rgs resources in a DLL and derive 
the WiX code from them?  Perhaps I will write something like that to put in my 
automated build.. that way the ATL COM wizard could almost be used without any 
more manual tweaking.  It turns out the wizards are buggy and screw up the .rgs 
files too... putting different GUIDs in the IDL and .rgs files when the GUID 
should have been matched, but that broke self registration as well, so the 
developers know to fix that already.



Scott

On 5/21/07, Rob Mensching [EMAIL PROTECTED] wrote:














WiX is intended to be used in an automated build system. 
It fits in extremely well with every automated build process that I've
been introduced to.


 


What you appear to be looking for is an automated code
generation process.  Code generation is a completely different
problem than building.  Code generation is about divining what a developer
is thinking (or at least should be thinking) and writing the code for him or
her.  The WiX toolset does not include any good automated code
generation tools.  


 


There are tools (namely heat.exe, and dark.exe if you start with
an MSI) to help developers capture large amounts of data and translate that
into .wxs code.  But those tools are designed to be guided by a developer,
not run blindly in an automated build process.  Of course, the results of
the tools can be checked into source control and then operated on in an
automated build system.


 


Note that writing a automated code

Re: [WiX-users] Using heat.exe as part of an automated build process

2007-05-23 Thread Matthew Janulewicz
Also, people seem to forget that Wix is open/shared source. If something
'sucks' then 'fix it'.

 

Or, feel free to lay down $5000 on something that sucks worse.

 

 

-Matt

 

  _  

From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Bob Arnson
Sent: Tuesday, May 22, 2007 8:34 PM
To: Scott Palmer
Cc: Rob Mensching; wix-users@lists.sourceforge.net
Subject: Re: [WiX-users] Using heat.exe as part of an automated build
process

 

Scott Palmer wrote:



Anyway... I'm just looking for a build process, including creating the
installer, that doesn't suck...


Just FYI: Saying that something sucks is neither useful nor
constructive.



-- 
sig://boB
http://joyofsetup.com/
-
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/___
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users


Re: [WiX-users] Using heat.exe as part of an automated build process

2007-05-22 Thread Anthony Wieser
Thanks for the heads up.  I'll bear that in mind.

Presumably, changing the root folder for the files each time would solve 
this problem then.

so
sample-v1
sample-v2, etc would fix it as the root of the installed pieces.


Anthony Wieser
Wieser Software Ltd

- Original Message - 
From: Mike Dimmick [EMAIL PROTECTED]
To: 'Anthony Wieser' [EMAIL PROTECTED]; 
wix-users@lists.sourceforge.net
Sent: Tuesday, May 22, 2007 12:17 AM
Subject: RE: [WiX-users] Using heat.exe as part of an automated build 
process


 Yes, you're breaking rule 1 of the component rules: a file installed to 
 the
 same location must always belong to the same component and have the same
 GUID. Change the GUID, it's a new component; change the component, you 
 must
 change the final path name of the file. If you don't, you mess up Windows
 Installer's reference counting and it may either remove files prematurely 
 or
 not remove them when it should.

 At the very least you restrict where you can schedule the
 RemoveExistingProducts action when performing an upgrade (if you do it 
 after
 InstallFiles in the new product, Windows Installer will happily remove all
 the old components - and the files it's just installed).

 -- 
 Mike Dimmick


-
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
___
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users


Re: [WiX-users] Using heat.exe as part of an automated build process

2007-05-22 Thread Dyson, Peter
 
After receiving emails from people on this subject asking about our
process, I will reply to all publicly here.

Unfortunatly my employer 'owns' the code, getting OS in the door is hard
enough, getting it out is not an option I am afraid.

However for those interested the general methodology used is as follows.

Each file has an XML file which describes it, how it gets installed and
any required params which cannot be auto harvested. It also lists what
products this file gets used by ( we have a lot of code sharing among
products).

This file is then read and generates wix source files for each product
using transforms and xpath. This pass also tell the products what
components they have. The component files are then built, tranforms are
done to generate the features using the information from pass 1 and then
the final generation of msms and then msis.

This process currently manages our msi generation for 20+ installation
products from 240ish components built from source and a few hundred
ancillary files.

It removes most of the tedium and mistakes made, but is still fully
extensible by careful use of include files.

It's not quite the nirvana of fully automated code generation but it
does remove the tedium and potential mistakes from changing one
component which is used in all products.



-
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
___
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users


Re: [WiX-users] Using heat.exe as part of an automated build process

2007-05-21 Thread Yexley, Robert (LNG-CON)
Is WiX designed to be used in an automated build process? If so, is
there any guidance anywhere on how to do so? I need an installer, and I
need it to be generated as part of an automated build process. The code
based that it needs to be generated from is a moving target...changes on
a ~weekly basis. If WiX isn't what I'm looking for, that's fine, I can
move on. I just need to know that.
 
__
// YEX //
 
 



From: Rob Mensching [mailto:[EMAIL PROTECTED] 
Sent: Friday, May 18, 2007 10:23 PM
To: Scott Palmer; Yexley, Robert (LNG-CON)
Cc: wix-users@lists.sourceforge.net
Subject: RE: [WiX-users] Using heat.exe as part of an automated build
process



Heat isn't designed to be used in an automated build process.

 

From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Scott
Palmer
Sent: Friday, May 18, 2007 7:10 PM
To: Yexley, Robert (LNG-CON)
Cc: wix-users@lists.sourceforge.net
Subject: Re: [WiX-users] Using heat.exe as part of an automated build
process

 

Not exactly.  If you use Heat on a COM DLL, Heat inserts PUT-GUID-HERE
for the GUID so you can do a search/replace as part of the automated
build to keep the GUID correct and always the same for that component. 

Other issues are with the directory structure that Heat uses and the
fact that it's output doesn't compile anyway.

It seems Heat isn't ready for real use yet..  to be expected I guess.

Scott 



On 5/18/07, Yexley, Robert (LNG-CON) [EMAIL PROTECTED]
wrote:

I'm still learning the ins and outs of WiX. I'm working on trying to
integrate the generation of an MSI into our automated build process, and
was wondering about the possibility of using heat.ext to harvest the
files needed for the features and components for the MSI. I've read a
few archived messages from the list that suggested that doing something
like this could potentially be problematic, and isn't recommended, but
if I understand correctly the reasons why, I'm not sure it would really
cause us a problem for what we're wanting to accomplish. So, I'd like to
try to confirm whether or not I understand what the issue is with using
heat, describe why I don't think its an issue for us, and it'd be great
if someone could confirm whether my thinking is correct or not.

 

So, if I understand correctly, the issue with using heat.exe to generate
source files for me as part of an automated build process is that for
each build, the GUID for each component would be different on each
build, which causes problems for the installer if you want it to be able
to upgrade a product installation. Is that right?

 

 

-
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/___
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users


Re: [WiX-users] Using heat.exe as part of an automated build process

2007-05-21 Thread Scott Palmer

But it obviously should be.  I hope this can be fixed,  since we are stuck
with having to deal with all the problems of COM and for some silly reason
(I haven't seen a good argument against it yet) SelfReg is not supported and
officially broken for dynamically linked DLLs on Vista.

Microsoft also has the option of supporting some other method of registering
COM components in the tools that are used to create them (Visual Studio).
Or they could just deprecate COM.. but I doubt they will admit what a
blunder it is, so I'll settle for a build process that is usable in the real
world.  Excuse the rant, but having to put up with all these things (WiX,
MSI, COM, Vista) that work so hard against me is frustrating.


Scott

On 5/18/07, Rob Mensching [EMAIL PROTECTED] wrote:


 Heat isn't designed to be used in an automated build process.



-
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/___
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users


Re: [WiX-users] Using heat.exe as part of an automated build process

2007-05-21 Thread Richard.Foster
Scott stated [Heat] obviously should be [usable in an automated build
process]

 

To which I would reply, Should it really?

 

From my point of view, using Heat (or its WiX V2 predecessor Tallow) is
akin to using a radio controlled rifle from several hundred miles away
without the benefit of a video feed as well. Sure, it can be made to
work, but the consequences if something goes wrong could be fatal (to
your end user's machine, or your ability to appropriately support your
product).

 

I know there are people out there who are using some form of automated
WiX authoring. As long as you truly understand what you are doing (and
are prepared for the consequences if you have messed up) that's fine.

 

I, for one, strongly support Rob and the rest of the WiX developers in
their decision to only supply the rope. Choosing to make a noose out of
it should be entirely your own choice!

 

Oh, and in response to Robert Yexley's question, I have used (and will
continue to use) WiX as part of an automated build process, even though
I have to go through the pain of re-authoring some of the installation
source files when COM GUID's change. As to how appropriate a tool it is
for your specific needs - that depends on what you want to use it for,
and the stability of the files that make up your product.

 

Regards,

Richard

 



From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Scott
Palmer
Sent: Monday, May 21, 2007 9:49 AM
To: Rob Mensching
Cc: wix-users@lists.sourceforge.net
Subject: Re: [WiX-users] Using heat.exe as part of an automated build
process

 

But it obviously should be.  I hope this can be fixed,  since we are
stuck with having to deal with all the problems of COM and for some
silly reason (I haven't seen a good argument against it yet) SelfReg is
not supported and officially broken for dynamically linked DLLs on
Vista. 

Microsoft also has the option of supporting some other method of
registering COM components in the tools that are used to create them
(Visual Studio).  Or they could just deprecate COM.. but I doubt they
will admit what a blunder it is, so I'll settle for a build process that
is usable in the real world.  Excuse the rant, but having to put up with
all these things (WiX, MSI, COM, Vista) that work so hard against me is
frustrating. 


Scott

On 5/18/07, Rob Mensching [EMAIL PROTECTED] wrote:

Heat isn't designed to be used in an automated build process.

 

 




* C O N F I D E N T I A L I T Y N O T I C E *
---
The content of this e-mail is intended solely for the use of the individual or 
entity to whom it is addressed. If you have received this communication in 
error, be aware that forwarding it, copying it, or in any way disclosing its 
content to any other person, is strictly prohibited. Peek Traffic Corporation 
is neither liable for the contents, nor for the proper, complete and timely 
transmission of (the information contained in) this communication. If you have 
received this communication in error, please notify the author by replying to 
this e-mail immediately and delete the material from any computer.


-
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/___
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users


Re: [WiX-users] Using heat.exe as part of an automated build process

2007-05-21 Thread Bob Arnson

Yexley, Robert (LNG-CON) wrote:

Is WiX designed to be used in an automated build process?


The WiX tools, of course. The subject of this thread is your setup 
*authoring*.


The code based that it needs to be generated from is a moving 
target...changes on a ~weekly basis.


Because the WiX tools can be part of your product's build process, 
everybody making changes can keep the setup current.


--
sig://boB
http://joyofsetup.com/

-
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/___
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users


Re: [WiX-users] Using heat.exe as part of an automated build process

2007-05-21 Thread Rob Mensching
WiX is intended to be used in an automated build system.  It fits in extremely 
well with every automated build process that I've been introduced to.

What you appear to be looking for is an automated code generation process.  
Code generation is a completely different problem than building.  Code 
generation is about divining what a developer is thinking (or at least should 
be thinking) and writing the code for him or her.  The WiX toolset does not 
include any good automated code generation tools.

There are tools (namely heat.exe, and dark.exe if you start with an MSI) to 
help developers capture large amounts of data and translate that into .wxs 
code.  But those tools are designed to be guided by a developer, not run 
blindly in an automated build process.  Of course, the results of the tools can 
be checked into source control and then operated on in an automated build 
system.

Note that writing a automated code generation process requires significant 
amount of domain specific knowledge.  I had a conversation just this last week 
with a developer from a company where significant amounts of IDL and VB code is 
generated by the build process.  In that company analysts can only write code 
into some well known named functions and the rest of the structure was provided 
for them.  Because the system was so structured (and strict) he was able to 
automatically generate the .wxs code in much the same way the IDL and VB code 
was generated (for example he was already handling breaking interface changes 
and there is no resource sharing).

Another very large company has strict development guidelines and provides their 
developers with a complete template of .wxs code that adheres to those 
guidelines.  If the developers need to stray from the company development 
guidelines then they can tweak/extend the template .wxs code as necessary.  
However, the generated template code no longer applies.  That company likes the 
WiX toolset because it provides both a solid starting point and the flexibility 
when needed.

I have yet to see an automated code generation tool that can just point at any 
application of any complexity and go, Oh, that's a FizzlyBear and it needs to 
be installed, uninstalled, upgraded, patched, and handle rollback like this.  
Oh, and it needs to be per-user/per-machine and store state in this location 
and... and... and...

Today the WiX toolset provides a solid foundation for your automated build 
system.  We're still dabbling in tools to help make it easier to work with the 
.wxs code but Code Divination is still a skill I haven't mastered at Hogwarts 
yet.


From: Yexley, Robert (LNG-CON) [mailto:[EMAIL PROTECTED]
Sent: Monday, May 21, 2007 6:19 AM
To: Rob Mensching; Scott Palmer
Cc: wix-users@lists.sourceforge.net
Subject: RE: [WiX-users] Using heat.exe as part of an automated build process

Is WiX designed to be used in an automated build process? If so, is there any 
guidance anywhere on how to do so? I need an installer, and I need it to be 
generated as part of an automated build process. The code based that it needs 
to be generated from is a moving target...changes on a ~weekly basis. If WiX 
isn't what I'm looking for, that's fine, I can move on. I just need to know 
that.

__
// YEX //




From: Rob Mensching [mailto:[EMAIL PROTECTED]
Sent: Friday, May 18, 2007 10:23 PM
To: Scott Palmer; Yexley, Robert (LNG-CON)
Cc: wix-users@lists.sourceforge.net
Subject: RE: [WiX-users] Using heat.exe as part of an automated build process
Heat isn't designed to be used in an automated build process.

From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Scott Palmer
Sent: Friday, May 18, 2007 7:10 PM
To: Yexley, Robert (LNG-CON)
Cc: wix-users@lists.sourceforge.net
Subject: Re: [WiX-users] Using heat.exe as part of an automated build process

Not exactly.  If you use Heat on a COM DLL, Heat inserts PUT-GUID-HERE for 
the GUID so you can do a search/replace as part of the automated build to keep 
the GUID correct and always the same for that component.

Other issues are with the directory structure that Heat uses and the fact that 
it's output doesn't compile anyway.

It seems Heat isn't ready for real use yet..  to be expected I guess.

Scott
On 5/18/07, Yexley, Robert (LNG-CON) [EMAIL PROTECTED]mailto:[EMAIL 
PROTECTED] wrote:
I'm still learning the ins and outs of WiX. I'm working on trying to integrate 
the generation of an MSI into our automated build process, and was wondering 
about the possibility of using heat.ext to harvest the files needed for the 
features and components for the MSI. I've read a few archived messages from the 
list that suggested that doing something like this could potentially be 
problematic, and isn't recommended, but if I understand correctly the reasons 
why, I'm not sure it would really cause us a problem for what we're wanting to 
accomplish. So, I'd like to try to confirm

Re: [WiX-users] Using heat.exe as part of an automated build process

2007-05-21 Thread Yexley, Robert (LNG-CON)
Thanks Rob. But the code divination that you speak of is not really
what I'm looking for. I'm not looking for some voodoo that will get me
out of doing my job, I'm just looking for a way to do it more
efficiently and effectively. The *actual* situation that I have is that
the files that make up the web application that I'm trying to create an
installer for change, at least slightly, from week-to-week. ASPX pages
get added, js files get removed, etc. The file system is a moving
target. I've discussed the maintenance of .wxs files with the
development team and the general consensus seems to be that having to
update/change a .wxs file to add or remove a component whenever a file
is added or removed from the codebase is not really feasible. The hope,
then, was that there might be some way, some tool that I could use, to
automatically generate a .wxs source file with all of the components
needed by simply pointing it at a given directory. I can setup my
automated build process to take the raw code directory and copy only the
files needed to a staging directory (remove all files with the
following extensions: .cs, .csproj, etc)...that directory then becomes a
mirror image of what I want the target machine to look like after having
run the installer.
 
I have no problem with creating a main .wxs source file with all of the
custom UI logic and stuff like that in it, but having to manually
maintain files for each and every single file that makes up an
application is tedious at best (more colorful ways of describing that
process come to mind as well).
 
The other major consideration here is the fact that I don't really have
a requirement to deploy to a large user base, nor is there a requirement
for component upgrades either. We're developing an installer to
simplify the process of internal deployment. Within the company that I
work, there is a completely separate organization that maintains our
server environments, and the deployment of applications to those
servers. The idea of simplifying that process for them by creating a
simple installer is very appealing to everyone. So, for our purposes, an
upgrade would really just be a matter of checking to see if the
application is already installed and if it is, uninstall it before
continuing with the current installation. There are a few custom actions
that I would want to perform as part of the process, but again, I can
write that into the installer source and handle that myself. I simply
want something that is capable of looking at a directory and generating
a source file with a component for each of the files and directory
structures in the given directory.
 
I hope that clears some things up. I also hope that makes what I'm
wanting/hoping/trying to do fairly easy. I just need some guidance as to
how to do that, whether it involves the use of heat.exe or something
else. If nothing else exists, fine...I'll write my own tool to do it. I
just wanted to at least ask the question because my scenario seemed to
me to be a common enough one that someone was bound to have faced this
challenge before me, and hoped that someone had already figured out a
solution for it.
 
Thanks.
 
__
// YEX //
 
 



From: Rob Mensching [mailto:[EMAIL PROTECTED] 
Sent: Monday, May 21, 2007 1:16 PM
To: Yexley, Robert (LNG-CON); Scott Palmer
Cc: wix-users@lists.sourceforge.net
Subject: RE: [WiX-users] Using heat.exe as part of an automated build
process



WiX is intended to be used in an automated build system.  It fits in
extremely well with every automated build process that I've been
introduced to.

 

What you appear to be looking for is an automated code generation
process.  Code generation is a completely different problem than
building.  Code generation is about divining what a developer is
thinking (or at least should be thinking) and writing the code for him
or her.  The WiX toolset does not include any good automated code
generation tools.  

 

There are tools (namely heat.exe, and dark.exe if you start with an MSI)
to help developers capture large amounts of data and translate that into
.wxs code.  But those tools are designed to be guided by a developer,
not run blindly in an automated build process.  Of course, the results
of the tools can be checked into source control and then operated on in
an automated build system.

 

Note that writing a automated code generation process requires
significant amount of domain specific knowledge.  I had a conversation
just this last week with a developer from a company where significant
amounts of IDL and VB code is generated by the build process.  In that
company analysts can only write code into some well known named
functions and the rest of the structure was provided for them.  Because
the system was so structured (and strict) he was able to automatically
generate the .wxs code in much the same way the IDL and VB code was
generated (for example he was already handling

Re: [WiX-users] Using heat.exe as part of an automated build process

2007-05-21 Thread Anthony Wieser
I've just built a similar tool today, to help me copy a set of sample files 
to the installation, because I never want to do that by hand, and heat's 
output was just too messy for my liking.

What I've done is taken all of the files in a tree, and created a component 
for each file, with a unique GUID, automatically generated.  In addition, 
the files are relative to a folder elsewhere.

The file looks more or less like this:
?xml version=1.0 encoding=utf-8?
Wix xmlns=http://schemas.microsoft.com/wix/2006/wi;
?define SampDir=C:\projects\business\artgallery\sample_src\?
?define SampDiskId=1?
?define SampParentDir=INSTALLLOCATION?
Fragment
DirectoryRef Id=$(var.SampParentDir)
Directory Id=D0 Name=sample
!-- more directories nest here, containing file/component groups as 
below--
Component Id=C00 Guid=81f9ff04-e26a-45e6-ba24-6cd1466b4f3f
File Id=F00 Name=404.htm KeyPath=yes 
Source=$(var.SampDir)\sample\templates\404.htm DiskId=$(var.SampDiskId) 
/
/Component
!-- lots more components go here for each file in the folder--
/Directory
/DirectoryRef

ComponentGroup Id=CGSamp
ComponentRef Id=C /
/ComponentGroup
/Fragment
/Wix
As you can see, I've marked each of the files as KeyPath=yes and also 
automatically generated ID's for each file, component and folder.
Then I've wrapped the whole lot up inside a fragment, which also contains a 
component group, so I can link the whole file into my build, and then just 
add a simple Feature that uses a ComponentGroupRef.

My intention was to build this as the initial listing of all of the files in 
my folder, and then manually add any additions, but your post made me 
question whether that was necessary.

Is there a downside of just redoing all of the GUID's each time I do an 
update, apart from installation speed?

Anthony Wieser
Wieser Software ltd

- Original Message - 
From: Yexley, Robert (LNG-CON)
To: Rob Mensching ; Scott Palmer
Cc: wix-users@lists.sourceforge.net
Sent: Monday, May 21, 2007 8:21 PM
Subject: Re: [WiX-users] Using heat.exe as part of an automated build 
process


Thanks Rob. But the code divination that you speak of is not really what 
I'm looking for. I'm not looking for some voodoo that will get me out of 
doing my job, I'm just looking for a way to do it more efficiently and 
effectively. The *actual* situation that I have is that the files that make 
up the web application that I'm trying to create an installer for change, at 
least slightly, from week-to-week. ASPX pages get added, js files get 
removed, etc. The file system is a moving target. I've discussed the 
maintenance of .wxs files with the development team and the general 
consensus seems to be that having to update/change a .wxs file to add or 
remove a component whenever a file is added or removed from the codebase 
is not really feasible. The hope, then, was that there might be some way, 
some tool that I could use, to automatically generate a .wxs source file 
with all of the components needed by simply pointing it at a given 
directory. I can setup my automated build process to take the raw code 
directory and copy only the files needed to a staging directory (remove 
all files with the following extensions: .cs, .csproj, etc)...that directory 
then becomes a mirror image of what I want the target machine to look like 
after having run the installer.

I have no problem with creating a main .wxs source file with all of the 
custom UI logic and stuff like that in it, but having to manually maintain 
files for each and every single file that makes up an application is tedious 
at best (more colorful ways of describing that process come to mind as 
well).

The other major consideration here is the fact that I don't really have a 
requirement to deploy to a large user base, nor is there a requirement for 
component upgrades either. We're developing an installer to simplify the 
process of internal deployment. Within the company that I work, there is a 
completely separate organization that maintains our server environments, and 
the deployment of applications to those servers. The idea of simplifying 
that process for them by creating a simple installer is very appealing to 
everyone. So, for our purposes, an upgrade would really just be a matter 
of checking to see if the application is already installed and if it is, 
uninstall it before continuing with the current installation. There are a 
few custom actions that I would want to perform as part of the process, but 
again, I can write that into the installer source and handle that myself. I 
simply want something that is capable of looking at a directory and 
generating a source file with a component for each of the files and 
directory structures in the given directory.

I hope that clears some things up. I also hope that makes what I'm 
wanting/hoping/trying to do fairly easy. I just need some guidance as to how 
to do that, whether it involves the use of heat.exe or something else. If 
nothing else exists, fine...I'll

[WiX-users] Using heat.exe as part of an automated build process

2007-05-18 Thread Yexley, Robert (LNG-CON)
I'm still learning the ins and outs of WiX. I'm working on trying to
integrate the generation of an MSI into our automated build process, and
was wondering about the possibility of using heat.ext to harvest the
files needed for the features and components for the MSI. I've read a
few archived messages from the list that suggested that doing something
like this could potentially be problematic, and isn't recommended, but
if I understand correctly the reasons why, I'm not sure it would really
cause us a problem for what we're wanting to accomplish. So, I'd like to
try to confirm whether or not I understand what the issue is with using
heat, describe why I don't think its an issue for us, and it'd be great
if someone could confirm whether my thinking is correct or not.
 
So, if I understand correctly, the issue with using heat.exe to generate
source files for me as part of an automated build process is that for
each build, the GUID for each component would be different on each
build, which causes problems for the installer if you want it to be able
to upgrade a product installation. Is that right?
 
The reason I don't see this as a problem, is because we're not going to
be using our installers for widespread distribution of our product, and
not likely to upgrade an existing installation, but really just override
it. Well, not actually override it, but I'd like to setup the installer
to check whether or not there's a previous version of the product
installed, and if there is, don't upgrade it, just uninstall it before
installing the new version.
 
So, from what I can tell, since that's the way we want to use our
installer, that issue shouldn't really matter to us, and using heat.exe
to help generate our component and feature source files as part of our
build process should be fine, right? Any help or guidance would be
greatly appreciated. Thanks.
 
__
// YEX //
 
// Bob Yexley
// Contractor / Software Engineer [Extreme Consulting]
// LexisNexis - Risk  Information Analytics Group (RIAG)
// 937.865.6800 ext. 58655
// [EMAIL PROTECTED]
 
 
-
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/___
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users


Re: [WiX-users] Using heat.exe as part of an automated build process

2007-05-18 Thread Scott Palmer

Not exactly.  If you use Heat on a COM DLL, Heat inserts PUT-GUID-HERE for
the GUID so you can do a search/replace as part of the automated build to
keep the GUID correct and always the same for that component.

Other issues are with the directory structure that Heat uses and the fact
that it's output doesn't compile anyway.

It seems Heat isn't ready for real use yet..  to be expected I guess.

Scott


On 5/18/07, Yexley, Robert (LNG-CON) [EMAIL PROTECTED] wrote:


 I'm still learning the ins and outs of WiX. I'm working on trying to
integrate the generation of an MSI into our automated build process, and was
wondering about the possibility of using heat.ext to harvest the files
needed for the features and components for the MSI. I've read a few archived
messages from the list that suggested that doing something like this could
potentially be problematic, and isn't recommended, but if I understand
correctly the reasons why, I'm not sure it would really cause us a problem
for what we're wanting to accomplish. So, I'd like to try to confirm whether
or not I understand what the issue is with using heat, describe why I don't
think its an issue for us, and it'd be great if someone could confirm
whether my thinking is correct or not.

So, if I understand correctly, the issue with using heat.exe to generate
source files for me as part of an automated build process is that for each
build, the GUID for each component would be different on each build, which
causes problems for the installer if you want it to be able to upgrade a
product installation. Is that right?


-
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/___
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users


Re: [WiX-users] Using heat.exe as part of an automated build process

2007-05-18 Thread Rob Mensching
Heat isn’t designed to be used in an automated build process.

From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Scott Palmer
Sent: Friday, May 18, 2007 7:10 PM
To: Yexley, Robert (LNG-CON)
Cc: wix-users@lists.sourceforge.net
Subject: Re: [WiX-users] Using heat.exe as part of an automated build process

Not exactly.  If you use Heat on a COM DLL, Heat inserts PUT-GUID-HERE for 
the GUID so you can do a search/replace as part of the automated build to keep 
the GUID correct and always the same for that component.

Other issues are with the directory structure that Heat uses and the fact that 
it's output doesn't compile anyway.

It seems Heat isn't ready for real use yet..  to be expected I guess.

Scott

On 5/18/07, Yexley, Robert (LNG-CON) [EMAIL PROTECTED]mailto:[EMAIL 
PROTECTED] wrote:
I'm still learning the ins and outs of WiX. I'm working on trying to integrate 
the generation of an MSI into our automated build process, and was wondering 
about the possibility of using heat.ext to harvest the files needed for the 
features and components for the MSI. I've read a few archived messages from the 
list that suggested that doing something like this could potentially be 
problematic, and isn't recommended, but if I understand correctly the reasons 
why, I'm not sure it would really cause us a problem for what we're wanting to 
accomplish. So, I'd like to try to confirm whether or not I understand what the 
issue is with using heat, describe why I don't think its an issue for us, and 
it'd be great if someone could confirm whether my thinking is correct or not.

So, if I understand correctly, the issue with using heat.exe to generate source 
files for me as part of an automated build process is that for each build, the 
GUID for each component would be different on each build, which causes problems 
for the installer if you want it to be able to upgrade a product 
installation. Is that right?


-
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/___
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users