There are several parts to this issue, so I will try to be as clear as possible
with each part.
PROBLEM SUMMARY:
The goal is to install an ActiveX component on a client system (it is strictly
for OLE automation, no UI) and have some JavaScript create it and use methods
on it. It works just fine under Windows XP, but not under Vista.
FAILURE ANALYSIS:
It appears that the .msi package creates the registry keys for the ActiveX
component with insufficient user privileges. Specifically, if I open up
RegEdit.EXE and right-click and choose "Permissions..." on any one of the
registry keys created for the component, I see my exact user name from my
company's network domain. For example, "Paul McLaughlin
(<MyCompanyName>\paulm)". Any time I see my name specifically in the list like
this, the control cannot be created from JavaScript under Vista using "new
ActiveXObject()" as you will see below in the source. Again, XP seems to be OK
with this.
MANUAL FIX:
In order to get the component created in JavaScript under Vista, after install
I have to manually remove the keys from the registry that the .msi created and
manually add them again. I do this by some exported Windows Registry .REG
files that contain the exact same entries and I just double-click on them from
Explorer to put them back. After I do this, and then I right-click on any one
of these registry keys in RegEdit.EXE, I do NOT see my name in the
"Permissions..." dialog, but rather my LOCAL MACHINE's "Users" group. For
example, "Users (LowRiderDevVista\Users)". When this is the case, the
JavaScript is able to create an instance of the COM component and the
JavaScript works!
Obviously, I want Windows Installer via WiX to register the component and have
it all work under Vista as well as XP.
Here are my sources (partial):
WIX:
...
<File Id="AXM" Name="MSI_AXM.dll" DiskId="1" Source="MSI_AXM.dll" Vital="yes" >
<TypeLib Id="46A6400B-39E2-4C7F-8BCC-B701E43C6404" Language="0"
MajorVersion="1" MinorVersion="0" Description="iShip, Inc. - ActiveXManager 1.0
Type Library" HelpDirectory="INSTALLDIR"> <Class
Id="4392B188-CBA7-4CA8-A24F-31B378B3F4B5" Context="InprocServer32"
Programmable="yes" ThreadingModel="apartment" Description="MSI.AXM" >
<ProgId Id="MSI.AXM.1" > <ProgId Id="MSI.AXM" />
</ProgId> </Class> <Interface
Id="068BEF68-2AD3-4E79-87FD-2870B7B8DFC7" Name="IAXM"
ProxyStubClassId="00020424-0000-0000-C000-000000000046"
ProxyStubClassId32="00020424-0000-0000-C000-000000000046" />
</TypeLib></File>...
JavaScript from an .HTA web application file that is installed.
var oAXM = new ActiveXObject("MSI.AXM.1"); // Will throw() if it cannot be
created.
oAXM.Test();
I have also tried setting the Package/InstallPrivileges attribute to "limited"
to see if for some reason that helped, but it made no difference. I do not see
any other items in the WiX documentation that might suggest other privilege
settings for Vista or install for that matter.
I am using WiX build 3.0.2925.
Thank you for any information about this issue you might have.
-Paul
_________________________________________________________________
Need to know the score, the latest news, or you need your HotmailĀ®-get your
"fix".
http://www.msnmobilefix.com/Default.aspx
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users