[wix-users] WixVariable in a separate wxs

Russell Haley russ.haley at gmail.com
Thu Feb 1 08:45:09 PST 2018


On Thu, Feb 1, 2018 at 8:39 AM, Russell Haley <russ.haley at gmail.com> wrote:
> On Wed, Jan 31, 2018 at 9:12 PM, Ven H via wix-users
> <wix-users at lists.wixtoolset.org> wrote:
>> Thank you Habib. But if I use a wxi file, I have to have this wxi file
>> directly referred in the Product.wxs file and also the Wix variables like
>> WixUIBannerBmp, WixUIDialogBmp and the Icon elements must be part of
>> Product.wxs also. If I have to add another element in future, again, I may
>> have to modify the Product.wxs. In my case, there is a lot of dynamism and
>> separation required.
>>
>> In Edwin's approach, I just have to include a PropertyRef element in my
>> Product.wxs and I can still have the above mentioned Wix variables and
>> Icons in a separate wxs file and just add a dummy property in it which
>> alone will be referenced in the Product.wxs file using a PropertyRef
>> element.
>>
>> Regards,
>> Venkatesh
>>
>> On Thu, Feb 1, 2018 at 10:18 AM, Habib Salim via wix-users <
>> wix-users at lists.wixtoolset.org> wrote:
>>
>>> Use a wxi file.  like this:
>>>
>>>
>>> ----------------------------------------------
>>> <?xml version="1.0" encoding="utf-8"?>
>>> <Include>
>>>       <!--  courtesy of :
>>> http://weblogs.sqlteam.com/mladenp/archive/2010/02/17/WiX-3-Tutorial-Under
>>> standing-main-WXS-and-WXI-file.aspx
>>>
>>>       Versioning. These have to be changed for upgrades.
>>>       It's not enough to just include newer files.  -->
>>>   <?define MajorVersion="2" ?>
>>>   <?define MinorVersion="0" ?>
>>>   <?define BuildVersion="1" ?>
>>>         <!-- Revision is NOT used by WiX in the upgrade procedure -->
>>>   <?define Revision="658" ?>
>>>         <!-- Full version number to display -->
>>>   <?define
>>> VersionNumber="$(var.MajorVersion).$(var.MinorVersion).$(var.BuildVersion)
>>> .$(var.Revision)" ?>
>>>
>>>         <!--  Upgrade code HAS to be the same for all updates.
>>>         Don't change it.Ever.  -->
>>>   <?define UpgradeCode="your guid here"?>
>>>
>>>
>>>         <!--  Path to the resources directory. resources don't really need
>>> to be included
>>>         in the project structure but I like to include them for for
>>> clarity   -->
>>>   <?define ResourcesDir="$(var.ProjectDir)\Resources" ?>
>>>
>>>       <!--  The name of our application exe file. This will be used to
>>> kill the process when updating
>>>         and creating the desktop shortcut  -->
>>>   <?define ExeName="HSalimCo.WpfPivotViews.exe" ?>
>>>   <?define ProductName = "PivotViews" ?>
>>>   <?define ProductDescription ="PivotViews is a trademark of HSalim & Co.
>>> Inc." ?>
>>>   <?define CurrentVersion = !(bind.FileVersion.filWpfPivotViewsexe) ?>
>>>   <?define ManufacturerName = "HSalim & Co. Inc"?>
>>>   <?define HSalimCoFolder = "HSalimCo" ?>
>>>   <?define IconPath = "$(sys.CURRENTDIR)Includes\PivotViews.ico"?>
>>>   <?define PivotViewsJPEG = "PivotViews.jpg"?>
>>>   <?define UiBackground = "$(sys.CURRENTDIR)Includes\WixUiDialog.jpg"?>
>>>   <?define UiBanner = "$(sys.CURRENTDIR)Includes\WixUiBanner.jpg"?>
>>>   <?define EulaFile = "$(sys.CURRENTDIR)Includes\PivotViewsEULA.rtf"?>
>>>   <?define SuccessImage = "$(sys.CURRENTDIR)Includes\success.bmp"?>
>>>   <?define ErrorImage =  "$(sys.CURRENTDIR)Includes\error.bmp"?>
>>>   <?define SourceFilesDir= "<yourpathhere>\bin\x64\Release"?>
>>>   <?define DXThemesDir="C:\Program Files (x86)\DevExpress
>>> 17.2\Components\Bin\Framework\" ?>
>>>   <?define InstallerActions="<CAprojectPath>\InstallerActions.CA.dll"?>
>>>
>>>
>>> </Include>
>>> ----------------------------------------------
>>>
>>>
>>>
>>>
>>> -----Original Message-----
>>> From: wix-users [mailto:wix-users-bounces at lists.wixtoolset.org] On Behalf
>>> Of Ven H via wix-users
>>> Sent: Wednesday, January 31, 2018 10:11 PM
>>> To: Edwin Castro <egcastr at gmail.com>
>>> Cc: Ven H <venh.123 at gmail.com>; WiX Toolset Users Mailing List
>>> <wix-users at lists.wixtoolset.org>
>>> Subject: Re: [wix-users] WixVariable in a separate wxs
>>>
>>> Thank you Edwin and Rob. In my case, I just need to maintain these
>>> variables and the ones with images, logos and icons in a separate file. I
>>> will have to generate this file dynamically by reading some configuration
>>> file and populate the path for these images from that configuration file.
>>> I don't want to modify Product.wxs programmatically for this. For example,
>>> I want to have a separate file like ImageRefs.wxs,  which may have some
>>> elements like below.
>>>
>>> <?xml version="1.0" encoding="UTF-8"?>
>>> <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
>>> <Fragment>
>>>     <WixVariable Id="WixUIBannerBmp" Value="Path_To_CustomBanner_Bmp" />
>>>     <WixVariable Id="WixUIDialogBmp" Value=" Path_To_CustomDialog_Bmp " />
>>>     <Icon Id="arpIcon.ico" SourceFile=" Path_To_CustomIcon "/> </Fragment>
>>> </Wix>
>>>
>>> Even though the above compiles properly without any errors and the MSI
>>> gets generated, the images / icons are not showing during installation. In
>>> such a case, please advise what would be the best way.
>>>
>>>
>>>
>>>
>>> Regards,
>>> Venkatesh
>>>
>>> On Thu, Feb 1, 2018 at 3:45 AM, Edwin Castro <egcastr at gmail.com> wrote:
>>>
>>> > Rob's exactly right!
>>> >
>>> > I'll repeat what I said earlier, "The code sample really depends on
>>> > what you have in the Fragment(s) containing WixUIBannerBmp and
>>> WixUIDialogBmp.
>>> > ... So if *I don't have anything I can reference*, then ..."
>>> >
>>> > If you have a UI element in the Fragment containing WixUIBannerBmp
>>> > and/or WixUIDialogBmp, then just use UIRef. If there is another
>>> > element you can reference, then reference that element.
>>> >
>>> > Don't do my property hack unless you don't have any other options.
>>> >
>>> > --
>>> > Edwin G. Castro
>>> >
>>> >
>>> > On Wed, Jan 31, 2018 at 11:39 AM, Rob Mensching <rob at firegiant.com>
>>> wrote:
>>> >
>>> >> UIRef?
>>> >>
>>> >> _____________________________________________________________
>>> >>  Short replies here. Complete answers over there:
>>> >> http://www.firegiant.com/
>>> >>
>>> >>
>>> >> -----Original Message-----
>>> >> From: wix-users [mailto:wix-users-bounces at lists.wixtoolset.org] On
>>> >> Behalf Of Edwin Castro via wix-users
>>> >> Sent: Wednesday, January 31, 2018 10:21 AM
>>> >> To: Ven H <venh.123 at gmail.com>
>>> >> Cc: Edwin Castro <egcastr at gmail.com>; WiX Toolset Users Mailing List
>>> >> < wix-users at lists.wixtoolset.org>
>>> >> Subject: Re: [wix-users] WixVariable in a separate wxs
>>> >>
>>> >> The code sample really depends on what you have in the Fragment(s)
>>> >> containing WixUIBannerBmp and WixUIDialogBmp. Remember that when you
>>> >> reference anything inside a Fragment you get everything in that
>>> Fragment.
>>> >> So if I don't have anything I can reference, then I create an
>>> >> arbitrary Property used just for referencing.
>>> >>
>>> >> <Fragment>
>>> >>     <!-- Contains other stuff like WixUIBannerBmp and/or
>>> >> WixUIDialogBmp
>>> >> -->
>>> >>     <Property Id="DoesNotMatterButWillShowUpInPropertyTable"
>>> >> Value="DoesNotMatter"/>
>>> >> </Fragment>
>>> >>
>>> >> Then in another <Fragment> or <Product> I simply reference the
>>> Property:
>>> >>
>>> >> <Product ...>
>>> >>     <!-- other stuff that goes in Product -->
>>> >>     <PropertyRef Id="DoesNotMatterButWillShowUpInPropertyTable"/>
>>> >> </Product>
>>> >>
>>> >> I choose an Id that has some meaning for me but isn't too esoteric. I
>>> >> usually just set Value="1".
>>> >>
>>> >> --
>>> >> Edwin G. Castro
>>> >>
>>> >>
>>> >> On Wed, Jan 31, 2018 at 9:50 AM, Ven H <venh.123 at gmail.com> wrote:
>>> >>
>>> >> > Thanks a lot, Edwin. Sorry for being a bit naive here, but can you
>>> >> > please provide a code sample?
>>> >> >
>>> >> > Regards,
>>> >> > Venkatesh
>>> >> >
>>> >> > On Wed, Jan 31, 2018 at 11:15 PM, Edwin Castro <egcastr at gmail.com>
>>> >> wrote:
>>> >> >
>>> >> >> Yes. You just need to be able to reference something in the
>>> >> >> Fragment(s) that contain WixUIBannerBmp, WixUIDialogBmp. Perhaps
>>> UIRef?
>>> >> >>
>>> >> >> Sometimes I create Properties that I don't actually use for
>>> >> >> anything other than to reference them from another Fragment with
>>> PropertyRef.
>>> >> >>
>>> >> >> I kind of wish there was a way to reference a Fragment directly
>>> >> >> for situations where I don't have something I can reference in the
>>> >> Fragment...
>>> >> >>
>>> >> >> --
>>> >> >> Edwin G. Castro
>>> >> >>
>>> >> >>
>>> >> >> On Wed, Jan 31, 2018 at 9:32 AM, Ven H via wix-users <
>>> >> >> wix-users at lists.wixtoolset.org> wrote:
>>> >> >>
>>> >> >>> Is it possible to have wix variables like WixUIBannerBmp,
>>> >> >>> WixUIDialogBmp in a separate wxs file, rather than Product.wxs?
>>> >> >>> If yes, please explain how.
>>> >> >>> Since the values of these variables are paths, I cannot have them
>>> >> >>> as properties and I don't want to use preprocessor variables.
>>> >> >>> Please
>>> >> help.
>>> >> >>>
>>> >> >>>
>>> >> >>> Regards,
>>> >> >>> Venkatesh
>>> >>
>>> >
>>> >
>
> Here is a full example of using a wxi file to check the build
> architecture and set the Win64 variable which is "yes" or "no". I do
> lots of other stuff in there too. Think of a wxi as a place to put
> things you want to change dynamically before the installer is built
> (paths to source files, versions). The source is a modified version of
> the one found on StackExchange. I have also added other variables like
> version and build secondary variables.
>
> This incarnation of the installer uses a custom Include.wxi file in
> each visual studio project (Lua 5.1, lua5.3), but only one installer
> source. I do that by putting the "things that are different" in the
> include.wxi files, but everything else is the same. Works like
> gangbusters.
>
> Curerntly my CustomaAtion doesn't work, but everything else works. The
> components and component groups are a bit of a mess, but it all seems
> to work. The installer code is FreeBSD licensed.

New and improved post, with link. tee he:

https://github.com/WinLua/WinLua-VisualStudio/tree/master/Visual%20Studio/WinLua-Installer


> Cheers,
>
> Russ
>
>>> ____________________________________________________________________
>>> WiX Toolset Users Mailing List provided by FireGiant
>>> http://www.firegiant.com/
>>>
>>> ____________________________________________________________________
>>> WiX Toolset Users Mailing List provided by FireGiant
>>> http://www.firegiant.com/
>>>
>>
>> ____________________________________________________________________
>> WiX Toolset Users Mailing List provided by FireGiant http://www.firegiant.com/


More information about the wix-users mailing list