Installer e problema su SO 64 bit.

lunedì 07 marzo 2011 - 10.05
Tag Elenco Tags  C#  |  .NET 2.0  |  Windows Vista  |  Visual Studio 2005

AntCiar Profilo | Expert

Buongiorno a tutti.
Ho il seguente problema: nella mia applicazione ho inserito un progetto di installazione. Il pacchetto di installazione viene avviato in "passivo" da un altro applicativo. Per poter passare la cartella di installazione selezionata al pacchetto in questione, ho fatto in modo che il primo applicativo scrivesse a registro di sistema all'interno di una chiave il path selezionato per l'installazione. All'interno del pacchetto ho definito una condizione di ricerca su quella chiave di registro che mi va a leggere il valore della chiave e lo attribuisce alla proprietà Path della cartella di installazione. Sui computer con sistema operativo a 32 bit funziona tutto alla perfezione. Su un computer a 64Bit (Win Seven) non funziona. All'interno della chiave di registro posso scrivere qualsiasi cosa ma il pacchetto di installazione legge sempre la root di windows (nel mio caso C:\).

Qualcuno si è trovato già nella mia stessa situazione e ha risolto il problema?

Grazie
Cristian Barca


Ho trovato la soluzione. Posto di seguito:

Prefazione - La struttura della applicazione è cosi composta: una applicazione A nella quale vengono impostati dei parametri. Questi poi vengono scritti in determinate chiavi di registro all'interno della MainKey "LocalMachine". Al termine dei settaggi vengono avviati di conseguenza in automatico degli msi creati con l'installer di VisualStudio. Questi msi vengono avviati passando come argomento della riga di comando il parametro '/passive'. All'interno ogni msi legge dal registro di sistema i parametri impostati dall'utente.

Detto ciò, io avevo compilato l'applicazione A con piattaforma AnyCPU. Quando andavo su un 64bit praticamente succedeva che l'applicazione A nello scrivere i valori a registro di sistema, li scriveva nella sezione a 32bit del registro mentre poi gli msi tentavano di leggere le chiavi nella sezione a 64bit (che ovviamente non esistevano).
Ho compilato l'applicazione A con piattaforma x86 e senza cambiare codice, sul 64bit funziona. Ho usato la stessa compilazione x86 su un 32bit e funziona lo stesso.

Se qualcuno ha avuto la pazienza di leggere fino a qua, gli chiedo un ultima cortesia. Siccome non posso chiudere da solo il thread, qualcuno invii una risposta accettandola in modo da non lasciare argomenti aperti.

Grazie


whiteflash Profilo | Junior Member

avevo avuto anchio un problema simile,
basta impostare la piattaforma o su 32 o su 64 e crearti due eseguibili differenti
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5