ActiveX «Управление» и HTML-тег объекта - PullRequest
1 голос
/ 29 декабря 2010

Я унаследовал некоторый код от некоторых коллег, которые мне поручено обновить. У меня очень мало опыта написания кода до появления .NET, поэтому я не очень знаком с такими вещами, как COM и ActiveX.

Вот как выглядит код:

[Guid("0B84013E-A3D3-1f2f-5E61-4646813BF5DE")]
public interface IGenerator
{
    string GenerateFileName();
}

[ClassInterface(ClassInterfaceType.AutoDual)]
[Guid("D499F7A6F-BAC2-4604-BF12-10481C07E924")]
public class Generator : IGenerator
{
    public string GenerateFileName() {
        // implementation details not important
        return "abcdef.xyz";           
    }
}

Проект создает файл dll, который зарегистрирован на машине с помощью regasm:

regasm Generator.dll /tlb /codebase 

У нас есть веб-сайт, который использует код так:

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script type="text/javascript" language="javascript">
    function Frob() {
                var as = new ActiveXObject("Test.Generator");
                var fn = as.GenerateFileName();
            }
    </script>
...

<img src="foo.jpg" onclick="Frob()" />

Проблема с кодом заключается в том, что: 1) не подписано 2) Они должны зарегистрировать сборку самостоятельно, используя regasm

Мне было поручено подписать сборку и упаковать ее в CAB-файл, разместив на веб-сайте, чтобы пользователю было предложено установить его таким образом.

Уроки, которые я видел до сих пор, говорят вам упаковать его в CAB-файл и поместить его в тег OBJECT на сайте:

http://msdn.microsoft.com/en-us/library/aa751974(v=vs.85).aspx

с сайта:

Microsoft Internet Explorer 4.0 или более поздние версии обрабатывают объект OBJECT и атрибут CODEBASE следующим образом.

  1. Анализирует объект OBJECT и ищет атрибут CODEBASE. Если атрибут CODEBASE отсутствует или предшествует URL-объекту Индексный сервер в CodeBaseSearchPath, этот индекс используется для извлечения файла.

  2. Находит файл .cab, определенный атрибутом CODEBASE.

  3. Расширяет файлы, найденные в CAB-файле.

  4. Копирует расширенные файлы на компьютер пользователя (каталог по умолчанию \ windows \ occache).

  5. Регистрация объектов и / или файлов, требующих регистрации.

  6. Вызывает объектную модель компонента (COM) Функция CoCreateInstance для создать экземпляр указанного объект.

У меня есть несколько проблем / вопросов:

У моего элемента управления нет пользовательского интерфейса. Имеет ли смысл по-прежнему помещать его в тег OBJECT?

Я попытался поместить его в тег объекта и запустить веб-сайт, и он не предлагал мне что-либо установить. Как мне заставить это работать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...