0

웹 응용 프로그램에 .NET COM interop dll을 배포하려고합니다. 개발 중에 COM interop에 등록해야하는 어셈블리의 경우 빌드 등록 정보에서 "COM interop에 등록"옵션을 선택했습니다. 이 방법에서는 모든 것이 잘 작동합니다..NET COM interop dll을 등록하는 것은 프로젝트 빌드에서 작동하지만 regasm에서는 작동하지 않습니다.

그러나 ASP.NET 응용 프로그램을 배포하고 regasm 도구를 사용하여 수동으로 어셈블리를 등록하려고 시도하면 작동하지 않습니다. :(

내 최종 목표는 이것이다 :. 사용자가 사이트에 와서 객체가 등록되어 있지 않습니다

되면, 사용자가 ClickOnce를를 사용하여 DLL을 등록 할 수 있습니다 그 후, 사용자는 아무것도 모든를 입력하라는 메시지가되지해야 그냥 작동한다!

미리 감사드립니다.

답변

2

당신은 또한 비스타/윈도우에서 작동하려면 관리자가 될 필요가있을 것이다 보안 장애. 관리자 권한이없는 사용자가 ClickOnce를 통해 .NET 코드 (COM-visible 클래스 포함)를 설치할 수는 있지만 사용자가 원하는 것을 얻을 수 없다고 생각할 수도 있습니다.

ClickOnce 설치는 파일 시스템의 사용자 프로파일 섹션 아래의 모호한 위치. 배포 된 응용 프로그램의 모든 COM 구성 요소는 응용 프로그램 내에서 볼 수 있지만 클라이언트 컴퓨터의 다른 곳에서는 볼 수 없습니다. 특히 브라우저에서 실행되는 클라이언트 스크립트는 ClickOnce를 통해 배포 된 COM 구성 요소를 호출 할 수 없습니다.

ClickOnce 배포는 배포 된 코드를 의도적으로 나머지 시스템과 구분하여 보관합니다.

관리자 권한이 있고 명시 적으로 DLL을 등록하지 않는 한 웹 응용 프로그램을 배포 한 다음 COM DLL과 상호 작용할 수있는 방법이 없습니다. 일반적으로 나는 이것이 이라고 생각합니다. 좋은 것.

다른 사람이 더 좋은 제안을 할 수도 있지만 앞으로 볼 수있는 유일한 방법은이 DLL을 데스크톱에서 실행되는 .NET 응용 프로그램에 사용하는 기능을 빌드하는 것입니다. 이것은 ClickOnce를 통해 배포 할 수 있으며 웹 응용 프로그램의 링크를 통해 호출 할 수 있습니다. 심지어 웹 서버에 데이터를 게시 할 수도 있습니다. 하지만 브라우저와 상호 작용할 수있는 방법을 볼 수 없습니다.

+0

고맙습니다! 당신의 지각과 지식은 제가 해결책을 찾는데 도움이되었습니다. – Sai

1

ClickOnce를 물건으로 당신을 도울 수 있지만, 당신이로를 설치하지 않는 경우 (RegAsm을위한/코드베이스 옵션을 사용할 필요가있을 수 GAC), 예 :

regasm AssemblyName.dll /codebase 

예상 할 수 있듯이, 클라이언트 컴퓨터의 COM DLL을 설치하려고 웹 응용 프로그램은 여러 얼굴을 것입니다 7.