wixlib and media/diskid settings

4 messages Options
Embed this post
Permalink
Nick Ball

wixlib and media/diskid settings

Reply Threaded More More options
Print post
Permalink
Hi,

 

I'm creating a wixlib, and then using it in my main setup program, but
I'd like the lib to go into a separate cab file. Because the contents of
the lib have been generated by heat, I've put the disk ID on the
directory, rather than each component. This code, understandably, does
not work:

 

    <Fragment>

        <Media Id="2" Cabinet="file.cab" EmbedCab="no"/>

 

        <DirectoryRef Id="INSTALLFOLDER">

            <Directory Id="Test" Name="Test" DiskId="2">

            </Directory>

        </DirectoryRef>

    </Fragment>

 

Heat output:

 

    <Fragment>

        <DirectoryRef Id="Test">

            <Component Id="File" Guid="*">

                <File Id="File" KeyPath="yes"
Source="$(var.Folder)\file" />

            </Component>

        </DirectoryRef>

    </Fragment>

 

If I edit the heat output directly and specify the diskid, it does work.

    <Fragment>

        <DirectoryRef Id="Test" DiskId="2">

            <Component Id="File" Guid="*">

                <File Id="File" KeyPath="yes"
Source="$(var.Folder)\file" />

            </Component>

        </DirectoryRef>

    </Fragment>

 

But I really want to be able to regenerate the file that heat produces
without any subsequent editing. Is there a way of doing this? One
solution that I keep wondering about is changing the output of heat to
an include file. This would get round a bunch of problems I've been
having. Could that be added as a feature request?

 

Regards

 

Nick

------------------------------------------------------------------------------
_______________________________________________
WiX-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/wix-users
Rob Mensching-6

Re: wixlib and media/diskid settings

Reply Threaded More More options
Print post
Permalink
What about using an XSL transform to modify the heat output?

Nick Ball wrote:

> Hi,
>
>
>
> I'm creating a wixlib, and then using it in my main setup program, but
> I'd like the lib to go into a separate cab file. Because the contents of
> the lib have been generated by heat, I've put the disk ID on the
> directory, rather than each component. This code, understandably, does
> not work:
>
>
>
>     <Fragment>
>
>         <Media Id="2" Cabinet="file.cab" EmbedCab="no"/>
>
>
>
>         <DirectoryRef Id="INSTALLFOLDER">
>
>             <Directory Id="Test" Name="Test" DiskId="2">
>
>             </Directory>
>
>         </DirectoryRef>
>
>     </Fragment>
>
>
>
> Heat output:
>
>
>
>     <Fragment>
>
>         <DirectoryRef Id="Test">
>
>             <Component Id="File" Guid="*">
>
>                 <File Id="File" KeyPath="yes"
> Source="$(var.Folder)\file" />
>
>             </Component>
>
>         </DirectoryRef>
>
>     </Fragment>
>
>
>
> If I edit the heat output directly and specify the diskid, it does work.
>
>     <Fragment>
>
>         <DirectoryRef Id="Test" DiskId="2">
>
>             <Component Id="File" Guid="*">
>
>                 <File Id="File" KeyPath="yes"
> Source="$(var.Folder)\file" />
>
>             </Component>
>
>         </DirectoryRef>
>
>     </Fragment>
>
>
>
> But I really want to be able to regenerate the file that heat produces
> without any subsequent editing. Is there a way of doing this? One
> solution that I keep wondering about is changing the output of heat to
> an include file. This would get round a bunch of problems I've been
> having. Could that be added as a feature request?
>
>
>
> Regards
>
>
>
> Nick
>
> ------------------------------------------------------------------------------
> _______________________________________________
> WiX-users mailing list
> [hidden email]
> https://lists.sourceforge.net/lists/listinfo/wix-users
>  

------------------------------------------------------------------------------
_______________________________________________
WiX-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/wix-users
Brian Rogers

Re: wixlib and media/diskid settings

Reply Threaded More More options
Print post
Permalink
Hey Nick,

Have you looked into a custom heat.exe extension? You would only have to
create a mutator that added the disk Id of your choice. It would also give
you the ablitity to do some more advanced manipulation.

http://blogs.msdn.com/icumove/archive/2009/07/02/WiX-Heat-Extension_3A00_-Setting-Up-a-Custom-Extension-Project.aspx

Thanks,

Brian Rogers
"Intelligence removes complexity." - Me
http://blogs.msdn.com/icumove <-- NEW


On Mon, Jul 6, 2009 at 10:38 AM, Rob Mensching <[hidden email]> wrote:

> What about using an XSL transform to modify the heat output?
>
> Nick Ball wrote:
> > Hi,
> >
> >
> >
> > I'm creating a wixlib, and then using it in my main setup program, but
> > I'd like the lib to go into a separate cab file. Because the contents of
> > the lib have been generated by heat, I've put the disk ID on the
> > directory, rather than each component. This code, understandably, does
> > not work:
> >
> >
> >
> >     <Fragment>
> >
> >         <Media Id="2" Cabinet="file.cab" EmbedCab="no"/>
> >
> >
> >
> >         <DirectoryRef Id="INSTALLFOLDER">
> >
> >             <Directory Id="Test" Name="Test" DiskId="2">
> >
> >             </Directory>
> >
> >         </DirectoryRef>
> >
> >     </Fragment>
> >
> >
> >
> > Heat output:
> >
> >
> >
> >     <Fragment>
> >
> >         <DirectoryRef Id="Test">
> >
> >             <Component Id="File" Guid="*">
> >
> >                 <File Id="File" KeyPath="yes"
> > Source="$(var.Folder)\file" />
> >
> >             </Component>
> >
> >         </DirectoryRef>
> >
> >     </Fragment>
> >
> >
> >
> > If I edit the heat output directly and specify the diskid, it does work.
> >
> >     <Fragment>
> >
> >         <DirectoryRef Id="Test" DiskId="2">
> >
> >             <Component Id="File" Guid="*">
> >
> >                 <File Id="File" KeyPath="yes"
> > Source="$(var.Folder)\file" />
> >
> >             </Component>
> >
> >         </DirectoryRef>
> >
> >     </Fragment>
> >
> >
> >
> > But I really want to be able to regenerate the file that heat produces
> > without any subsequent editing. Is there a way of doing this? One
> > solution that I keep wondering about is changing the output of heat to
> > an include file. This would get round a bunch of problems I've been
> > having. Could that be added as a feature request?
> >
> >
> >
> > Regards
> >
> >
> >
> > Nick
> >
> >
> ------------------------------------------------------------------------------
> > _______________________________________________
> > WiX-users mailing list
> > [hidden email]
> > https://lists.sourceforge.net/lists/listinfo/wix-users
> >
>
>
> ------------------------------------------------------------------------------
> _______________________________________________
> WiX-users mailing list
> [hidden email]
> https://lists.sourceforge.net/lists/listinfo/wix-users
>
------------------------------------------------------------------------------
_______________________________________________
WiX-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/wix-users
Nick Ball

Re: wixlib and media/diskid settings

Reply Threaded More More options
Print post
Permalink
In reply to this post by Rob Mensching-6
Hi Rob,

Indeed, that's what I've now done. Took me a while because I was totally
new to xslt. Just in case anyone else needs it, here it is.

-Nick

---------------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:wix="http://schemas.microsoft.com/wix/2006/wi"
exclude-result-prefixes="msxsl"
>
    <xsl:output method="xml" indent="yes"/>
 
  <xsl:template match="@* | node()">
    <xsl:copy>
      <xsl:apply-templates select="@* | node()"/>
    </xsl:copy>
  </xsl:template>

  <xsl:template match="wix:DirectoryRef">
    <xsl:copy>
      <xsl:attribute name="DiskId">10</xsl:attribute>
      <xsl:apply-templates select="@* | node()"/>
    </xsl:copy>
  </xsl:template>

</xsl:stylesheet>

-----------------------------

-----Original Message-----
From: Rob Mensching [mailto:[hidden email]]
Sent: 06 July 2009 18:38
To: General discussion for Windows Installer XML toolset.
Subject: Re: [WiX-users] wixlib and media/diskid settings

What about using an XSL transform to modify the heat output?

Nick Ball wrote:
> Hi,
>
>
>
> I'm creating a wixlib, and then using it in my main setup program, but
> I'd like the lib to go into a separate cab file. Because the contents
of

> the lib have been generated by heat, I've put the disk ID on the
> directory, rather than each component. This code, understandably, does
> not work:
>
>
>
>     <Fragment>
>
>         <Media Id="2" Cabinet="file.cab" EmbedCab="no"/>
>
>
>
>         <DirectoryRef Id="INSTALLFOLDER">
>
>             <Directory Id="Test" Name="Test" DiskId="2">
>
>             </Directory>
>
>         </DirectoryRef>
>
>     </Fragment>
>
>
>
> Heat output:
>
>
>
>     <Fragment>
>
>         <DirectoryRef Id="Test">
>
>             <Component Id="File" Guid="*">
>
>                 <File Id="File" KeyPath="yes"
> Source="$(var.Folder)\file" />
>
>             </Component>
>
>         </DirectoryRef>
>
>     </Fragment>
>
>
>
> If I edit the heat output directly and specify the diskid, it does
work.

>
>     <Fragment>
>
>         <DirectoryRef Id="Test" DiskId="2">
>
>             <Component Id="File" Guid="*">
>
>                 <File Id="File" KeyPath="yes"
> Source="$(var.Folder)\file" />
>
>             </Component>
>
>         </DirectoryRef>
>
>     </Fragment>
>
>
>
> But I really want to be able to regenerate the file that heat produces
> without any subsequent editing. Is there a way of doing this? One
> solution that I keep wondering about is changing the output of heat to
> an include file. This would get round a bunch of problems I've been
> having. Could that be added as a feature request?
>
>
>
> Regards
>
>
>
> Nick
>
>
------------------------------------------------------------------------
------
> _______________________________________________
> WiX-users mailing list
> [hidden email]
> https://lists.sourceforge.net/lists/listinfo/wix-users
>  



------------------------------------------------------------------------------
Enter the BlackBerry Developer Challenge  
This is your chance to win up to $100,000 in prizes! For a limited time,
vendors submitting new applications to BlackBerry App World(TM) will have
the opportunity to enter the BlackBerry Developer Challenge. See full prize
details at: http://p.sf.net/sfu/blackberry
_______________________________________________
WiX-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/wix-users