2010-10-25 5 views
11

Sto cercando di mantenere un certo codice Wix, e sto ottenendo il seguente avviso:come posso risolvere avvertimento WiX: Component 'X' ha dati sia per utente e per-macchina con un KeyPath HKCU Registro

warning LGHT1076 : ICE57: Component 'FILE_MY_ASSOCIATION' has both per-user and per-machine data with an HKCU Registry KeyPath. 

Dal seguente codice:

<Component Id="FILE_MY_ASSOCIATION" Guid="E1DF42A5-BD00-4a80-9BE5-B66A3EF0576E" Win64="$(var.Variables_Win64)"> 
    <RegistryKey Root="HKCU" Key="Software\MyComany\MyProduct"> 
    <RegistryValue Value="" Type="string" KeyPath="yes" /> 
    </RegistryKey> 
    <ProgId Icon="FILE_MY_FILETYPE_ICON" Id="MY_FILE_EXTENSION" Description="My Product File" > 
    <Extension Id="myext" Advertise="no" > 
     <Verb Id="Open" Argument="&quot;%1&quot;" TargetFile="MYUI_EXE_FILE"/> 
    </Extension> 
    </ProgId> 
</Component> 

ho problemi a capire di che cosa c'è di sbagliato o se questo è un avvertimento ho davvero bisogno di preoccuparsi.

  • Devo preoccuparmi e correggere questo avviso? Potrebbe il codice come è attualmente causare problemi in alcune circostanze?
  • Inoltre, mi chiedo, perché la chiave di registro utilizza HKCU anziché HKLM. Se lo cambio in HKLM. l'avviso scompare, ma questo influenza il comportamento dell'installatore?

Grazie.

risposta

10

L'avviso indica che si stanno scrivendo sia dati specifici dell'utente che dati a livello di sistema nello stesso componente. La voce del Registro di sistema sta scrivendo su HKCU che scriverà sempre su una parte specifica del registro. ProgId, d'altra parte, scrive le voci di registro su HKCR che potrebbero scrivere su HKLM o HKCU. Se scrive su HKLM ovvero uno spazio del Registro di sistema a livello di sistema, il singolo componente sta scrivendo sia su un hive del Registro di sistema specifico dell'utente sia su un hive del Registro di sistema che è contrario alle regole stabilite nello ICE warning.

+0

Interessante. Quindi ProgId può andare a hive per utente o per macchina. Mi chiedo, la presenza della voce RegistryKey fa qualcosa per forzare il ProgId ad andare su HKCU invece che su HKLM? –

+1

No, il collegamento [KHCR] (http://msdn.microsoft.com/en-us/library/ms724475%28VS.85%29.aspx) spiega le regole per quando va a HKCU contro HKLM. – heavyd

1

Sembra che il compilatore ti avvisa di un comportamento che potrebbe non essere quello che desideri: se registri un'associazione di file solo per l'utente, gli altri utenti non vedranno quell'associazione. Questo è un comportamento insolito per un'applicazione. Quindi, dipende dalle tue esigenze: vuoi che l'app sia registrata per gestire tutti i documenti di quel tipo per tutti gli utenti, o solo per l'utente che installa?

+0

Hmm. Probabilmente voglio che l'app sia registrata per gestire tutti i documenti di quel tipo per tutti gli utenti. Puoi dirmi cosa farà come è scritto al momento? –

+0

Forse stai dicendo che il frammento così com'è registrerà l'associazione file solo per l'utente che installa. –

Problemi correlati