Until now I have always used the MediaTemplate EmbedCab='yes".  My projects
in general are posted to a web site and I use a mba to update the bundle and
download the packages.  This has been working for many projects using wix
3.8.1128.  However I have recently experimented with creating these same
projects using external cabinets.  (I am using wix 3.9.702, but I think my
question is unrelated to the version of the toolset).

First I assume it is best-practice to sign the external cab files.  Since
there is a wix 3.9 change to suppress authenticode signature checking by
default, is itl recommended that external cab files be signed? 

In my project file the target SignMsi has dependent targets which, for each
locale:
1) Calls torch to create a language specific mst file named ':LangId.mst'.
2) Calls the EmbedTransfrom.exe tool to embed the ':LangId.mst' file into
the en-US msi (which is the only msi which is added to the bundle and
deployed).
3) Calls signtool.exe to timestamp and sign the MSI

All of the above has been working in multiple projects for sometime now. 
However when I add the SignCabs target to my project file the external
cabinet is signed successfully, but torch generates the following error if
the cabinet file is signed.

        "C:\Program Files (x86)\WiX Toolset v3.9\bin\torch.exe" -nologo -v -t
language "--path-to-project--\bin\Release\x64\en-US\project_x64.msi"
"--path-to-project--\bin\Release\x64\de-DE\project_x64.msi" -out
"--path-to-project--\bin\Release\x64\de-DE\1031.mst"
torch.exe(0,0): error TRCH0001: Attempted to read or write protected memory.
This is often an indication that other memory is corrupt.
        Exception Type: System.AccessViolationException
        Stack Trace:
           at
Microsoft.Tools.WindowsInstallerXml.Msi.Interop.MsiInterop.MsiDatabaseGenerateTransform(UInt32
database, UInt32 databaseReference, String transformFile, Int32 reserved1,
Int32 reserved2)
           at
Microsoft.Tools.WindowsInstallerXml.Msi.Database.GenerateTransform(Database
referenceDatabase, String transformFile)
           at Microsoft.Tools.WindowsInstallerXml.Binder.BindTransform(Output
transform, String transformFile)
           at Microsoft.Tools.WindowsInstallerXml.Binder.Bind(Output output, 
String
file)
           at Microsoft.Tools.WindowsInstallerXml.Tools.Torch.Run(String[] args)

It does however generate an mst file which is 16kb.  A successful build
(without SignCabs) generats a mst file that is 20kb, so the 16kb file is
probably not useful.

Any general advice on Cabinet signing, or specific advice on how to sign a
cabinet and still use torch and EmbedTransforms would be appreciated.  Do I
need to sign the cabinet at a different stage in the MSBuild without using
SignCabs?



--
View this message in context: 
http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/wix39-signing-external-cabs-tp7595976.html
Sent from the wix-users mailing list archive at Nabble.com.

------------------------------------------------------------------------------
Want fast and easy access to all the code in your enterprise? Index and
search up to 200,000 lines of code with a free copy of Black Duck
Code Sight - the same software that powers the world's largest code
search on Ohloh, the Black Duck Open Hub! Try it now.
http://p.sf.net/sfu/bds
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to