I'm encountering a problem where most of the time (not all the time)
npMyPlugin_auto.wxs is mistakenly in a skeletal form, resulting in:
error LGHT0204: ICE38
when Visual Studio 2010 is building MyPlugin_WiXInstall.vcxproj.
So far I haven't figured out why this usually happens or how to prevent
it. I haven't yet been able to isolate what's different between the
working and non-working environments, prior to the build. I need to
solve this problem in order to create a Windows installer.
Details are below. Has anyone seen this kind of thing, or does anyone
have any clues why it's happening and how to fix it?
In both the working and the non-working case, Visual Studio seems to
successfully build the plug-in itself from MyPlugin.vcxproj, before
attempting to build MyPlugin_WiXInstall.vcxproj. It's just the build of
MyPlugin_WiXInstall.vcxproj that fails. I think the output of
prep2010.cmd was the same in both cases as well, though I could be
wrong. I haven't done any tweaking of
projects/MyPlugin/Win/WiX/MyPluginInstaller.wxs yet -- for now, I'm just
using what prep2010.cmd generated, and I believe it's essentially the
same in the working and non-working case.
Parenthetically, I don't really understand how npMyPlugin_auto.wxs is
generated -- the build output seems to be saying that the .wxs is
actually compiled from the plug-in DLL, but maybe that's a misleading
message:
Compiling C:/build/bin/MyPlugin/Debug/npMyPlugin.dll ->
npMyPlugin_auto.wxs
Since npMyPlugin_auto.wxs is generated from FireBreath-created files,
I'm posting my question to the FireBreath group rather than the WiX
group, in hopes that someone here has seen or understands this problem.
Thanks in advance for any tips!
Doug
DETAILS:
============================
BROKEN VERSION OF build\projects\MyPlugin\npMyPlugin_auto.wxs:
-----------------------------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<w:Wix xmlns:w="
http://schemas.microsoft.com/wix/2006/wi"
xmlns:xs="
http://www.w3.org/2001/XMLSchema"
xmlns:fn="
http://www.w3.org/2005/xpath-functions">
<w:Fragment>
<w:DirectoryRef Id="INSTALLDIR" />
</w:Fragment>
<w:Fragment>
<w:ComponentGroup Id="PluginDLLGroup">
<w:Component Id="cmp99DB32B0616422AF6027EE83710EA9FE"
Guid="{E15B2C17-1028-413D-A790-C9FBDCFF2998}" Directory="INSTALLDIR">
<w:File Id="filDA9F2EE8D99B7917C6A7C4E45471A9B5"
Source="$(var.BINSRC)\npMyPlugin.dll" />
</w:Component>
</w:ComponentGroup>
</w:Fragment>
</w:Wix>
================================
WORKING VERSION OF build\projects\MyPlugin\npMyPlugin_auto.wxs:
-----------------------------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<w:Wix xmlns:w="
http://schemas.microsoft.com/wix/2006/wi"
xmlns:xs="
http://www.w3.org/2001/XMLSchema"
xmlns:fn="
http://www.w3.org/2005/xpath-functions">
<w:Fragment>
<w:DirectoryRef Id="INSTALLDIR" />
</w:Fragment>
<w:Fragment>
<w:ComponentGroup Id="PluginDLLGroup">
<w:Component Id="cmp99DB32B0616422AF6027EE83710EA9FE"
Guid="{5ADB207D-455F-4043-B999-26703C0F470E}" Directory="INSTALLDIR">
<w:File Id="filDA9F2EE8D99B7917C6A7C4E45471A9B5"
Source="$(var.BINSRC)\npMyPlugin.dll">
<w:TypeLib
Id="{75E05DC7-F9D1-5DA6-8083-D3BBF7232056}" Description="MyPlugin 1.0
Type Library" HelpDirectory="INSTALLDIR" Language="0" MajorVersion="1"
MinorVersion="0">
<AppId Description="FireBreathWin"
Id="{B415CD14-B45D-4BCA-B552-B06175C38606}"
xmlns="
http://schemas.microsoft.com/wix/2006/wi">
<Class
Id="{F7388CAE-B15E-5B8E-8FB2-FF830102F0C0}" Context="InprocServer32"
Description="my plugin" ThreadingModel="apartment" Version="1"
Programmable="yes" Control="yes">
<ProgId Id="MyCompany.MyPlugin.1"
Description="my plugin">
<ProgId Id="MyCompany.MyPlugin"
Description="my plugin" />
</ProgId>
</Class>
</AppId>
<Interface
Id="{41074FF4-459F-5514-A1F7-53F20AB8F8DD}" Name="IFBControl"
ProxyStubClassId="{00020424-0000-0000-C000-000000000046}"
ProxyStubClassId32="{00020424-0000-0000-C000-000000000046}"
xmlns="
http://schemas.microsoft.com/wix/2006/wi" />
<Interface
Id="{E73CE26A-A565-5CD5-9774-963E84DE7449}" Name="IFBComEventSource"
ProxyStubClassId="{00020420-0000-0000-C000-000000000046}"
ProxyStubClassId32="{00020420-0000-0000-C000-000000000046}"
xmlns="
http://schemas.microsoft.com/wix/2006/wi" />
<Interface
Id="{F8868EE9-14F0-5055-BCA2-3087BD1830F8}"
Name="IFBComJavascriptObject"
ProxyStubClassId="{00020424-0000-0000-C000-000000000046}"
ProxyStubClassId32="{00020424-0000-0000-C000-000000000046}"
xmlns="
http://schemas.microsoft.com/wix/2006/wi" />
</w:TypeLib>
</w:File>
<ProgId Id="MIME"
xmlns="
http://schemas.microsoft.com/wix/2006/wi" />
<w:RegistryValue Key="AppID\npMyPlugin.dll"
Value="{B415CD14-B45D-4BCA-B552-B06175C38606}" Type="string"
Action="write" Name="AppID" Root="HKCR" />
<w:RegistryValue
Key="CLSID\{f7388cae-b15e-5b8e-8fb2-ff830102f0c0}\MiscStatus\1"
Value="131473" Type="string" Action="write" Root="HKCR" />
<w:RegistryValue
Key="CLSID\{f7388cae-b15e-5b8e-8fb2-ff830102f0c0}\MiscStatus" Value="0"
Type="string" Action="write" Root="HKCR" />
<w:RegistryValue Key="MIME\Database\Content
Type\application/x-myPlugin" Value="my plugin" Type="string"
Action="write" Root="HKCR" />
<w:RegistryValue Key="MIME\Database\Content
Type\application/x-myPlugin" Value="" Type="string" Action="write"
Name="Extension" Root="HKCR" />
<w:RegistryValue Key="MIME\Database\Content
Type\application/x-myPlugin"
Value="{f7388cae-b15e-5b8e-8fb2-ff830102f0c0}" Type="string"
Action="write" Name="CLSID" Root="HKCR" />
<w:RegistryValue
Key="Software\Microsoft\Windows\CurrentVersion\Ext\PreApproved\{f7388cae-b15e-5b8e-8fb2-ff830102f0c0}"
Value="" Type="string" Action="write" Root="HKCU" />
<w:RegistryValue
Key="Software\Microsoft\Windows\CurrentVersion\Ext\Stats\{f7388cae-b15e-5b8e-8fb2-ff830102f0c0}\iexplore\AllowedDomains\*"
Value="" Type="string" Action="write" Root="HKCU" />
<w:RegistryValue
Key="Software\Microsoft\Windows\CurrentVersion\Ext\Stats\{f7388cae-b15e-5b8e-8fb2-ff830102f0c0}\iexplore"
Value="-858993460" Type="integer" Action="write" Name="Count" Root="HKCU" />
<w:RegistryValue
Key="Software\MozillaPlugins\
mycompany.com/MyPlugin"
Value="[!filDA9F2EE8D99B7917C6A7C4E45471A9B5]" Type="string"
Action="write" Name="Path" Root="HKCU" KeyPath="yes" />
</w:Component>
</w:ComponentGroup>
</w:Fragment>
</w:Wix>
================================
As you can see, the working version has a fleshed-out <w:File> field,
followed by a <ProgId field> and multiple <w:RegistryValue> fields,
which are missing in the broken version. Other than that, the broken
and working versions are identical (except for different GUIDs).
Here is the build output in the broken case:
------ Build started: Project: MyPlugin_WiXInstall, Configuration: Debug
Win32 ------
Building Custom Rule C:/projects/MyPlugin/CMakeLists.txt
CMake does not need to re-run because
C:\build\projects\MyPlugin\CMakeFiles\generate.stamp is up-to-date.
Compiling C:/build/bin/MyPlugin/Debug/npMyPlugin.dll ->
npMyPlugin_auto.wxs
Windows Installer Xml Toolset Harvester version 3.6.3303.0
Copyright (C) Outercurve Foundation. All rights reserved.
heat.exe : warning HEAT1108: The command line switch 't:' is deprecated.
Please use 't' instead.
heat.exe : warning HEAT5150: Could not harvest data from a file that was
expected to be a SelfReg DLL:
C:\build\bin\MyPlugin\Debug\npMyPlugin.dll. If this file does not
support SelfReg you can ignore this warning. Otherwise, this error
detail may be helpful to diagnose the failure: Unable to load file:
C:\build\bin\MyPlugin\Debug\npMyPlugin.dll, error: 126
Compiling C:/build/projects/MyPlugin/MyPluginInstaller.wxs ->
MyPluginInstaller.wixobj
Windows Installer Xml Compiler version 3.6.3303.0
Copyright (C) Outercurve Foundation. All rights reserved.
MyPluginInstaller.wxs
Compiling C:/build/projects/MyPlugin/npMyPlugin_auto.wxs ->
npMyPlugin_auto.wixobj
Windows Installer Xml Compiler version 3.6.3303.0
Copyright (C) Outercurve Foundation. All rights reserved.
npMyPlugin_auto.wxs
Skipping... (no relevant changes detected)
dummy.cpp
dummy.obj : MSIL .netmodule or module compiled with /GL found;
restarting link with /LTCG; add /LTCG to the link command line to
improve linker performance
MyPlugin_WiXInstall.vcxproj ->
C:\build\projects\MyPlugin\Debug\MyPlugin_WiXInstall.lib
Windows Installer Xml Linker version 3.6.3303.0
Copyright (C) Outercurve Foundation. All rights reserved.
C:\build\projects\MyPlugin\npMyPlugin_auto.wxs(8): error LGHT0204:
ICE38: Component cmp99DB32B0616422AF6027EE83710EA9FE installs to user
profile. It must use a registry key under HKCU as its KeyPath, not a file.