Re: [WiX-users] Patch building with Torch, all .NET assemblies "changed"

2012-02-01 Thread Brinkmeier, Doug
We are handling this scenario via automated query against a source control 
repository, rather than at a binary level of the compiled output.  We 
investigated compiled output comparison as well, and it just was not a feasible 
solution for us.

We handled this with a service account that checks-in the version # into the 
notes in SVN when a build is performed on our build server.  We keep our build 
server locked-down to contain our "binding" between the compiled output and the 
source code changes.  We use standard naming conventions (project 
 outputs .dll) to make it easy to see which .dlls 
have changed since release X.  It's not perfect, but it works for us.  The keys 
are locking-down the build server, using a service account, and keeping track 
of source-code to binary output mappings (or enforcing a naming convention to 
do this).  We are using SVN as source control and Jenkins as our build server.

Good luck!


-Original Message-
From: John Cooper [mailto:jocoo...@jackhenry.com] 
Sent: Thursday, January 26, 2012 3:34 PM
To: General discussion for Windows Installer XML toolset.
Subject: Re: [WiX-users] Patch building with Torch, all .NET assemblies 
"changed"

When I was at SCX (Microsoft), we went so far as to investigate tools to 
compare only the "code" parts of an assembly--but in the end, that proved too 
cumbersome and unreliable, and so we just lived with the diff's between build.

At ESA-JHA, a significant number of assemblies are checked into source control 
when they are updated using special, manual "promote" builds.  These assemblies 
are thus not rebuilt except when they change--reducing the diff's in builds.  
But, an all-up complete rebuild is also sacrificed by this technique.  There 
are always compromises.

--
John Merryweather Cooper
Build & Install Engineer - ESA
Jack Henry & Associates, Inc.(r)
Shawnee Mission, KS  66227
Office:  913-341-3434 x791011
jocoo...@jackhenry.com
www.jackhenry.com 




-Original Message-
From: Castro, Edwin G. (Hillsboro) [mailto:edwin.cas...@fiserv.com] 
Sent: Thursday, January 26, 2012 3:14 PM
To: General discussion for Windows Installer XML toolset.
Subject: Re: [WiX-users] Patch building with Torch, all .NET assemblies 
"changed"

My initial guess is that your assembly's versions are changing between builds.

I'm very interested in a proposed approach to this as we have a build that 
results in changed versions on every build. I haven't personally investigated 
an approach to handle this yet. I haven't had the time yet to do it.

Edwin G. Castro
Software Developer - Staff
Digital Channels
Fiserv
Office: 503-746-0643
Fax: 503-617-0291
www.fiserv.com
P Please consider the environment before printing this e-mail

> -Original Message-
> From: john.burak [mailto:john.bu...@telvent.com]
> Sent: Thursday, January 26, 2012 11:00 AM
> To: wix-users@lists.sourceforge.net
> Subject: [WiX-users] Patch building with Torch, all .NET assemblies "changed"
> 
> We recently implemented patch building using Torch/Pyro.  We are 
> keeping the old MSI and totally rebuilding a new one for Torch to diff 
> with.  The problem is that Torch sees all of our .NET assemblies as 
> changed even though the source code only changed in a few.  We did 
> some digging and it turns out that if we recompile an assembly with 
> the same source code, the binary result (DLL or EXE) is different from 
> the first build.  Perhaps it's putting a date stamp inside.  Our guess 
> is that Torch is doing a binary comparison and sees the file as 
> changed.  We need a patch with only the few files who's source code has 
> changed.
> 
> So the question is, how do people handle this situation?  We could try 
> to change our build process so that we don't rebuild every project the 
> second time (let MSBuild pick just the changed ones), but then we won't get 
> "clean"
> builds and we won't detect circular references between assemblies 
> (developers sometimes accidentally do that).  We can limit the impact 
> by doing a non-clean build for only the patch.  This may be the only 
> option, but I wanted to get some opinions first.  Maybe there is something 
> I'm missing here.
> 
> Thanks for your input!
> 
> - John
> 
> --
> View this message in context: http://windows-installer-xml-wix-
> toolset.687559.n2.nabble.com/Patch-building-with-Torch-all-NET-assembl
> ies-
> changed-tp7227881p7227881.html
> Sent from the wix-users mailing list archive at Nabble.com.
> 
> --
>  Keep Your Developer Skills Current with LearnDevNow!
> The most comprehensive online learning library for Microsoft 
> developers is just $99.99! Visual Studio, SharePoint, SQL - plus 
> HTML5, CSS3, MVC3, Metro Style Apps, more. Free future releases when you 
> subscribe now!
> http://p.sf.net/sfu/learndevnow-d2d
> ___
> WiX-users mailing list
> WiX-users@lists.sourceforge.net
> https://l

Re: [WiX-users] Building with a .dll from GAC

2011-04-07 Thread Brinkmeier, Doug
Yes, I've seen this, and this was also just an example reference - the general 
case is "referencing a .dll that is known to be installed only to the GAC".

-Original Message-
From: Peter Shirtcliffe [mailto:pshirtcli...@sdl.com] 
Sent: Thursday, April 07, 2011 12:12 PM
To: wix-users@lists.sourceforge.net
Subject: Re: [WiX-users] Building with a .dll from GAC

This may help if you've not seen it.
http://msdn.microsoft.com/en-us/library/ms251723.aspx


-Original Message-----
From: Brinkmeier, Doug [mailto:doug.brinkme...@countryfinancial.com] 
Sent: 07 April 2011 18:01
To: wix-users@lists.sourceforge.net
Subject: Re: [WiX-users] Building with a .dll from GAC

Eh, that wasn't the answer I was hoping for; I was hoping it would be a
straight 1:1 conversion from our .vdproj project over to our .wixproj.
Currently the .vdproj defines the reference like this:

"AssemblyRegister" = "3:1"
"AssemblyIsInGAC" = "11:TRUE"
"AssemblyAsmDisplayName" =
"8:Microsoft.ReportViewer.ProcessingObjectModel, Version=8.0.0.0,
Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"
"ScatterAssemblies"
{
"_757E3A9FF837C1D92380AD581B054907"
{
"Name" =
"8:Microsoft.ReportViewer.ProcessingObjectModel.dll"
"Attributes" = "3:512"
}
}
"SourcePath" =
"8:Microsoft.ReportViewer.ProcessingObjectModel.dll"
"TargetName" = "8:"
"Tag" = "8:"
"Folder" = "8:_C60F11269B2A4BD9B554C5B92230BB59"
"Condition" = "8:"
"Transitive" = "11:FALSE"
"Vital" = "11:TRUE"
"ReadOnly" = "11:FALSE"
"Hidden" = "11:FALSE"
"System" = "11:FALSE"
"Permanent" = "11:FALSE"
"SharedLegacy" = "11:FALSE"
"PackageAs" = "3:1"
"Register" = "3:1"
"Exclude" = "11:FALSE"
"IsDependency" = "11:TRUE"
"IsolateTo" = "8:"

I'm assuming it's querying the assmebly cache, then, in visual studio to
resolve the references.  It's pretty simple to query the Assembly Cache using
Fusion.dll API calls.  I just wrote an app in about 30 minutes to do just
that using the following calls:

 _
Friend Shared Function CreateAssemblyEnum(ByRef ppEnum As
IAssemblyEnum, ByVal pUnkReserved As IntPtr, ByVal pName As IAssemblyName,
ByVal flags As AssemblyCacheFlags, ByVal pvReserved As IntPtr) As Integer
End Function

 _
Friend Shared Function CreateAssemblyNameObject(ByRef
ppAssemblyNameObj As IAssemblyName,  ByVal
szAssemblyName As String, ByVal flags As CreateAssemblyNameObjectFlags, ByVal
pvReserved As IntPtr) As Integer
End Function

 _
Friend Shared Function CreateAssemblyCache(ByRef ppAsmCache As
IAssemblyCache, ByVal reserved As Integer) As Integer
End Function


 _
Friend Interface IAssemblyCache

'PreserveSig() Indicates that the HRESULT or retval signature
transformation that takes place during COM interop calls should be suppressed
 _
Function UninstallAssembly(ByVal flags As Integer,
 ByVal assemblyName As String, ByVal refData
As InstallReference, ByRef disposition As AssemblyCacheUninstallDisposition)
As Integer

 _
Function QueryAssemblyInfo(ByVal flags As Integer,
 ByVal assemblyName As String, ByRef
assemblyInfo As AssemblyInfo) As Integer
 _
Function Reserved(ByVal flags As Integer, ByVal pvReserved As IntPtr,
ByRef ppAsmItem As [Object],  ByVal
assemblyName As String) As Integer
 _
Function Reserved(ByRef ppAsmScavenger As [Object]) As Integer

 _
Function InstallAssembly(ByVal flags As Integer,
 ByVal assemblyFilePath As String, ByVal
refData As InstallReference) As Integer
End Interface


Any chance this could be included in a future release?  To our company, this
proves to be a major issue currently in converting from our .vbproj to
.wixproj for MSM building.

Thanks,
Doug


-Original Message-
From: David Watson [mailto:dwat...@sdl.com] 
Sent: Thursday, April 07, 2011 10:09 AM
To: wix-users@lists.sourceforge.net
Subject: Re: [WiX-users] Building with a .dll from GAC

Hi,
The best way of doing this is exactly what you think is a bad idea. Store
this dll in a well know location or source control and refe

Re: [WiX-users] Building with a .dll from GAC

2011-04-07 Thread Brinkmeier, Doug
Eh, that wasn't the answer I was hoping for; I was hoping it would be a 
straight 1:1 conversion from our .vdproj project over to our .wixproj.  
Currently the .vdproj defines the reference like this:

"AssemblyRegister" = "3:1"
"AssemblyIsInGAC" = "11:TRUE"
"AssemblyAsmDisplayName" = 
"8:Microsoft.ReportViewer.ProcessingObjectModel, Version=8.0.0.0, 
Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"
"ScatterAssemblies"
{
"_757E3A9FF837C1D92380AD581B054907"
{
"Name" = 
"8:Microsoft.ReportViewer.ProcessingObjectModel.dll"
"Attributes" = "3:512"
}
}
"SourcePath" = "8:Microsoft.ReportViewer.ProcessingObjectModel.dll"
"TargetName" = "8:"
"Tag" = "8:"
"Folder" = "8:_C60F11269B2A4BD9B554C5B92230BB59"
"Condition" = "8:"
"Transitive" = "11:FALSE"
"Vital" = "11:TRUE"
"ReadOnly" = "11:FALSE"
"Hidden" = "11:FALSE"
"System" = "11:FALSE"
"Permanent" = "11:FALSE"
"SharedLegacy" = "11:FALSE"
"PackageAs" = "3:1"
"Register" = "3:1"
"Exclude" = "11:FALSE"
"IsDependency" = "11:TRUE"
"IsolateTo" = "8:"

I'm assuming it's querying the assmebly cache, then, in visual studio to 
resolve the references.  It's pretty simple to query the Assembly Cache using 
Fusion.dll API calls.  I just wrote an app in about 30 minutes to do just that 
using the following calls:

 _
Friend Shared Function CreateAssemblyEnum(ByRef ppEnum As 
IAssemblyEnum, ByVal pUnkReserved As IntPtr, ByVal pName As IAssemblyName, 
ByVal flags As AssemblyCacheFlags, ByVal pvReserved As IntPtr) As Integer
End Function

 _
Friend Shared Function CreateAssemblyNameObject(ByRef ppAssemblyNameObj 
As IAssemblyName,  ByVal szAssemblyName As 
String, ByVal flags As CreateAssemblyNameObjectFlags, ByVal pvReserved As 
IntPtr) As Integer
End Function

 _
Friend Shared Function CreateAssemblyCache(ByRef ppAsmCache As 
IAssemblyCache, ByVal reserved As Integer) As Integer
End Function


 _
Friend Interface IAssemblyCache

'PreserveSig() Indicates that the HRESULT or retval signature 
transformation that takes place during COM interop calls should be suppressed
 _
Function UninstallAssembly(ByVal flags As Integer, 
 ByVal assemblyName As String, ByVal refData 
As InstallReference, ByRef disposition As AssemblyCacheUninstallDisposition) As 
Integer

 _
Function QueryAssemblyInfo(ByVal flags As Integer, 
 ByVal assemblyName As String, ByRef 
assemblyInfo As AssemblyInfo) As Integer
 _
Function Reserved(ByVal flags As Integer, ByVal pvReserved As IntPtr, 
ByRef ppAsmItem As [Object],  ByVal 
assemblyName As String) As Integer
 _
Function Reserved(ByRef ppAsmScavenger As [Object]) As Integer

 _
Function InstallAssembly(ByVal flags As Integer, 
 ByVal assemblyFilePath As String, ByVal 
refData As InstallReference) As Integer
End Interface


Any chance this could be included in a future release?  To our company, this 
proves to be a major issue currently in converting from our .vbproj to .wixproj 
for MSM building.

Thanks,
Doug


-Original Message-
From: David Watson [mailto:dwat...@sdl.com] 
Sent: Thursday, April 07, 2011 10:09 AM
To: wix-users@lists.sourceforge.net
Subject: Re: [WiX-users] Building with a .dll from GAC

Hi,
The best way of doing this is exactly what you think is a bad idea. Store
this dll in a well know location or source control and refer to it as part of
your build process.

The Gac is actually a more complex structure than it appears in the
simplified windows explorer view. You can investigate it from a command
prompt if you feel the need.

For example I have a version of the dll in
"c:\Windows\assembly\GAC_MSIL\Microsoft.ReportViewer.ProcessingObjectModel\10
.0.0.0__b03f5f7f11d50a3a"

I would of course check the legality of shipping this dll in your setup as it
may not be allowed as microsoft have a redist for it. You may need to bundle
this as a pre-requisite.

2010 version.
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=a941c6b2-64dd-4d0
3-9ca7-4017a0d164fd

Dave

-Or

[WiX-users] Building with a .dll from GAC

2011-04-07 Thread Brinkmeier, Doug
I've been doing some research, and seeing a lot of posts about installing a 
.dll to the GAC, but (at least to me) it seems like the much more common 
scenario is just simply using a known .dll/assembly name installed in the GAC 
in the build (just to deploy to the install directory).  I won't know exact 
location of the .dll, because this will be built on different machines, and the 
exact location of the .dll will not be known.  But, we can assume it is 
installed in the GAC only. I've tried a number of different things, and nothing 
has worked yet.  Here is the component:

  

  

I've also tried:

Source="Microsoft.ReportViewer.ProcessingObjectModel.dll"

This particular .dll is not installed on the hard drive anywhere, and only 
exists in the GAC.  I could hack around the issue by dropping it out to a known 
location, but that's not very clean; I assume there should be a pretty easy way 
to reference a .dll in the GAC, but I'm just not finding any documentation on 
it.

Thanks,
Doug
--
Xperia(TM) PLAY
It's a major breakthrough. An authentic gaming
smartphone on the nation's most reliable network.
And it wants your games.
http://p.sf.net/sfu/verizon-sfdev
___
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users