Это работает для меня, используя MSI для установки dll-документа ActiveX:
Этот ответ немного запоздал, но я также боролся с этим около года, прежде чем заставить его работать.Кажется, ключ в регистрации ActiveX EXE или DLL при установке на другом компьютере.Следующее работает для меня;Я только перечисляю шаги для DLL, так как 100% *
*1005* Создайте свой документ ActiveX (вы можете иметь формы с dll, как exe) ИспользованиеПакет VB и Развертывание для сбора необходимых файлов в одном месте.Обязательно используйте безопасные системные файлы VB (скачайте zip-файл [vb6sp6sys.zip] из них
http://www.jrsoftware.org/iskb.php?vb) вместо файлов, созданных мастером пакетов и развертывания VB. Используйте VB для созданиянебольшой исполняемый файл (убедитесь, что Startup Object - Sub Main), показанный ниже в разделе кода.Так как Internet Explorer является «контейнером» для вашего документа ActiveX, этот маленький exe использует его версию (IE) для загрузки вашего UserDocument1.vbd,В зависимости от того, какую ОС вы используете. Windows 7 и, я полагаю, Vista, по умолчанию используют другую версию IE, которая, по-видимому, не хочет запускать документ ActiveX. Но в их Program Files (x86) естьверсия IE, которая будет - отсюда и проверка того, существует ли папка (x86) или нет, если она не предполагает, что это более низкая версия Windows и работает с использованием обычного IE. Назовите этот небольшой исполняемый файл как-то вроде «SilentStartUp_ByOS.exe» Теперь плохие новости: вам нужно купить Advanced Installer, чтобы использовать его Профессиональную версию, которая необходима дляИзвлеките регистрационную информацию из собственной библиотеки вашей DLL и любых включенных OCX.Существует бесплатная версия Advanced Installer, но она не имеет этой возможности.Примечание. Могут быть и другие установочные пакеты, которые также могут это делать, но Advanced Installer - единственный, о котором я знаю.Я фанат Inno, но не смог найти способ сделать это с Inno. Включите все файлы из 2. выше, вместе с exe, созданным в 3., в ваш установочный пакет.Присвойте значок исполняемому файлу, созданному в 3., с помощью Advanced Installer и сделайте его ярлыком для запуска вашей программы. Обязательно установите все (используя экран «Параметры установки») в AppDataFolder \ AnyFolderNameHere вместо ProgramFilesFolderради того, чтобы обойти проблемы безопасности, которые являются очень строгими на Win7 и Vista, не говоря уже о том, установлен ли он в корпоративной сети.
Когда все будет сделано, поскольку ваша dll была зарегистрирована, IE должен быть в состояниидля запуска вашего документа ActiveX.
Код:
Sub Main()
Dim strTemp As String
'ok, it may be Vista or Windows 7...
strTemp = "C:\Program Files (x86)\Internet Explorer\"
If CheckFileFolderExists(strTemp, False) = True Then
'ok, use older version of IEXPLORE to run this on Win7 (or Vista)...
Shell "C:\Program Files (x86)\Internet Explorer\IEXPLORE.EXE " & App.Path & "\UserDocument1.vbd", vbMaximizedFocus
Else
Shell "C:\Program Files\Internet Explorer\IEXPLORE.EXE " & App.Path & "\UserDocument1.vbd", vbMaximizedFocus
End If
End Sub
Function CheckFileFolderExists(strName, fFile) As Boolean
' The fFile variable determines whether you're
' looking for a File (True) or Folder(False)
' The strName variable holds the fully qualified
' path you're looking for
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
CheckFileFolderExists = False
If fFile = True Then ' It's a file
If fso.FileExists(strName) = True Then
CheckFileFolderExists = True
Exit Function
End If
Else ' It's a folder/directory
If fso.FolderExists(strName) = True Then
CheckFileFolderExists = True
Exit Function
End If
End If
Set fso = Nothing
End Function