Бизнес-робот
Бизнес
робот

Темы:

Архив:

Каталог рекламы и объявлений

Ящик для предложений: sales@blogslov.ru

Wix-commits Digest, Vol 11, Issue 20

Send Wix-commits mailing list submissions to


To subscribe or unsubscribe via the World Wide Web, visit
https://lists.sourceforge.net/lists/listinfo/wix-commits
or, via email, send a message with subject or body 'help' to


You can reach the person managing the list at


When replying, please edit your Subject line so it is more specific
than "Re: Contents of Wix-commits digest..."


Today's Topics:

1. wix/src/wix/Cab WixEnumerateCab.cs,1.2,1.3 (Rob Mensching)
2. wix/bin zip.build,1.16,1.17 (Rob Mensching)
3. wix/src/ext/UtilExtension/wixext RegistryHarvester.cs, 1.3,
1.4 UtilCompiler.cs, 1.9, 1.10 UtilDecompiler.cs, 1.6, 1.7
UtilMutator.cs, 1.5, 1.6 (Rob Mensching)


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

Message: 1
Date: Wed, 27 Jun 2007 05:39:11 +0000
From: Rob Mensching
Subject: [WiX-commits] wix/src/wix/Cab WixEnumerateCab.cs,1.2,1.3
To:
Message-ID:

Update of /cvsroot/wix/wix/src/wix/Cab
In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv1332/src/wix/Cab

Modified Files:
WixEnumerateCab.cs
Log Message:
Benxing: Number of patch related bug fix
*Update FeatureComponent table when ComponentRef in the selected PatchFamily
*File Sequence problem

PMarcu: Allowing extension attributes on DirectoryRef and PropertyRef
Adding extension attributes to the VSExtension Refs

PMarcu: Adding UIRef and DirectoryRef to possible PatchFamily Children
Allowing extension attributes on CustomAction elements.

JRock: Added support for setting pre- and post-build event command lines via a
property page in Votive. This gets me one step closer to restoring the
inter-project variables that we had in V2 but had to pull in V3 to get
it out the door (e.g. $(var.MyProject.TargetPath)).

JRock: Added support for SolutionX variables in the wix.targets file. So, you
can now use $(var.SolutionDir) in your .wxs files and have the variables
automatically added to the preprocessor definitions when building with
wix.targets and MSBuild.

Benxing: Regardless of differences in the MST, we will compare underlying files before
copying data into the patch. Extensions can override CompareFiles to provide
custom file diffing behavior.

AaronSte: Updating Heat to use HKCU instead of HKLM when harvesting registry
information on Windows Vista to avoid UAC issues

PMarcu: Making XsdStitch only output a single prefix for each extension namespace.

Benxing: Fixing null reference exception in the binder when the file table is empty.

RobMen: Default File/@Name to File/@Id.

MikeHo: Fix bug with Setup.exe when trying to install and TEMP and AppData
folders are not on same drive, setup fails

MikeHo: Add fallback to Caching the MSI.

RobMen: SFBUG:1680666 - Correctly modularize RemoveIniFile.DirProperites.

PMarcu: Removing FragmentRef's

AaronSte: SFBUG:1675664 - Marking ComboBox value attribute as localizable.

PMarcu: Adding BinaryRef as a child of PatchFamily.

Benxing: Give warning when removing component from feature during the patch build.

PMarcu: Changing namespace keys in the VSExtension help tables to not be modularized.

PMarcu: Adding some targeted checks to patch transforms to catch possible error
conditions as early as possible.

AaronSte: Adding Visual Studio Codename Orcas detection properties.

AaronSte: SFBUG:1687207 - Update Heat so DllRegisterServer captures will work
on Windows Vista from an elevated cmd prompt.

PMarcu: Fix for DocCompiler to handle ref attributes in attribute definitions under
elements.

BobArnso: Resize and combine some controls to better fit localized strings
(affects all UI sets, dialogs UserExit, OutOfRbDiskDlg, OutOfDiskDlg)

Benxing: Skipping unreal tables when binding transforms to improve patch build
perfomance.
Adding active substorage into binder extension to give the ability to
access corresponding transform information.

JRock: SFBUG:1673425 - Cannot access the VS menu using the alt key
SFBUG:1576283 - Unable to enter 'c' or 'm' in proj properties screen fields
SFBUG:1570392 - Project Designer - Index was outside the bounds of the array
SFBUG:1566296 - Setting 'Cultures' field in project properties has no effect
SFBUG:1576287 - Modifying project properties does not force rebuild

Benxing: Ignore rows without section id in ReduceTransform.

MikeHo: Allow for multiple files to be extracted from chainer.

AaronSte: Adding Visual Studio Team Test project system detection properties.

FGrohn: Support for PubCA in WiX v3.

HeathS: Added extension support to the Validator.
Exposed extension support for the Validator through light.exe.
Exposed extension support for the Validator through smoke.exe.
Exposed multiple .cub file support through smoke.exe.

HeathS: Exposed multiple .cub file support through light.exe.
Added a test for the Validator and multiple .cub support in light.exe.

MikeHo: Add error messages for Windows Installer service can't start or Install
blocked by system policy

BobArnso: Add WixQueryOsInfo CA to detect system suite info and "special
folders" as properties over and above the MSI set

BobArnso: Default to removing library rows from decompiled output in
WixUtilExtension

PMarcu: Refactoring patch buld system to use Pyro instead of Light for filtering
and binding. Other target patch specific bug fixes are in the mix as well.

PMarcu: Adding more command line options to Pyro, specifically the ones that
provide settings for the binder.

PMarcu: Adding error and warning preprocessor instructions.

PMarcu: Fixing an exception thrown when Dark is run and no extensions are defined
in the config file or the config file is absent.
Also, bug where Customtable columns that are not foreign keys have the
keytable attribute defined on the column as keytable="". This results in
an invalid table reference to "".

PMarcu: Switching order on Pyro commandline.

Jordanf: Adding support to WixUnit for Pyro. Fixing the qtest patch.minorupgrade
to use Pyro.

BrianRe: Added code to detect a namespace prefix that is already in use and if
so it will append it with its' position within the "duplicates" for
that specific prefix; eg. sql, sql2, sql3, and so on.

RobMen: Add support for PerformanceCounters (including managed code).

FGrohn: Added COM+ and MSMQ extensions to the zip file.

FGrohn: Move to Windows Vista SDK.

JRock: SFBUG:1566807 - Display full version in about dialog.
SFBUG:1697089 - MSBuild WiX taskscannot resolve WiX tool paths automatically
SFBUG:1689830 - Error when using Wix3 when not installed on C drive

Benxing: Handle Sequence tables when building the patch.
Don't allow empty patch.

HeathS: Added an extension for installing PowerShell snap-ins.

PMarcu: Adding Melt as a tool to decompile MSM's to ComponentGroups.

PMarcu: Adding warning for when a non keypath file is updated and the keypath file
of that component is not.

Benxing: Adding information into _SummaryInformation table for patch build.

PMarcu: Adding a check to assure no duplicate fragment Id's exist.

JKuhne: Fixing a GC issue with the Validator. (Locals are rooted until last reference, not
end of scope.)

BobArnso: Add DiskId attribute to Directory and DirectoryRef to provide default
DiskId for contained components and files.

MikeHo: Fix language matching in Setup.exe

PMarcu: Making sdut and tsa defaults when passing xo to light.exe

AaronSte: Adding more CSIDL values to WixQueryOsDirs custom action

RobMen: Reverse integrate WiX v2 CustomAction fixes.

BobArnso: Add element-extensibility points to Directory and DirectoryRef.

Jordanf: Add a new test for preprocessor .

Mikeho: Add NewFolder UIText element.

AaronSte: Adding custom actions to run devenv.exe /InstallVSTemplates to the
WixVSExtension

BobArnso: Pass directory ID to Directory and DirectoryRef extension elements.

RobMen: Introducing smart-cabbing.

RobMen: SFBUG:1707259 - fix nasty memory violation
HeathS: Added patch-specific property to identify client patches and
if they can be removed.

Mikeho: Fix manifests for setupbld.exe/setup.exe

JordanF: Add the -update option to automatically update a test. Make MSI/MSI
validation explicit in the tests.

JRock: Adding back project references to Votive V3! Actually, I'm adding them
to the wix.targets MSBuild file to be exact. Votive uses it, but you get
the goodness without using Votive also. Basically, this is the feature
where if you reference other projects in your Visual Studio solution,
you can reference the output of those projects from within your wixproj
project. For example, $(var.MyCSharpApp.TargetPath). This will work for
any managed project in Visual Studio (at least it does for VC#, VB, and
VC++ managed). You have to build from within Visual Studio or from the
command line. If you build just the .wixproj, then you won't get the
project variables defined.

SFBUG:1585281 - Add solution and project variables back to Votive v3

MikeHo: Fix support for more than 10 MSIs/MSTs

JRock: SFBUG:1588291 - Support response files for MSBuild candle/light/lit
tasks

BobArnso: Have heat generate a default ComponentGroup when harvesting
directories in a fragment.

JRock: SFBUG:1717966 - Solution Build Issues (build 2911)
When a wixproj is the only thing in the solution, the SolutionX
variables aren't defined when building within Visual Studio. This
is because normally C#/VB define these variables for us. The fix
is to define them ourself.

HeathS: SFBUG:1716160 - ICE03 string overflow error, xmlFile

RobMen: SFBUG:1716160 - fix string overflow error for XmlConfig

BrianRe: Fixing wix.xsd to use W3C recognized regular expressions.

PMarcu: Defaulting Media\@Source to a form of the patchId if not specified
when Media is a child of a patch.

RobMen: SFBUG:1724535 - correctly integrate a few more fixes from WiX v2 to
WiX v3.

JordanF: WixUnit now compares the transforms inside a patch when it is diffing
two patches. Previously, only the tables in the patch were compared.

AaronSte: Added documentation for properties and custom actions in the
WixVSExtension.

PMarcu: Fix for ServiceConfig CA's to call correct rollback entrypoint.

BMurri: Add support for bound wixouts/wixmsts to torch and pyro.

PMarcu: Fix for ServiceConfig CA's to call correct rollback entrypoint.

RobMen: Schema tweaks to enable simple references on FeatureRef and
FeatureGroupRef plus tweaks to enable floating Components.
AaronSte: Added documentation for Votive functionality.

AaronSte: Fixing variable resolution problem in WiX Product item template
in Votive.

PMarcu: Updating flags in XmlConfig to match with CA after the 2.0 to
3.0 integration.

JRock: Integrated the VS SDK 4.0 into Votive.

AaronSte: Merged WiX 2.0 documentation changes into 3.0. Updated instances
of deprecated src attributes in examples in the docs.

MikeHo: Add reinstall support & logging to Chainer + fix bug when using
transforms other than Chinese.

HeathS: SFBUG:1739868 - Pyro does not find .AllowRemoval property

PMarcu: Removing primary key from EnsureTable to support patching.
Fixing documentation for XmlConfig.

RobMen: SFBUG:1739194 - Preserve whitespace when using XmlFile or XmlConfig

JKuhne: Fix a GC related bug in the cab enumeration callback. (Cab.WixEnumerateCab.Enumerate)


Index: WixEnumerateCab.cs
===================================================================
RCS file: /cvsroot/wix/wix/src/wix/Cab/WixEnumerateCab.cs,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** WixEnumerateCab.cs 6 Dec 2006 10:18:53 -0000 1.2
--- WixEnumerateCab.cs 27 Jun 2007 05:39:09 -0000 1.3
***************
*** 60,64 ****

// the callback (this.Notify) will populate the list for each file in cabinet
! CabInterop.EnumerateCab(cabinetFile, new CabInterop.PFNNOTIFY(this.Notify));

return this.fileInfoList;
--- 60,69 ----

// the callback (this.Notify) will populate the list for each file in cabinet
! CabInterop.PFNNOTIFY pfnNotify = new CabInterop.PFNNOTIFY(this.Notify);
! CabInterop.EnumerateCab(cabinetFile, pfnNotify);
!
! // To keep the locals from going out of scope during the external enumeration
! GC.KeepAlive(cabinetFile);
! GC.KeepAlive(pfnNotify);

return this.fileInfoList;




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

Message: 2
Date: Wed, 27 Jun 2007 05:35:38 +0000
From: Rob Mensching
Subject: [WiX-commits] wix/bin zip.build,1.16,1.17
To:
Message-ID:

Update of /cvsroot/wix/wix/bin
In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv1332/bin

Modified Files:
zip.build
Log Message:
Benxing: Number of patch related bug fix
*Update FeatureComponent table when ComponentRef in the selected PatchFamily
*File Sequence problem

PMarcu: Allowing extension attributes on DirectoryRef and PropertyRef
Adding extension attributes to the VSExtension Refs

PMarcu: Adding UIRef and DirectoryRef to possible PatchFamily Children
Allowing extension attributes on CustomAction elements.

JRock: Added support for setting pre- and post-build event command lines via a
property page in Votive. This gets me one step closer to restoring the
inter-project variables that we had in V2 but had to pull in V3 to get
it out the door (e.g. $(var.MyProject.TargetPath)).

JRock: Added support for SolutionX variables in the wix.targets file. So, you
can now use $(var.SolutionDir) in your .wxs files and have the variables
automatically added to the preprocessor definitions when building with
wix.targets and MSBuild.

Benxing: Regardless of differences in the MST, we will compare underlying files before
copying data into the patch. Extensions can override CompareFiles to provide
custom file diffing behavior.

AaronSte: Updating Heat to use HKCU instead of HKLM when harvesting registry
information on Windows Vista to avoid UAC issues

PMarcu: Making XsdStitch only output a single prefix for each extension namespace.

Benxing: Fixing null reference exception in the binder when the file table is empty.

RobMen: Default File/@Name to File/@Id.

MikeHo: Fix bug with Setup.exe when trying to install and TEMP and AppData
folders are not on same drive, setup fails

MikeHo: Add fallback to Caching the MSI.

RobMen: SFBUG:1680666 - Correctly modularize RemoveIniFile.DirProperites.

PMarcu: Removing FragmentRef's

AaronSte: SFBUG:1675664 - Marking ComboBox value attribute as localizable.

PMarcu: Adding BinaryRef as a child of PatchFamily.

Benxing: Give warning when removing component from feature during the patch build.

PMarcu: Changing namespace keys in the VSExtension help tables to not be modularized.

PMarcu: Adding some targeted checks to patch transforms to catch possible error
conditions as early as possible.

AaronSte: Adding Visual Studio Codename Orcas detection properties.

AaronSte: SFBUG:1687207 - Update Heat so DllRegisterServer captures will work
on Windows Vista from an elevated cmd prompt.

PMarcu: Fix for DocCompiler to handle ref attributes in attribute definitions under
elements.

BobArnso: Resize and combine some controls to better fit localized strings
(affects all UI sets, dialogs UserExit, OutOfRbDiskDlg, OutOfDiskDlg)

Benxing: Skipping unreal tables when binding transforms to improve patch build
perfomance.
Adding active substorage into binder extension to give the ability to
access corresponding transform information.

JRock: SFBUG:1673425 - Cannot access the VS menu using the alt key
SFBUG:1576283 - Unable to enter 'c' or 'm' in proj properties screen fields
SFBUG:1570392 - Project Designer - Index was outside the bounds of the array
SFBUG:1566296 - Setting 'Cultures' field in project properties has no effect
SFBUG:1576287 - Modifying project properties does not force rebuild

Benxing: Ignore rows without section id in ReduceTransform.

MikeHo: Allow for multiple files to be extracted from chainer.

AaronSte: Adding Visual Studio Team Test project system detection properties.

FGrohn: Support for PubCA in WiX v3.

HeathS: Added extension support to the Validator.
Exposed extension support for the Validator through light.exe.
Exposed extension support for the Validator through smoke.exe.
Exposed multiple .cub file support through smoke.exe.

HeathS: Exposed multiple .cub file support through light.exe.
Added a test for the Validator and multiple .cub support in light.exe.

MikeHo: Add error messages for Windows Installer service can't start or Install
blocked by system policy

BobArnso: Add WixQueryOsInfo CA to detect system suite info and "special
folders" as properties over and above the MSI set

BobArnso: Default to removing library rows from decompiled output in
WixUtilExtension

PMarcu: Refactoring patch buld system to use Pyro instead of Light for filtering
and binding. Other target patch specific bug fixes are in the mix as well.

PMarcu: Adding more command line options to Pyro, specifically the ones that
provide settings for the binder.

PMarcu: Adding error and warning preprocessor instructions.

PMarcu: Fixing an exception thrown when Dark is run and no extensions are defined
in the config file or the config file is absent.
Also, bug where Customtable columns that are not foreign keys have the
keytable attribute defined on the column as keytable="". This results in
an invalid table reference to "".

PMarcu: Switching order on Pyro commandline.

Jordanf: Adding support to WixUnit for Pyro. Fixing the qtest patch.minorupgrade
to use Pyro.

BrianRe: Added code to detect a namespace prefix that is already in use and if
so it will append it with its' position within the "duplicates" for
that specific prefix; eg. sql, sql2, sql3, and so on.

RobMen: Add support for PerformanceCounters (including managed code).

FGrohn: Added COM+ and MSMQ extensions to the zip file.

FGrohn: Move to Windows Vista SDK.

JRock: SFBUG:1566807 - Display full version in about dialog.
SFBUG:1697089 - MSBuild WiX taskscannot resolve WiX tool paths automatically
SFBUG:1689830 - Error when using Wix3 when not installed on C drive

Benxing: Handle Sequence tables when building the patch.
Don't allow empty patch.

HeathS: Added an extension for installing PowerShell snap-ins.

PMarcu: Adding Melt as a tool to decompile MSM's to ComponentGroups.

PMarcu: Adding warning for when a non keypath file is updated and the keypath file
of that component is not.

Benxing: Adding information into _SummaryInformation table for patch build.

PMarcu: Adding a check to assure no duplicate fragment Id's exist.

JKuhne: Fixing a GC issue with the Validator. (Locals are rooted until last reference, not
end of scope.)

BobArnso: Add DiskId attribute to Directory and DirectoryRef to provide default
DiskId for contained components and files.

MikeHo: Fix language matching in Setup.exe

PMarcu: Making sdut and tsa defaults when passing xo to light.exe

AaronSte: Adding more CSIDL values to WixQueryOsDirs custom action

RobMen: Reverse integrate WiX v2 CustomAction fixes.

BobArnso: Add element-extensibility points to Directory and DirectoryRef.

Jordanf: Add a new test for preprocessor .

Mikeho: Add NewFolder UIText element.

AaronSte: Adding custom actions to run devenv.exe /InstallVSTemplates to the
WixVSExtension

BobArnso: Pass directory ID to Directory and DirectoryRef extension elements.

RobMen: Introducing smart-cabbing.

RobMen: SFBUG:1707259 - fix nasty memory violation
HeathS: Added patch-specific property to identify client patches and
if they can be removed.

Mikeho: Fix manifests for setupbld.exe/setup.exe

JordanF: Add the -update option to automatically update a test. Make MSI/MSI
validation explicit in the tests.

JRock: Adding back project references to Votive V3! Actually, I'm adding them
to the wix.targets MSBuild file to be exact. Votive uses it, but you get
the goodness without using Votive also. Basically, this is the feature
where if you reference other projects in your Visual Studio solution,
you can reference the output of those projects from within your wixproj
project. For example, $(var.MyCSharpApp.TargetPath). This will work for
any managed project in Visual Studio (at least it does for VC#, VB, and
VC++ managed). You have to build from within Visual Studio or from the
command line. If you build just the .wixproj, then you won't get the
project variables defined.

SFBUG:1585281 - Add solution and project variables back to Votive v3

MikeHo: Fix support for more than 10 MSIs/MSTs

JRock: SFBUG:1588291 - Support response files for MSBuild candle/light/lit
tasks

BobArnso: Have heat generate a default ComponentGroup when harvesting
directories in a fragment.

JRock: SFBUG:1717966 - Solution Build Issues (build 2911)
When a wixproj is the only thing in the solution, the SolutionX
variables aren't defined when building within Visual Studio. This
is because normally C#/VB define these variables for us. The fix
is to define them ourself.

HeathS: SFBUG:1716160 - ICE03 string overflow error, xmlFile

RobMen: SFBUG:1716160 - fix string overflow error for XmlConfig

BrianRe: Fixing wix.xsd to use W3C recognized regular expressions.

PMarcu: Defaulting Media\@Source to a form of the patchId if not specified
when Media is a child of a patch.

RobMen: SFBUG:1724535 - correctly integrate a few more fixes from WiX v2 to
WiX v3.

JordanF: WixUnit now compares the transforms inside a patch when it is diffing
two patches. Previously, only the tables in the patch were compared.

AaronSte: Added documentation for properties and custom actions in the
WixVSExtension.

PMarcu: Fix for ServiceConfig CA's to call correct rollback entrypoint.

BMurri: Add support for bound wixouts/wixmsts to torch and pyro.

PMarcu: Fix for ServiceConfig CA's to call correct rollback entrypoint.

RobMen: Schema tweaks to enable simple references on FeatureRef and
FeatureGroupRef plus tweaks to enable floating Components.
AaronSte: Added documentation for Votive functionality.

AaronSte: Fixing variable resolution problem in WiX Product item template
in Votive.

PMarcu: Updating flags in XmlConfig to match with CA after the 2.0 to
3.0 integration.

JRock: Integrated the VS SDK 4.0 into Votive.

AaronSte: Merged WiX 2.0 documentation changes into 3.0. Updated instances
of deprecated src attributes in examples in the docs.

MikeHo: Add reinstall support & logging to Chainer + fix bug when using
transforms other than Chinese.

HeathS: SFBUG:1739868 - Pyro does not find .AllowRemoval property

PMarcu: Removing primary key from EnsureTable to support patching.
Fixing documentation for XmlConfig.

RobMen: SFBUG:1739194 - Preserve whitespace when using XmlFile or XmlConfig

JKuhne: Fix a GC related bug in the cab enumeration callback. (Cab.WixEnumerateCab.Enumerate)


Index: zip.build
===================================================================
RCS file: /cvsroot/wix/wix/bin/zip.build,v
retrieving revision 1.16
retrieving revision 1.17
diff -C2 -d -r1.16 -r1.17
*** zip.build 2 Mar 2007 12:22:08 -0000 1.16
--- zip.build 27 Jun 2007 05:35:36 -0000 1.17
***************
*** 76,80 ****
--- 76,84 ----


+
+

+
+


***************
*** 88,93 ****


-



--- 92,97 ----



+


***************
*** 97,103 ****
--- 101,110 ----


+


+

+


***************
*** 107,112 ****
--- 114,121 ----


+


+






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

Message: 3
Date: Wed, 27 Jun 2007 05:37:46 +0000
From: Rob Mensching
Subject: [WiX-commits] wix/src/ext/UtilExtension/wixext
RegistryHarvester.cs, 1.3, 1.4 UtilCompiler.cs, 1.9, 1.10
UtilDecompiler.cs, 1.6, 1.7 UtilMutator.cs, 1.5, 1.6
To:
Message-ID:

Update of /cvsroot/wix/wix/src/ext/UtilExtension/wixext
In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv1332/src/ext/UtilExtension/wixext

Modified Files:
RegistryHarvester.cs UtilCompiler.cs UtilDecompiler.cs
UtilMutator.cs
Log Message:
Benxing: Number of patch related bug fix
*Update FeatureComponent table when ComponentRef in the selected PatchFamily
*File Sequence problem

PMarcu: Allowing extension attributes on DirectoryRef and PropertyRef
Adding extension attributes to the VSExtension Refs

PMarcu: Adding UIRef and DirectoryRef to possible PatchFamily Children
Allowing extension attributes on CustomAction elements.

JRock: Added support for setting pre- and post-build event command lines via a
property page in Votive. This gets me one step closer to restoring the
inter-project variables that we had in V2 but had to pull in V3 to get
it out the door (e.g. $(var.MyProject.TargetPath)).

JRock: Added support for SolutionX variables in the wix.targets file. So, you
can now use $(var.SolutionDir) in your .wxs files and have the variables
automatically added to the preprocessor definitions when building with
wix.targets and MSBuild.

Benxing: Regardless of differences in the MST, we will compare underlying files before
copying data into the patch. Extensions can override CompareFiles to provide
custom file diffing behavior.

AaronSte: Updating Heat to use HKCU instead of HKLM when harvesting registry
information on Windows Vista to avoid UAC issues

PMarcu: Making XsdStitch only output a single prefix for each extension namespace.

Benxing: Fixing null reference exception in the binder when the file table is empty.

RobMen: Default File/@Name to File/@Id.

MikeHo: Fix bug with Setup.exe when trying to install and TEMP and AppData
folders are not on same drive, setup fails

MikeHo: Add fallback to Caching the MSI.

RobMen: SFBUG:1680666 - Correctly modularize RemoveIniFile.DirProperites.

PMarcu: Removing FragmentRef's

AaronSte: SFBUG:1675664 - Marking ComboBox value attribute as localizable.

PMarcu: Adding BinaryRef as a child of PatchFamily.

Benxing: Give warning when removing component from feature during the patch build.

PMarcu: Changing namespace keys in the VSExtension help tables to not be modularized.

PMarcu: Adding some targeted checks to patch transforms to catch possible error
conditions as early as possible.

AaronSte: Adding Visual Studio Codename Orcas detection properties.

AaronSte: SFBUG:1687207 - Update Heat so DllRegisterServer captures will work
on Windows Vista from an elevated cmd prompt.

PMarcu: Fix for DocCompiler to handle ref attributes in attribute definitions under
elements.

BobArnso: Resize and combine some controls to better fit localized strings
(affects all UI sets, dialogs UserExit, OutOfRbDiskDlg, OutOfDiskDlg)

Benxing: Skipping unreal tables when binding transforms to improve patch build
perfomance.
Adding active substorage into binder extension to give the ability to
access corresponding transform information.

JRock: SFBUG:1673425 - Cannot access the VS menu using the alt key
SFBUG:1576283 - Unable to enter 'c' or 'm' in proj properties screen fields
SFBUG:1570392 - Project Designer - Index was outside the bounds of the array
SFBUG:1566296 - Setting 'Cultures' field in project properties has no effect
SFBUG:1576287 - Modifying project properties does not force rebuild

Benxing: Ignore rows without section id in ReduceTransform.

MikeHo: Allow for multiple files to be extracted from chainer.

AaronSte: Adding Visual Studio Team Test project system detection properties.

FGrohn: Support for PubCA in WiX v3.

HeathS: Added extension support to the Validator.
Exposed extension support for the Validator through light.exe.
Exposed extension support for the Validator through smoke.exe.
Exposed multiple .cub file support through smoke.exe.

HeathS: Exposed multiple .cub file support through light.exe.
Added a test for the Validator and multiple .cub support in light.exe.

MikeHo: Add error messages for Windows Installer service can't start or Install
blocked by system policy

BobArnso: Add WixQueryOsInfo CA to detect system suite info and "special
folders" as properties over and above the MSI set

BobArnso: Default to removing library rows from decompiled output in
WixUtilExtension

PMarcu: Refactoring patch buld system to use Pyro instead of Light for filtering
and binding. Other target patch specific bug fixes are in the mix as well.

PMarcu: Adding more command line options to Pyro, specifically the ones that
provide settings for the binder.

PMarcu: Adding error and warning preprocessor instructions.

PMarcu: Fixing an exception thrown when Dark is run and no extensions are defined
in the config file or the config file is absent.
Also, bug where Customtable columns that are not foreign keys have the
keytable attribute defined on the column as keytable="". This results in
an invalid table reference to "".

PMarcu: Switching order on Pyro commandline.

Jordanf: Adding support to WixUnit for Pyro. Fixing the qtest patch.minorupgrade
to use Pyro.

BrianRe: Added code to detect a namespace prefix that is already in use and if
so it will append it with its' position within the "duplicates" for
that specific prefix; eg. sql, sql2, sql3, and so on.

RobMen: Add support for PerformanceCounters (including managed code).

FGrohn: Added COM+ and MSMQ extensions to the zip file.

FGrohn: Move to Windows Vista SDK.

JRock: SFBUG:1566807 - Display full version in about dialog.
SFBUG:1697089 - MSBuild WiX taskscannot resolve WiX tool paths automatically
SFBUG:1689830 - Error when using Wix3 when not installed on C drive

Benxing: Handle Sequence tables when building the patch.
Don't allow empty patch.

HeathS: Added an extension for installing PowerShell snap-ins.

PMarcu: Adding Melt as a tool to decompile MSM's to ComponentGroups.

PMarcu: Adding warning for when a non keypath file is updated and the keypath file
of that component is not.

Benxing: Adding information into _SummaryInformation table for patch build.

PMarcu: Adding a check to assure no duplicate fragment Id's exist.

JKuhne: Fixing a GC issue with the Validator. (Locals are rooted until last reference, not
end of scope.)

BobArnso: Add DiskId attribute to Directory and DirectoryRef to provide default
DiskId for contained components and files.

MikeHo: Fix language matching in Setup.exe

PMarcu: Making sdut and tsa defaults when passing xo to light.exe

AaronSte: Adding more CSIDL values to WixQueryOsDirs custom action

RobMen: Reverse integrate WiX v2 CustomAction fixes.

BobArnso: Add element-extensibility points to Directory and DirectoryRef.

Jordanf: Add a new test for preprocessor .

Mikeho: Add NewFolder UIText element.

AaronSte: Adding custom actions to run devenv.exe /InstallVSTemplates to the
WixVSExtension

BobArnso: Pass directory ID to Directory and DirectoryRef extension elements.

RobMen: Introducing smart-cabbing.

RobMen: SFBUG:1707259 - fix nasty memory violation
HeathS: Added patch-specific property to identify client patches and
if they can be removed.

Mikeho: Fix manifests for setupbld.exe/setup.exe

JordanF: Add the -update option to automatically update a test. Make MSI/MSI
validation explicit in the tests.

JRock: Adding back project references to Votive V3! Actually, I'm adding them
to the wix.targets MSBuild file to be exact. Votive uses it, but you get
the goodness without using Votive also. Basically, this is the feature
where if you reference other projects in your Visual Studio solution,
you can reference the output of those projects from within your wixproj
project. For example, $(var.MyCSharpApp.TargetPath). This will work for
any managed project in Visual Studio (at least it does for VC#, VB, and
VC++ managed). You have to build from within Visual Studio or from the
command line. If you build just the .wixproj, then you won't get the
project variables defined.

SFBUG:1585281 - Add solution and project variables back to Votive v3

MikeHo: Fix support for more than 10 MSIs/MSTs

JRock: SFBUG:1588291 - Support response files for MSBuild candle/light/lit
tasks

BobArnso: Have heat generate a default ComponentGroup when harvesting
directories in a fragment.

JRock: SFBUG:1717966 - Solution Build Issues (build 2911)
When a wixproj is the only thing in the solution, the SolutionX
variables aren't defined when building within Visual Studio. This
is because normally C#/VB define these variables for us. The fix
is to define them ourself.

HeathS: SFBUG:1716160 - ICE03 string overflow error, xmlFile

RobMen: SFBUG:1716160 - fix string overflow error for XmlConfig

BrianRe: Fixing wix.xsd to use W3C recognized regular expressions.

PMarcu: Defaulting Media\@Source to a form of the patchId if not specified
when Media is a child of a patch.

RobMen: SFBUG:1724535 - correctly integrate a few more fixes from WiX v2 to
WiX v3.

JordanF: WixUnit now compares the transforms inside a patch when it is diffing
two patches. Previously, only the tables in the patch were compared.

AaronSte: Added documentation for properties and custom actions in the
WixVSExtension.

PMarcu: Fix for ServiceConfig CA's to call correct rollback entrypoint.

BMurri: Add support for bound wixouts/wixmsts to torch and pyro.

PMarcu: Fix for ServiceConfig CA's to call correct rollback entrypoint.

RobMen: Schema tweaks to enable simple references on FeatureRef and
FeatureGroupRef plus tweaks to enable floating Components.
AaronSte: Added documentation for Votive functionality.

AaronSte: Fixing variable resolution problem in WiX Product item template
in Votive.

PMarcu: Updating flags in XmlConfig to match with CA after the 2.0 to
3.0 integration.

JRock: Integrated the VS SDK 4.0 into Votive.

AaronSte: Merged WiX 2.0 documentation changes into 3.0. Updated instances
of deprecated src attributes in examples in the docs.

MikeHo: Add reinstall support & logging to Chainer + fix bug when using
transforms other than Chinese.

HeathS: SFBUG:1739868 - Pyro does not find .AllowRemoval property

PMarcu: Removing primary key from EnsureTable to support patching.
Fixing documentation for XmlConfig.

RobMen: SFBUG:1739194 - Preserve whitespace when using XmlFile or XmlConfig

JKuhne: Fix a GC related bug in the cab enumeration callback. (Cab.WixEnumerateCab.Enumerate)


Index: RegistryHarvester.cs
===================================================================
RCS file: /cvsroot/wix/wix/src/ext/UtilExtension/wixext/RegistryHarvester.cs,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** RegistryHarvester.cs 3 May 2006 08:38:27 -0000 1.3
--- RegistryHarvester.cs 27 Jun 2007 05:37:43 -0000 1.4
***************
*** 36,39 ****
--- 36,42 ----
{
private string remappedPath;
+ private static readonly int majorOSVersion = Environment.OSVersion.Version.Major;
+ private RegistryKey regKeyToOverride = Registry.LocalMachine;
+ private UIntPtr regRootToOverride = NativeMethods.HkeyLocalMachine;

///
***************
*** 43,46 ****
--- 46,59 ----
public RegistryHarvester(bool remap)
{
+ // Detect OS major version and set the hive to use when
+ // redirecting registry writes. We want to redirect registry
+ // writes to HKCU on Windows Vista and higher to avoid UAC
+ // problems, and to HKLM on downlevel OS's.
+ if (majorOSVersion >= 6)
+ {
+ regKeyToOverride = Registry.CurrentUser;
+ regRootToOverride = NativeMethods.HkeyCurrentUser;
+ }
+
// create a path in the registry for redirected keys which is process-specific
if (remap)
***************
*** 51,59 ****
this.RemoveRemappedKey();

! // remap the registry roots supported by MSI (the order in which the roots are remapped is important)
! this.RemapRegistryKey(NativeMethods.HkeyClassesRoot, String.Concat(this.remappedPath, @"\\HKEY_CLASSES_ROOT"));
! this.RemapRegistryKey(NativeMethods.HkeyCurrentUser, String.Concat(this.remappedPath, @"\\HKEY_CURRENT_USER"));
! this.RemapRegistryKey(NativeMethods.HkeyUsers, String.Concat(this.remappedPath, @"\\HKEY_USERS"));
! this.RemapRegistryKey(NativeMethods.HkeyLocalMachine, String.Concat(this.remappedPath, @"\\HKEY_LOCAL_MACHINE"));
}
}
--- 64,92 ----
this.RemoveRemappedKey();

! // remap the registry roots supported by MSI
! // note - order is important here - the hive being used to redirect
! // to must be overridden last to avoid creating the other override
! // hives in the wrong location in the registry. For example, if HKLM is
! // the redirect destination, overriding it first will cause other hives
! // to be overridden under HKLM\Software\WiX\heat\HKLM\Software\WiX\HKCR
! // instead of under HKLM\Software\WiX\heat\HKCR
! if (majorOSVersion < 6)
! {
! this.RemapRegistryKey(NativeMethods.HkeyClassesRoot, String.Concat(this.remappedPath, @"\\HKEY_CLASSES_ROOT"));
! this.RemapRegistryKey(NativeMethods.HkeyCurrentUser, String.Concat(this.remappedPath, @"\\HKEY_CURRENT_USER"));
! this.RemapRegistryKey(NativeMethods.HkeyUsers, String.Concat(this.remappedPath, @"\\HKEY_USERS"));
! this.RemapRegistryKey(NativeMethods.HkeyLocalMachine, String.Concat(this.remappedPath, @"\\HKEY_LOCAL_MACHINE"));
! }
! else
! {
! this.RemapRegistryKey(NativeMethods.HkeyClassesRoot, String.Concat(this.remappedPath, @"\\HKEY_CLASSES_ROOT"));
! this.RemapRegistryKey(NativeMethods.HkeyLocalMachine, String.Concat(this.remappedPath, @"\\HKEY_LOCAL_MACHINE"));
! this.RemapRegistryKey(NativeMethods.HkeyUsers, String.Concat(this.remappedPath, @"\\HKEY_USERS"));
! this.RemapRegistryKey(NativeMethods.HkeyCurrentUser, String.Concat(this.remappedPath, @"\\HKEY_CURRENT_USER"));
!
! // Typelib registration on Windows Vista requires that the key
! // HKLM\Software\Classes exist, so add it to the remapped root
! Registry.LocalMachine.CreateSubKey("Software\\Classes");
! }
}
}
***************
*** 64,71 ****
public void Close()
{
! NativeMethods.OverrideRegistryKey(NativeMethods.HkeyClassesRoot, IntPtr.Zero);
! NativeMethods.OverrideRegistryKey(NativeMethods.HkeyCurrentUser, IntPtr.Zero);
! NativeMethods.OverrideRegistryKey(NativeMethods.HkeyLocalMachine, IntPtr.Zero);
! NativeMethods.OverrideRegistryKey(NativeMethods.HkeyUsers, IntPtr.Zero);

this.RemoveRemappedKey();
--- 97,116 ----
public void Close()
{
! // note - order is important here - we must quit overriding the hive
! // being used to redirect first
! if (majorOSVersion < 6)
! {
! NativeMethods.OverrideRegistryKey(NativeMethods.HkeyLocalMachine, IntPtr.Zero);
! NativeMethods.OverrideRegistryKey(NativeMethods.HkeyClassesRoot, IntPtr.Zero);
! NativeMethods.OverrideRegistryKey(NativeMethods.HkeyCurrentUser, IntPtr.Zero);
! NativeMethods.OverrideRegistryKey(NativeMethods.HkeyUsers, IntPtr.Zero);
! }
! else
! {
! NativeMethods.OverrideRegistryKey(NativeMethods.HkeyCurrentUser, IntPtr.Zero);
! NativeMethods.OverrideRegistryKey(NativeMethods.HkeyClassesRoot, IntPtr.Zero);
! NativeMethods.OverrideRegistryKey(NativeMethods.HkeyLocalMachine, IntPtr.Zero);
! NativeMethods.OverrideRegistryKey(NativeMethods.HkeyUsers, IntPtr.Zero);
! }

this.RemoveRemappedKey();
***************
*** 278,282 ****
try
{
! remappedKey = NativeMethods.OpenRegistryKey(NativeMethods.HkeyLocalMachine, remappedPath);

NativeMethods.OverrideRegistryKey(registryKey, remappedKey);
--- 323,327 ----
try
{
! remappedKey = NativeMethods.OpenRegistryKey(regRootToOverride, remappedPath);

NativeMethods.OverrideRegistryKey(registryKey, remappedKey);
***************
*** 298,302 ****
try
{
! Registry.LocalMachine.DeleteSubKeyTree(this.remappedPath);
}
catch (ArgumentException)
--- 343,347 ----
try
{
! regKeyToOverride.DeleteSubKeyTree(this.remappedPath);
}
catch (ArgumentException)

Index: UtilMutator.cs
===================================================================
RCS file: /cvsroot/wix/wix/src/ext/UtilExtension/wixext/UtilMutator.cs,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** UtilMutator.cs 16 Aug 2006 05:18:17 -0000 1.5
--- UtilMutator.cs 27 Jun 2007 05:37:43 -0000 1.6
***************
*** 166,169 ****
--- 166,189 ----
}
}
+ // create a ComponentGroup with all the components
+ else if (TemplateType.Fragment == this.templateType && !this.createFragments)
+ {
+ Wix.ComponentGroup componentGroup = new Wix.ComponentGroup();
+ componentGroup.Id = "ComponentGroup1";
+
+ foreach (Wix.Component component in this.components)
+ {
+ if (null != component.Id)
+ {
+ Wix.ComponentRef componentRef = new Wix.ComponentRef();
+ componentRef.Id = component.Id;
+ componentGroup.AddChild(componentRef);
+ }
+ }
+
+ Wix.Fragment fragment = new Wix.Fragment();
+ this.fragments.Add("ComponentGroup:1", fragment);
+ fragment.AddChild(componentGroup);
+ }

foreach (Wix.Fragment fragment in this.fragments.Values)

Index: UtilCompiler.cs
===================================================================
RCS file: /cvsroot/wix/wix/src/ext/UtilExtension/wixext/UtilCompiler.cs,v
retrieving revision 1.9
retrieving revision 1.10
diff -C2 -d -r1.9 -r1.10
*** UtilCompiler.cs 13 Dec 2006 07:44:20 -0000 1.9
--- UtilCompiler.cs 27 Jun 2007 05:37:43 -0000 1.10
***************
*** 23,26 ****
--- 23,27 ----
using System.Globalization;
using System.Reflection;
+ using System.Text;
using System.Xml;
using System.Xml.Schema;
***************
*** 113,116 ****
--- 114,120 ----
this.ParseFileShareElement(element, componentId, directoryId);
break;
+ case "PerformanceCategory":
+ this.ParsePerformanceCategoryElement(element, componentId);
+ break;
case "ServiceConfig":
this.ParseServiceConfigElement(element, componentId, "Component", null);
***************
*** 743,746 ****
--- 747,1361 ----

///
+ /// Parses a performance category element.
+ ///
+ /// Element to parse.
+ /// Identifier of parent component.
+ private void ParsePerformanceCategoryElement(XmlNode node, string componentId)
+ {
+ SourceLineNumberCollection sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node);
+ string id = null;
+ string name = null;
+ string help = null;
+ YesNoType multiInstance = YesNoType.No;
+ int defaultLanguage = CompilerCore.IntegerNotSet;
+
+ ArrayList parsedPerformanceCounters = new ArrayList();
+
+ // default to managed performance counter
+ string library = "netfxperf.dll";
+ string openEntryPoint = "OpenPerformanceData";
+ string collectEntryPoint = "CollectPerformanceData";
+ string closeEntryPoint = "ClosePerformanceData";
+
+ foreach (XmlAttribute attrib in node.Attributes)
+ {
+ if (0 == attrib.NamespaceURI.Length || attrib.NamespaceURI == this.schema.TargetNamespace)
+ {
+ switch (attrib.LocalName)
+ {
+ case "Close":
+ closeEntryPoint = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
+ break;
+ case "Collect":
+ collectEntryPoint = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
+ break;
+ case "DefaultLanguage":
+ defaultLanguage = this.GetPerformanceCounterLanguage(sourceLineNumbers, attrib);
+ break;
+ case "Help":
+ help = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
+ break;
+ case "Id":
+ id = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
+ break;
+ case "Library":
+ library = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
+ break;
+ case "MultiInstance":
+ multiInstance = this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib);
+ break;
+ case "Name":
+ name = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
+ break;
+ case "Open":
+ openEntryPoint = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
+ break;
+ default:
+ this.Core.UnexpectedAttribute(sourceLineNumbers, attrib);
+ break;
+ }
+ }
+ else
+ {
+ this.Core.UnsupportedExtensionAttribute(sourceLineNumbers, attrib);
+ }
+ }
+
+ if (null == id)
+ {
+ this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name, "Id"));
+ }
+
+ if (null == name)
+ {
+ name = id;
+ }
+
+ // Process the child counter elements.
+ foreach (XmlNode child in node.ChildNodes)
+ {
+ if (XmlNodeType.Element == child.NodeType)
+ {
+ if (child.NamespaceURI == this.schema.TargetNamespace)
+ {
+ SourceLineNumberCollection childSourceLineNumbers = Preprocessor.GetSourceLineNumbers(child);
+
+ switch (child.LocalName)
+ {
+ case "PerformanceCounter":
+ ParsedPerformanceCounter counter = this.ParsePerformanceCounterElement(child, defaultLanguage);
+ if (null != counter)
+ {
+ parsedPerformanceCounters.Add(counter);
+ }
+ break;
+ default:
+ this.Core.UnexpectedElement(node, child);
+ break;
+ }
+ }
+ else
+ {
+ this.Core.UnsupportedExtensionElement(node, child);
+ }
+ }
+ }
+
+ if (!this.Core.EncounteredError)
+ {
+ // Calculate the ini and h file content.
+ string objectName = String.Concat(name.Replace(" ", "_").ToUpper(CultureInfo.InvariantCulture), "_OBJECT");
+ string objectLanguage = defaultLanguage.ToString("D3", CultureInfo.InvariantCulture);
+
+ StringBuilder sbIniData = new StringBuilder();
+ sbIniData.AppendFormat("[info]\r\ndrivername={0}\r\nsymbolfile={0}.h\r\n\r\n[objects]\r\n{1}_{2}_NAME=\r\n\r\n[languages]\r\n{2}=LANG{2}\r\n\r\n", name, objectName, objectLanguage);
+ sbIniData.AppendFormat("[text]\r\n{0}_{1}_NAME={2}\r\n", objectName, objectLanguage, name);
+ if (null != help)
+ {
+ sbIniData.AppendFormat("{0}_{1}_HELP={2}\r\n", objectName, objectLanguage, help);
+ }
+
+ int symbolConstantsCounter = 0;
+ StringBuilder sbSymbolicConstants = new StringBuilder();
+ sbSymbolicConstants.AppendFormat("#define {0} {1}\r\n", objectName, symbolConstantsCounter);
+
+ StringBuilder sbCounterNames = new StringBuilder("[~]");
+ StringBuilder sbCounterTypes = new StringBuilder("[~]");
+ for (int i = 0; i < parsedPerformanceCounters.Count; ++i)
+ {
+ ParsedPerformanceCounter counter = (ParsedPerformanceCounter)parsedPerformanceCounters[i];
+ string counterName = counter.Name.Replace(" ", "_").ToUpper(CultureInfo.InvariantCulture);
+
+ sbIniData.AppendFormat("{0}_{1}_NAME={2}\r\n", counterName, counter.Language, counter.Name);
+ if (null != help)
+ {
+ sbIniData.AppendFormat("{0}_{1}_HELP={2}\r\n", counterName, counter.Language, counter.Help);
+ }
+
+ symbolConstantsCounter += 2;
+ sbSymbolicConstants.AppendFormat("#define {0} {1}\r\n", counterName, symbolConstantsCounter);
+
+ sbCounterNames.Append(counter.Name);
+ sbCounterNames.Append("[~]");
+ sbCounterTypes.Append(counter.Type);
+ sbCounterTypes.Append("[~]");
+ }
+
+ sbSymbolicConstants.AppendFormat("#define LAST_{0}_COUNTER_OFFSET {1}\r\n", objectName, symbolConstantsCounter);
+
+ // Add the calculated INI and H strings to the PerformanceCategory table.
+ Row row = this.Core.CreateRow(sourceLineNumbers, "PerformanceCategory");
+ row[0] = id;
+ row[1] = componentId;
+ row[2] = name;
+ row[3] = sbIniData.ToString();
+ row[4] = sbSymbolicConstants.ToString();
+
+ // Set up the application's performance key.
+ int registryRoot = 2; // HKLM
+ string linkageKey = String.Format(@"SYSTEM\CurrentControlSet\Services\{0}\Linkage", name);
+ string performanceKey = String.Format(@"SYSTEM\CurrentControlSet\Services\{0}\Performance", name);
+
+ this.Core.CreateRegistryRow(sourceLineNumbers, registryRoot, linkageKey, "Export", name, componentId, false);
+ this.Core.CreateRegistryRow(sourceLineNumbers, registryRoot, performanceKey, "-", null, componentId, false);
+ this.Core.CreateRegistryRow(sourceLineNumbers, registryRoot, performanceKey, "Library", library, componentId, false);
+ this.Core.CreateRegistryRow(sourceLineNumbers, registryRoot, performanceKey, "Open", openEntryPoint, componentId, false);
+ this.Core.CreateRegistryRow(sourceLineNumbers, registryRoot, performanceKey, "Collect", collectEntryPoint, componentId, false);
+ this.Core.CreateRegistryRow(sourceLineNumbers, registryRoot, performanceKey, "Close", closeEntryPoint, componentId, false);
+ this.Core.CreateRegistryRow(sourceLineNumbers, registryRoot, performanceKey, "IsMultiInstance", YesNoType.Yes == multiInstance ? "#1" : "#0", componentId, false);
+ this.Core.CreateRegistryRow(sourceLineNumbers, registryRoot, performanceKey, "Counter Names", sbCounterNames.ToString(), componentId, false);
+ this.Core.CreateRegistryRow(sourceLineNumbers, registryRoot, performanceKey, "Counter Types", sbCounterTypes.ToString(), componentId, false);
+ }
+
+ // Reference InstallPerfCounterData and UninstallPerfCounterData since nothing will happen without them
+ this.Core.CreateWixSimpleReferenceRow(sourceLineNumbers, "CustomAction", "InstallPerfCounterData");
+ this.Core.CreateWixSimpleReferenceRow(sourceLineNumbers, "CustomAction", "UninstallPerfCounterData");
+ }
+
+ ///
+ /// Gets the performance counter language as a decimal number.
+ ///
+ /// Source line information about the owner element.
+ /// The attribute containing the value to get.
+ /// Numeric representation of the language as per WinNT.h.
+ private int GetPerformanceCounterLanguage(SourceLineNumberCollection sourceLineNumbers, XmlAttribute attribute)
+ {
+ int language = 0;
+ if (String.Empty == attribute.Value)
+ {
+ this.Core.OnMessage(WixErrors.IllegalEmptyAttributeValue(sourceLineNumbers, attribute.OwnerElement.Name, attribute.Name));
+ }
+ else
+ {
+ switch (attribute.Value)
+ {
+ case "afrikaans":
+ language = 0x36;
+ break;
+ case "albanian":
+ language = 0x1c;
+ break;
+ case "arabic":
+ language = 0x01;
+ break;
+ case "armenian":
+ language = 0x2b;
+ break;
+ case "assamese":
+ language = 0x4d;
+ break;
+ case "azeri":
+ language = 0x2c;
+ break;
+ case "basque":
+ language = 0x2d;
+ break;
+ case "belarusian":
+ language = 0x23;
+ break;
+ case "bengali":
+ language = 0x45;
+ break;
+ case "bulgarian":
+ language = 0x02;
+ break;
+ case "catalan":
+ language = 0x03;
+ break;
+ case "chinese":
+ language = 0x04;
+ break;
+ case "croatian":
+ language = 0x1a;
+ break;
+ case "czech":
+ language = 0x05;
+ break;
+ case "danish":
+ language = 0x06;
+ break;
+ case "divehi":
+ language = 0x65;
+ break;
+ case "dutch":
+ language = 0x13;
+ break;
+ case "piglatin":
+ case "english":
+ language = 0x09;
+ break;
+ case "estonian":
+ language = 0x25;
+ break;
+ case "faeroese":
+ language = 0x38;
+ break;
+ case "farsi":
+ language = 0x29;
+ break;
+ case "finnish":
+ language = 0x0b;
+ break;
+ case "french":
+ language = 0x0c;
+ break;
+ case "galician":
+ language = 0x56;
+ break;
+ case "georgian":
+ language = 0x37;
+ break;
+ case "german":
+ language = 0x07;
+ break;
+ case "greek":
+ language = 0x08;
+ break;
+ case "gujarati":
+ language = 0x47;
+ break;
+ case "hebrew":
+ language = 0x0d;
+ break;
+ case "hindi":
+ language = 0x39;
+ break;
+ case "hungarian":
+ language = 0x0e;
+ break;
+ case "icelandic":
+ language = 0x0f;
+ break;
+ case "indonesian":
+ language = 0x21;
+ break;
+ case "italian":
+ language = 0x10;
+ break;
+ case "japanese":
+ language = 0x11;
+ break;
+ case "kannada":
+ language = 0x4b;
+ break;
+ case "kashmiri":
+ language = 0x60;
+ break;
+ case "kazak":
+ language = 0x3f;
+ break;
+ case "konkani":
+ language = 0x57;
+ break;
+ case "korean":
+ language = 0x12;
+ break;
+ case "kyrgyz":
+ language = 0x40;
+ break;
+ case "latvian":
+ language = 0x26;
+ break;
+ case "lithuanian":
+ language = 0x27;
+ break;
+ case "macedonian":
+ language = 0x2f;
+ break;
+ case "malay":
+ language = 0x3e;
+ break;
+ case "malayalam":
+ language = 0x4c;
+ break;
+ case "manipuri":
+ language = 0x58;
+ break;
+ case "marathi":
+ language = 0x4e;
+ break;
+ case "mongolian":
+ language = 0x50;
+ break;
+ case "nepali":
+ language = 0x61;
+ break;
+ case "norwegian":
+ language = 0x14;
+ break;
+ case "oriya":
+ language = 0x48;
+ break;
+ case "polish":
+ language = 0x15;
+ break;
+ case "portuguese":
+ language = 0x16;
+ break;
+ case "punjabi":
+ language = 0x46;
+ break;
+ case "romanian":
+ language = 0x18;
+ break;
+ case "russian":
+ language = 0x19;
+ break;
+ case "sanskrit":
+ language = 0x4f;
+ break;
+ case "serbian":
+ language = 0x1a;
+ break;
+ case "sindhi":
+ language = 0x59;
+ break;
+ case "slovak":
+ language = 0x1b;
+ break;
+ case "slovenian":
+ language = 0x24;
+ break;
+ case "spanish":
+ language = 0x0a;
+ break;
+ case "swahili":
+ language = 0x41;
+ break;
+ case "swedish":
+ language = 0x1d;
+ break;
+ case "syriac":
+ language = 0x5a;
+ break;
+ case "tamil":
+ language = 0x49;
+ break;
+ case "tatar":
+ language = 0x44;
+ break;
+ case "telugu":
+ language = 0x4a;
+ break;
+ case "thai":
+ language = 0x1e;
+ break;
+ case "turkish":
+ language = 0x1f;
+ break;
+ case "ukrainian":
+ language = 0x22;
+ break;
+ case "urdu":
+ language = 0x20;
+ break;
+ case "uzbek":
+ language = 0x43;
+ break;
+ case "vietnamese":
+ language = 0x2a;
+ break;
+ default:
+ this.Core.OnMessage(WixErrors.IllegalEmptyAttributeValue(sourceLineNumbers, attribute.OwnerElement.Name, attribute.Name));
+ break;
+ }
+ }
+
+ return language;
+ }
+
+ ///
+ /// Parses a performance counter element.
+ ///
+ /// Element to parse.
+ /// Default language for the performance counter.
+ private ParsedPerformanceCounter ParsePerformanceCounterElement(XmlNode node, int defaultLanguage)
+ {
+ SourceLineNumberCollection sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node);
+ ParsedPerformanceCounter parsedPerformanceCounter = null;
+ string name = null;
+ string help = null;
+ System.Diagnostics.PerformanceCounterType type = System.Diagnostics.PerformanceCounterType.NumberOfItems32;
+ int language = defaultLanguage;
+
+ foreach (XmlAttribute attrib in node.Attributes)
+ {
+ if (0 == attrib.NamespaceURI.Length || attrib.NamespaceURI == this.schema.TargetNamespace)
+ {
+ switch (attrib.LocalName)
+ {
+ case "Help":
+ help = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
+ break;
+ case "Name":
+ name = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
+ break;
+ case "Type":
+ type = this.GetPerformanceCounterType(sourceLineNumbers, attrib);
+ break;
+ case "Language":
+ language = this.GetPerformanceCounterLanguage(sourceLineNumbers, attrib);
+ break;
+ default:
+ this.Core.UnexpectedAttribute(sourceLineNumbers, attrib);
+ break;
+ }
+ }
+ else
+ {
+ this.Core.UnsupportedExtensionAttribute(sourceLineNumbers, attrib);
+ }
+ }
+
+ if (null == name)
+ {
+ this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name, "Name"));
+ }
+
+ // find unexpected child elements
+ foreach (XmlNode child in node.ChildNodes)
+ {
+ if (XmlNodeType.Element == child.NodeType)
+ {
+ if (child.NamespaceURI == this.schema.TargetNamespace)
+ {
+ this.Core.UnexpectedElement(node, child);
+ }
+ else
+ {
+ this.Core.UnsupportedExtensionElement(node, child);
+ }
+ }
+ }
+
+ if (!this.Core.EncounteredError)
+ {
+ parsedPerformanceCounter = new ParsedPerformanceCounter(name, help, type, language);
+ }
+
+ return parsedPerformanceCounter;
+ }
+
+ ///
+ /// Gets the performance counter type.
+ ///
+ /// Source line information about the owner element.
+ /// The attribute containing the value to get.
+ /// Numeric representation of the language as per WinNT.h.
+ private System.Diagnostics.PerformanceCounterType GetPerformanceCounterType(SourceLineNumberCollection sourceLineNumbers, XmlAttribute attribute)
+ {
+ System.Diagnostics.PerformanceCounterType type = System.Diagnostics.PerformanceCounterType.NumberOfItems32;
+ if (String.Empty == attribute.Value)
+ {
+ this.Core.OnMessage(WixErrors.IllegalEmptyAttributeValue(sourceLineNumbers, attribute.OwnerElement.Name, attribute.Name));
+ }
+ else
+ {
+ switch (attribute.Value)
+ {
+ case "averageBase":
+ type = System.Diagnostics.PerformanceCounterType.AverageBase;
+ break;
+ case "averageCount64":
+ type = System.Diagnostics.PerformanceCounterType.AverageCount64;
+ break;
+ case "averageTimer32":
+ type = System.Diagnostics.PerformanceCounterType.AverageTimer32;
+ break;
+ case "counterDelta32":
+ type = System.Diagnostics.PerformanceCounterType.CounterDelta32;
+ break;
+ case "counterTimerInverse":
+ type = System.Diagnostics.PerformanceCounterType.CounterTimerInverse;
+ break;
+ case "sampleFraction":
+ type = System.Diagnostics.PerformanceCounterType.SampleFraction;
+ break;
+ case "timer100Ns":
+ type = System.Diagnostics.PerformanceCounterType.Timer100Ns;
+ break;
+ case "counterTimer":
+ type = System.Diagnostics.PerformanceCounterType.CounterTimer;
+ break;
+ case "rawFraction":
+ type = System.Diagnostics.PerformanceCounterType.RawFraction;
+ break;
+ case "timer100NsInverse":
+ type = System.Diagnostics.PerformanceCounterType.Timer100NsInverse;
+ break;
+ case "counterMultiTimer":
+ type = System.Diagnostics.PerformanceCounterType.CounterMultiTimer;
+ break;
+ case "counterMultiTimer100Ns":
+ type = System.Diagnostics.PerformanceCounterType.CounterMultiTimer100Ns;
+ break;
+ case "counterMultiTimerInverse":
+ type = System.Diagnostics.PerformanceCounterType.CounterMultiTimerInverse;
+ break;
+ case "counterMultiTimer100NsInverse":
+ type = System.Diagnostics.PerformanceCounterType.CounterMultiTimer100NsInverse;
+ break;
+ case "elapsedTime":
+ type = System.Diagnostics.PerformanceCounterType.ElapsedTime;
+ break;
+ case "sampleBase":
+ type = System.Diagnostics.PerformanceCounterType.SampleBase;
+ break;
+ case "rawBase":
+ type = System.Diagnostics.PerformanceCounterType.RawBase;
+ break;
+ case "counterMultiBase":
+ type = System.Diagnostics.PerformanceCounterType.CounterMultiBase;
+ break;
+ case "rateOfCountsPerSecond64":
+ type = System.Diagnostics.PerformanceCounterType.RateOfCountsPerSecond64;
+ break;
+ case "rateOfCountsPerSecond32":
+ type = System.Diagnostics.PerformanceCounterType.RateOfCountsPerSecond32;
+ break;
+ case "countPerTimeInterval64":
+ type = System.Diagnostics.PerformanceCounterType.CountPerTimeInterval64;
+ break;
+ case "countPerTimeInterval32":
+ type = System.Diagnostics.PerformanceCounterType.CountPerTimeInterval32;
+ break;
+ case "sampleCounter":
+ type = System.Diagnostics.PerformanceCounterType.SampleCounter;
+ break;
+ case "counterDelta64":
+ type = System.Diagnostics.PerformanceCounterType.CounterDelta64;
+ break;
+ case "numberOfItems64":
+ type = System.Diagnostics.PerformanceCounterType.NumberOfItems64;
+ break;
+ case "numberOfItems32":
+ type = System.Diagnostics.PerformanceCounterType.NumberOfItems32;
+ break;
+ case "numberOfItemsHEX64":
+ type = System.Diagnostics.PerformanceCounterType.NumberOfItemsHEX64;
+ break;
+ case "numberOfItemsHEX32":
+ type = System.Diagnostics.PerformanceCounterType.NumberOfItemsHEX32;
+ break;
+ default:
+ this.Core.OnMessage(WixErrors.IllegalEmptyAttributeValue(sourceLineNumbers, attribute.OwnerElement.Name, attribute.Name));
+ break;
+ }
+ }
+
+ return type;
+ }
+
+ ///
/// Parses a perf counter element.
///
***************
*** 1401,1408 ****
{
case "create":
! flags |= 0x4; // XMLCONFIG_CREATE
break;
case "delete":
! flags |= 0x8; // XMLCONFIG_DELETE
break;
default:
--- 2016,2023 ----
{
case "create":
! flags |= 0x10; // XMLCONFIG_CREATE
break;
case "delete":
! flags |= 0x20; // XMLCONFIG_DELETE
break;
default:
***************
*** 1454,1461 ****
{
case "install":
! flags |= 0x10; // XMLCONFIG_INSTALL
break;
case "uninstall":
! flags |= 0x20; // XMLCONFIG_UNINSTALL
break;
default:
--- 2069,2076 ----
{
case "install":
! flags |= 0x100; // XMLCONFIG_INSTALL
break;
case "uninstall":
! flags |= 0x200; // XMLCONFIG_UNINSTALL
break;
default:
***************
*** 1551,1554 ****
--- 2166,2208 ----
this.Core.CreateWixSimpleReferenceRow(sourceLineNumbers, "CustomAction", "SchedXmlConfig");
}
+
+ ///
+ /// Private class that stores the data from a parsed PerformanceCounter element.
+ ///
+ private class ParsedPerformanceCounter
+ {
+ string name;
+ string help;
+ int type;
+ string language;
+
+ internal ParsedPerformanceCounter(string name, string help, System.Diagnostics.PerformanceCounterType type, int language)
+ {
+ this.name = name;
+ this.help = help;
+ this.type = (int)type;
+ this.language = language.ToString("D3", CultureInfo.InvariantCulture);
+ }
+
+ internal string Name
+ {
+ get { return this.name; }
+ }
+
+ internal string Help
+ {
+ get { return this.help; }
+ }
+
+ internal int Type
+ {
+ get { return this.type; }
+ }
+
+ internal string Language
+ {
+ get { return this.language; }
+ }
+ }
}
}
\ No newline at end of file

Index: UtilDecompiler.cs
===================================================================
RCS file: /cvsroot/wix/wix/src/ext/UtilExtension/wixext/UtilDecompiler.cs,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** UtilDecompiler.cs 27 Sep 2006 05:11:20 -0000 1.6
--- UtilDecompiler.cs 27 Jun 2007 05:37:43 -0000 1.7
***************
*** 20,23 ****
--- 20,24 ----
{
using System;
+ using System.Text;
using System.Collections;
using System.Diagnostics;
***************
*** 33,36 ****
--- 34,81 ----
{
///
+ /// Called at the beginning of the decompilation of a database.
+ ///
+ /// The collection of all tables.
+ public override void InitializeDecompile(TableCollection tables)
+ {
+ Table propertyTable = tables["Property"];
+
+ if (null != propertyTable)
+ {
+ foreach (Row row in propertyTable.Rows)
+ {
+ if ("SecureCustomProperties" == row[0].ToString())
+ {
+ // if we've referenced any of the suite or directory properties, add
+ // a PropertyRef to pick up the CA from the extension and then remove
+ // it from the SecureCustomExtensions property so we don't get two
+ StringBuilder remainingProperties = new StringBuilder();
+ string[] secureCustomProperties = row[1].ToString().Split(';');
+ foreach (string property in secureCustomProperties)
+ {
+ if (property.StartsWith("WIX_SUITE_") || property.StartsWith("WIX_DIR_"))
+ {
+ Wix.PropertyRef propertyRef = new Wix.PropertyRef();
+ propertyRef.Id = property;
+ this.Core.RootElement.AddChild(propertyRef);
+ }
+ else
+ {
+ if (0 < remainingProperties.Length)
+ {
+ remainingProperties.Append(";");
+ }
+ remainingProperties.Append(property);
+ }
+ }
+
+ row[1] = remainingProperties.ToString();
+ break;
+ }
+ }
+ }
+ }
+
+ ///
/// Decompiles an extension table.
///




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

-------------------------------------------------------------------------
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-commits mailing list

https://lists.sourceforge.net/lists/listinfo/wix-commits


End of Wix-commits Digest, Vol 11, Issue 20
*******************************************