-
VB.NET/VB6 Reg-Free COM
Hi,
Im trying to deploy a VB6 app with a VB.NET interop control using Reg Free Com.
Its a very simple test app, just trying to use a .NET button in a VB6 app. Everything works fine on Vista/7/2008 and the dev machine, however XP SP3 throws the generic error message: "This application has failed to start because the application configuration is incorrect".
The XP Machine has framework 4.0. Project was built on .net 2.0. Interop redist is installed.
.NET code:
Code:
Public Const ClassId As String = "9cde58fb-d3a5-483b-82cb-0f86ad658e97"
Public Const InterfaceId As String = "187216bf-4466-4e8b-aa9b-3122c35bfa09"
Public Const EventsId As String = "6495a366-605c-4dc9-abb1-9e261d062ddb"
Code:
<ComClass(LDButton.ClassId, LDButton.InterfaceId, LDButton.EventsId)> _
Public Class LDButton
Public Event ClickBtn()
'Please enter any new code here, below the Interop code
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
MsgBox("Inner Click")
RaiseEvent ClickBtn()
End Sub
End Class
Control Manifest:
Code:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- You don't need to worry about anything in this file unless you're
using registration-free COM.
There should be an appropriate <clrclass> section for every InteropUserControl
defined in the project -->
<assembly xmlns="urn:schemas-microsoft-com:asm.v1"
manifestVersion="1.0">
<assemblyIdentity
type="win32"
name="MyButton"
version="1.0.0.0" />
<clrClass
clsid="{9cde58fb-d3a5-483b-82cb-0f86ad658e97}"
progid="MyButton.LDButton"
threadingModel="Both"
name="MyButton.LDButton" >
</clrClass>
</assembly>
VB6 Code:
Code:
Option Explicit
Public WithEvents o As MyButton.LDButton
Private Sub Form_Load()
Set o = LDButton1
End Sub
Private Sub o_ClickBtn()
MsgBox "VB6 Event"
End Sub
Project1.exe.manifest:
Code:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity type="win32" name="Project1.exe" version="1.0.0.0" processorArchitecture="x86" />
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="MyButton" version="1.0.0.0" />
</dependentAssembly>
</dependency>
</assembly>
If I rename the manifest files, and register the dll using regasm, all works well on every OS, but I would really like to get the Reg-Free deployment going.
Any ideas?
Thanks,
Luke