2009-04-01 6 views
0

Excel VBA, myApp.xls로 작성된 응용 프로그램이 있습니다. 현재 우리는 InstallShield를 사용하여 응용 프로그램을 배포합니다. Windows Vista로 전환하기 때문에 표준 사용자로 응용 프로그램을 설치할 수 있어야합니다. 설치 프로세스 중에 레지스트리를 업데이트 할 수 없습니다. Excel 응용 프로그램 외에 여러 VB6 응용 프로그램도 있습니다. 이러한 응용 프로그램을 설치하기 위해 RegFree com을 사용하고이 포럼의 사람들이 제안한대로 My Manifest (MMM)를 만들 수있었습니다 (통찰력을 크게 얻었습니다!). 이 과정은 조금 지루했지만 잘 작동했습니다. 그런 다음 VS '05 설치 ​​프로그램 프로젝트에서 MMM의 출력을 패키징하고 msiinfo.exe를 사용하여 msi에서 UAC 프롬프트를 제거했습니다. 이제는 기본적으로 Excel 파일에있는 응용 프로그램을 설치해야합니다. 나는 MM6이 내 VB6 응용 프로그램 중 하나를 위해 만든 manifest를 수정하고이를 통해 Excel 파일을 실행하려고했지만 많은 운이 없었습니다. 아무도이 일을하는 방법을 알고 있습니까? RegFree com은 VBA와 함께 작동합니까? 어떤 생각이나 제안이라도 대단히 감사 할 것입니다.Excel VBA로 작성된 응용 프로그램과 함께 RegFree Com을 사용할 수 있습니까?

감사합니다,

스티브

답변

1

네, Win2k3 +에, VBA를 통해 등록이 필요없는 COM을 사용하는 것이 가능하다.

기본적으로 reg-free는 "이 COM 클래스는 더 이상 발견 가능하도록 등록 할 필요가 없으며 등록 정보는 매니페스트에 의해 운반됩니다."라고 말합니다.

매니페스트 자체는 실행 파일에 포함되어 있거나 * .exe.manifest라는 이름으로 실행 파일에 암시 적으로 참조됩니다. 그러나 VBA의 경우 코드가 실행 파일에 저장되어 있지 않으므로 매니페스트에 대한 참조를 얻으려면 다른 방법이 필요합니다.

여기에 Microsoft.Windows.ActCtx 개체가 들어 있습니다. 명시 적 매니페스트 참조가있는 경우 개체를 구체적으로 인스턴스화 할 수 있습니다. (내가 VBA 구문에 녹슨 해요 JS에서, 이후) 예를 들어

:

var actCtx = WScript.CreateObject("Microsoft.Windows.ActCtx"); 
actCtx.Manifest = "myregfree.manifest"; 
var obj = actCtx.CreateObject("MyObj"); 
관련 문제