2009-09-04 4 views
5

Sto usando WIX 3. Ho usato il calore per creare un file wxs per una DLL VB6. L'msi crea senza errori e anche l'installazione ha successo.WIX 3: Utilizzo HEAT per Visual Basic 6 COM Dlls

Tutto sembra andare bene e posso richiamare il componente correttamente da un client VB.

Tuttavia, se invoco il componente da una pagina ASP, ottengo 0x800401f3.

Se al posto dell'installatore utilizzo la registrazione automatica (regsvr32), funzionano entrambi correttamente.

ho fatto una differenza di registro per capire quale fosse la differenza tra la registrazione auto (regsvr32) e il programma di installazione, e vedo il seguente

  1. Tutte le indicazioni della HKCR partita - tutto bene qui
  2. regsvr32 aggiunge voci in HKLM, mentre il programma di installazione non tocca HKLM

Mi chiedo se questo è il problema, o sono completamente su una pista sbagliata.

MSDN (http://msdn.microsoft.com/en-us/library/ms694355(VS.85).aspx) indica che le voci del Registro di sistema sono obbligatorie in HKLM, chiedendosi cosa mi manca qui.

Di seguito è riportato il file creato da calore.

<?xml version="1.0" encoding="utf-8"?> 
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> 
    <Fragment> 
     <DirectoryRef Id="TARGETDIR"> 
      <Directory Id="dirAD70B10292EAB7CAC7171859FBB23AA9" Name="vbdll" /> 
     </DirectoryRef> 
    </Fragment> 
    <Fragment> 
     <DirectoryRef Id="dirAD70B10292EAB7CAC7171859FBB23AA9"> 
      <Component Id="cmp9D818C62A6239E8B51E971A0048D0C05" Guid="PUT-GUID-HERE"> 
       <File Id="filDD6F51EC5018EF4A9A312FFA6AC4257D" KeyPath="yes" Source="SourceDir\vbdll\act.dll"> 
        <TypeLib Id="{80D8DA04-72C9-4D36-B269-57D989187ACF}" Description="act" HelpDirectory="dirAD70B10292EAB7CAC7171859FBB23AA9" Language="0" MajorVersion="1" MinorVersion="0"> 
         <Class Id="{31BD65B6-9479-40EB-83C0-E717CD4793DD}" Context="InprocServer32" Description="act.def" ThreadingModel="apartment" Version="1.0" Programmable="yes"> 
          <ProgId Id="act.def" Description="act.def" /> 
         </Class> 
         <Interface Id="{C6D46026-CD7E-4AB0-B3B6-810FBF435BEF}" Name="def" ProxyStubClassId="{00020424-0000-0000-C000-000000000046}" ProxyStubClassId32="{00020424-0000-0000-C000-000000000046}" /> 
        </TypeLib> 
       </File> 
       <RegistryValue Root="HKCR" Key="CLSID\{31BD65B6-9479-40EB-83C0-E717CD4793DD}\Implemented Categories\{40FC6ED5-2438-11CF-A3DB-080036F12502}" Value="" Type="string" Action="write" /> 
      </Component> 
     </DirectoryRef> 
    </Fragment> 
</Wix> 

Aggiornamento: Utilizzando l'opzione "SelfReg" per il file rende il lavoro client ASP pure. Ho letto da altri post che questo non deve essere usato. Qualcuno può dirmi cosa si deve fare?

risposta

7

Per fare in modo che il programma di installazione inserisca le voci in HKLM, l'installazione deve essere contrassegnata come per Mac, il predefinito sembra essere perUser, come indicato di seguito.

<Package InstallScope="perMachine" InstallerVersion="200" Languages="1033" Compressed="yes" SummaryCodepage="1252" /> 

Una volta eseguita, le voci arrivano in HKCR e anche HKLM.

Spero che qualcuno lo trovi utile, mi ha portato un buon 6 ore ..

+0

+1 Proprio quello di cui avevo bisogno. – bluekeys