Just to note I expect it's failing on Windows 2000 because that operating
system does not support Win32 side-by-side assemblies (which do have an
external manifest file). In both cases the 'manifest' contains a list of all
the files making up the assembly. For example, the Visual C++ 2005 C runtime
assembly consists of the files msvcr80.dll, msvcp80.dll and msvcm80.dll. The
manifest also contains the strong-naming hashes of all the files.
If you find you do have to set ApplicationManifest for a .NET assembly (and
I don't think you do - the corresponding column in the MsiAssembly table is
nullable) then set it to the DLL. You would only not do this if you set a
file other than the DLL as being the key path, but again, why would you do
that?
This manifest should not be confused with an application manifest which is
either an embedded resource or an external file named
application.exe.manifest. This lists the assemblies that your application
uses (and in Windows Vista, how you want UAC to behave).
--
Mike Dimmick
_____
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Mike Dimmick
Sent: 08 June 2007 22:23
To: 'Julie Campbell'; [EMAIL PROTECTED]; [EMAIL PROTECTED];
wix-users@lists.sourceforge.net
Subject: Re: [WiX-users] Error in Installing to GAC
I would say that only the DLL file should go in the GAC, the other files
should go elsewhere. AssemblyManifest really only applies to multi-file
assemblies and it should point to the file that contains the assembly's
manifest. For .NET assemblies this is the DLL file, all other files are
typically named .netmodule. Multifile assemblies are really really rare
(especially since the C++ 2005 linker can now actually link multiple modules
into a single file) and I would expect you would never need the
AssemblyManifest attribute. You typically only use .NET modules making up a
multi-file assembly where you want to implement a single logical assembly
using multiple .NET languages.
An XML file is never the assembly's manifest for a .NET assembly. That's
probably an XML documentation file if it just happened to be generated in
your build folder.
I don't think a separate type library is actually required for marshalling
calls to a .NET COM component. It may be required if you want to write
unmanaged COM clients against the library, for example with VB6. It
shouldn't go in the GAC and I would make it a separate Component of its own.
--
Mike Dimmick
_____
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Julie Campbell
Sent: 08 June 2007 21:47
To: [EMAIL PROTECTED]; [EMAIL PROTECTED];
wix-users@lists.sourceforge.net
Subject: Re: [WiX-users] Error in Installing to GAC
I ran across a GAC problem today, did my due Google-ance before bothering
the list, and found an old e-mail chain with the same problem.
Unfortunately, the resolution wasn't posted. Here is the link to jog your
memory:
http://www.mail-archive.com/wix-users@lists.sourceforge.net/msg03509.html
My Experience: This works under XP, fails ("cannot write to
KeithleyTSPLib.xml") under Win2K. That could be a build machine (XP)/test
machine issue, hard to tell.
My Wix Snippet:
<Component Id='KeithleyTSPLib' Guid='{F7C2AEEB-28A6-40fb-B688-C25BEDF44793}'
>
<File Id='KeithleyTSPLib_DLL' Name='KeithleyTSPLib.dll' KeyPath='yes'
Assembly='.net'
Source='C:\PlatformESP\TSB\KeithleyTSP\bin\Release\KeithleyTSPLib.dll'
AssemblyManifest='KeithleyTSPLib_Manifest' >
<TypeLib Id='{156AA8CD-E3E3-45f9-9358-B394074031AA}' Advertise='yes'
Language='0'
Description='!(loc.KeithleyTSPLib_TypeLib_Descr)' MajorVersion='1'
MinorVersion='1' />
</File>
<File Id='KeithleyTSPLib_Manifest' Name='KeithleyTSPLib.xml'
Source='C:\PlatformESP\TSB\KeithleyTSP\bin\Release\KeithleyTSPLib.xml'
/>
<File Id='KeithleyTSPLib_TypeLib' Name='KeithleyTSPLib.tlb'
Source='C:\PlatformESP\TSB\KeithleyTSP\bin\Release\KeithleyTSPLib.tlb'
CompanionFile='KeithleyTSPLib_DLL' />
</Component>
If I leave out the KeithleyTSPLib_Manifest file, I get a 1935/0x80131043
error (http://blogs.msdn.com/astebner/archive/2004/08/26/221005.aspx).
If I put in that element, I get a 2350 error, "Error writing tofile:
KeithleyTSPLib.xml. Verify that you have access to that directory"
(retry/cancel, no luck with retry).
KNOWN WORKAROUND: If I remove all the assembly stuff and just install the
.dll as a plain file then do this manually (or via batch file), it works.
(Well, I am still missing some assembly-esque thing, but I get farther):
copy regasm.exe "C:\Program Files\Keithley Instruments\KETSP\bin"
copy sn.exe "C:\Program Files\Keithley Instruments\KETSP\bin"
c:
cd ""\Program Files\Keithley Instruments\KETSP\bin"
regasm KeithleyTSPLib.dll /tlb
gacutil /i KeithleyTSPLib.dll
Help? I am not a GAC expert by any means. In fact, I can barely spell GAC
.
Julie Campbell
[EMAIL PROTECTED]
____________________________________________________________________________
_
Scanned by IBM Email Security Management Services powered by MessageLabs.
For more information please visit http://www.ers.ibm.com
____________________________________________________________________________
_
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users