문제

조언을 따른 후 이 질문 성공적으로 다른 사용자 정의 작업을 위해 몇 줄의 추가 코드를 추가했습니다. 이것은 사용자의 시스템 폴더에 넣으려고 시도한 Capicom의 사본에서 Regsvr32를 호출하기위한 것입니다. 그러나 나는 오류 2721을 얻고 있는데, 이는 내가 본 것에서 오류를 찾지 못한 사용자 지정 조치 인 것 같습니다. 제안이 있습니까? 설치 중에 레지스트리 항목을 추가하는 대신 regsvr을 호출하여 설치 프로그램의 이전 반복과 일관성을 유지하려고 노력하고 있습니다. 대신 좋은 아이디어가 될 수 있습니다. :::어깨를 으쓱하다:::

<Directory Id="SystemFolder" Name="Sys">
  ...
  <component ...>
     ...
    <File Id="CapiCom.Dll" LongName="CapiCom.Dll" Name="CAPICOM.DLL" Source=... />
  </component>
</directory>
...
<CustomAction Id="REGCAPICOM" ExeCommand='regsvr32.exe "[SystemFolder]capicom.dll"' Return = "ignore" Execute="deferred" />
...
<InstallExecuteSequence>
  ...
  <Custom Action="REGCAPICOM" After="InstallFiles" />
</InstallExecuteSequence>

편집 : 예, regsvr32를 설치 프로그램으로 사용하는 것은 추악합니다. 그러나 Capicom SDK를 다운로드했을 때 MS가 설치하기 위해 MS가 말한 것입니다. 검색을 통해 많은 사람들이 이것이 어리석은 방법이라고 말하지만 ... MS MS가 제공 한 메커니즘이기도합니다. 더 나은 방법으로 제안을들을 것입니다. 표준 Windows 구성 요소라는 점을 고려할 때 응용 프로그램이 제거 될 때 Capicom이 남겨두면 큰 문제를 고려하지 않습니다.

편집 : 흠. 분명히, DLL에서 Selfreg를 실행하는 것 중 하나는 레지스트리에 추가 할 임의의 시드를 만드는 것입니다. 이 씨앗을 생성하는 데 어떤 메커니즘을 사용하는지 확실하지 않지만, 특히 모든 사용자에게 동일한 씨앗을 주면 직접 생성하는 것이 좋지 않은 맛으로 간주 될 것 같습니다. 확실하지 않습니다 .... 분명히 내가이 Capicom이 스스로하는 것을 스 건너 뛰면 괜찮으므로 괜찮습니다.

도움이 되었습니까?

해결책

옳은 길:

  • C : Program Files Microsoft Visual Studio .NET 2003 Common7 Tools Deployment Regcap.exe " /o capicom.reg capicom.dll

  • Adam Tengen 's에서 프로그램을 실행하십시오 여기에 게시하십시오.

열 (및 Tallow, IIRC) 은이 게시물에서 Capicom에서 제대로 작동하지 않습니다.

잘못된 방법 :

<CustomAction Id="RegisterCapicom" Directory="SystemFolder" ExeCommand="regsvr32.exe /s &quot;[SystemFolder]Capicom.dll&quot;" Return="check" Execute="deferred" />
...
<InstallExecuteSequence>
  <Custom Action="RegisterCapicom" After="InstallFiles" />
</InstallExecuteSequence>

다른 팁

어, 실제로 Windows 시스템 파일을 직접 설치하려고합니까? 그것은 많은 수준에서는 허용되지 않습니다. 또한, regsvr32.exe는 selfreg이고 selfreg는 설치에서 악한 것으로 잘 알려져 있습니다. 실제로 Windows Installer를 사용하여 등록을 작성하는 것은 훨씬 슈퍼 리우입니다.

그러나 여기의 전체 디자인은 매우 의심 스럽습니다.

파일의 열을 사용하여 출력 WXS 파일을 만들 수 있습니다.이 파일은 MSI가 실행될 때 CAPICOM.DLL 정보를 레지스트리에 넣을 수 있습니다.

그런 것 :

heat file [Path\Capicom.dll] -template:product -out capicom.wxs

그런 다음 CAPICOM.WXS를 설치 프로그램에 추가하십시오. 해당 파일에서 구성 요소 요소를 포함하는 컴포넌트 그룹 요소를 작성하십시오.

<ComponentGroup Id="capicom">
  <ComponentRef Id="capicom.dll"/>
</ComponentGroup>

기본 WXS 파일에서 Capicom 구성 요소를 연결하는 조각 요소를 추가합니다.

마지막 단계는 구성 요소 GroupRef를 다음과 같은 기능에 추가하는 것입니다.

<Feature Id="PRODUCTFEATURE">
  <ComponentGroupRef Id="capicom" />
  ... [Other components or ComponentGroups references]
</Feature>
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top