Domanda

Sto creando un progetto di installazione nella mia soluzione usando Wix 3.8. Come parte di questa installazione creo alcune condizioni di avvio, una delle quali è il controllo del fatto che Microsoft .NET Framework 4.5.1 è installato.

Per fare ciò Voglio usare alcune delle proprietà nella libertà Wixnetfxextension che sembra funzionare bene per le versioni precedenti del quadro .NET. C'è un esempio di come farlo su http://wixtoolset.org /Documentation/Manual/v3/Howtos/redistrables_and_install_checks/check_for_dotnet.html Questo non funziona per .NET 4.5.1, tuttavia in quanto non vi è alcuna proprietà NetFramework451 da controllare.

Guardando la fonte per il modulo netfx451.wxs ( http://wix.codeplex.com/sourcecontrol/latest#src/ext/netfxextension/wixlib/netfx451.wxs ) Sembra che non vi sia proprietà separata da utilizzare per .NET 4.5.1, ma piuttosto Utilizza anche lo stesso netframework45. Come lo capisco, V4.5.1 è un aggiornamento sul posto per V4.5, quindi utilizza le stesse chiavi di registro (penso). Ad ogni modo, in quel modulo, controlla semplicemente il numero di versione restituito da NetFramework45 come segue:

DetectCondition="NETFRAMEWORK45 >= $(var.NetFx451MinRelease)"
.

Quindi ho assunto che potrei semplicemente scrivere una condizione come quanto segue:

    <PropertyRef Id="NETFRAMEWORK45" />
    <Condition Message="The .NET Framework 4.5.1 was not found.  Stopping installation.">
       <![CDATA[Installed OR (NETFRAMEWORK45 >= 378675)]]>
    </Condition>
.

Ma, questo ha restituito il messaggio di errore su una macchina che conosco ha .NET Framework 4.5.1 installato. Quindi ho creato una condizione come questa, quindi potrei semplicemente vedere il numero di versione restituito dal registro:

    <PropertyRef Id="NETFRAMEWORK45" />
    <Condition Message ="[NETFRAMEWORK45]">0</Condition>
.

Mostra una finestra di messaggio con il seguente testo: # 378758 Quindi so che il valore nel registro è corretto.

Quindi sono un po 'confuso il motivo per cui la mia condizione è fallita. C'è qualcosa di ovvio che mi manca qui, o c'è qualche altro modo per confrontare quel valore nell'elemento condizione?

Ecco la correzione per includere il simbolo Hash come suggerito da PILIDW:

    <PropertyRef Id="NETFRAMEWORK45" />
    <Condition Message="The .NET Framework 4.5.1 was not found.  Stopping installation.">
      <![CDATA[Installed OR (NETFRAMEWORK45 >= "#378675")]]>
    </Condition>
.

È stato utile?

Soluzione

Sei inclusi quel # nel confronto, non ti aiuterà.Hai provato incluso il numero nel tuo confronto CDATA?

Assumerei che quando Microsoft People Post Codice Esempi per rilevare le versioni quadro che non si può fare con un semplice registeria in un file MSI.

http://blogs.msdn.com/B / ASTEBNER / Archivio / 2013/10/17 / 10457758.aspx

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top