2012-07-27 3 views
7

Il programma di installazione WiX installa l'applicazione web Silverlight. Può funzionare in pool di app a 32 o 64 bit. Ma quando l'installazione è completata, vedo che il pool di app selezionato è sempre impostato su Abilita applicazioni a 32 bit. È anche per i pool a 64 bit. Non è sutiable perché può cambiare il pool esistente per 64 applicazioni installate in precedenza. Non cambio questo parametro in modo esplicito. Qual è la ragione del problema potrebbe essere?WiX: il programma di installazione cambia sempre AppPool per abilitare l'app 32bit

L'esempio di codice aggiunto:

<Component Id="WebAppVDirComponent" 
    Guid="C7A4B0E8-2389-4A2A-B285-96960BEE1C52" KeyPath="yes"> 
    <Condition><![CDATA[RBGROUP_HOSTING = "iis"]]></Condition> 
     <iis:WebVirtualDir Id="VDir" 
       Alias="[WEB_APP_NAME]" 
       Directory="INSTALLDIR" 
       WebSite="TheWebSite" > 
     <iis:MimeMap Id="SilverlightMimeType" Extension=".xap" Type="application/x-silverlight-app" /> 
     <iis:WebApplication Id="WorkWebApplication" 
       Name="[WEB_APP_NAME]" WebAppPool="TheAppPool"/> 
     </iis:WebVirtualDir> 
     <iis:WebAppPool Id="TheAppPool" Name="[APP_POOL_NAME]" ></iis:WebAppPool>   
     <CreateFolder/> 
</Component> 

risposta

15

questo era stato progettato in modo molto elegante, a mio parere.

Se si inserisce la dichiarazione <iis:WebAppPool> elemento alla <Component> contrassegnato come Win64="yes", il pool di applicazioni saranno creati con la bandiera Enable32bit impostato false. In caso contrario (ovvero, per impostazione predefinita), verrà creato con Enable32bit impostato su true.

Non sono sicuro di come si comporterà quando non si crea il pool di applicazioni con l'installazione, ma si fa riferimento a quello esistente. Mi aspetterei che non cambi affatto questa bandiera. Puoi sperimentare con questo per scoprire come funziona esattamente.

E una nota a margine: eviterei di installare sul pool di applicazioni o sul sito Web esistente. Questo è molto più difficile da mantenere - ricorda che è necessario lasciare la macchina nel suo stato di "pre-installazione" dopo la disinstallazione. Ciò significa che dovrai mantenere il backup/ripristinare lo stato di tutto ciò che cambi con azioni personalizzate ... Brrr ...

+0

Grazie, Yan. Hmm .... sì, è interessante ... Ho aggiunto il codice che uso. – Oleg

+0

Quindi, il codice aggiunto creerà pool di app con Enable32bit impostato su "true". Si potrebbe voler aggiungere un altro componente con condizioni opposte, cioè utilizzando Attributo VersionNT64 e Win64 impostato su sì, e aggiungere tutte le stesse cose ad esso. –

+0

Sì, quando creo un nuovo pool nessun problema. Ma il problema è quando l'utente seleziona quello esistente (64-bit) e questo pool viene quindi modificato in 32-bit. Uso le funzioni .NET personalizzate per selezionare il pool. – Oleg