130 messaggi dal 18 gennaio 2008
Ciao a tutti,
io in questo momento sto sviluppando un installer per il progetto a cui sto lavorando. Lo sto facendo come progetto c# perché vogliono che questo installer sia indipendente dall'utente e perché poi deve inviare un log al server. Questo progetto é composto da un client WPF, un addIn di word e da un servizio Windows.
Ho due problemi. Il primo é che mi servirebbe valutare i prerequistiti di sistema e dipendenze e mi piacerebbe trovare qualcosa di giá fatto che sia abbastansa generico. Qualcuno conosce qualche progetto open souce o qualche componente per fare questo?
Il secondo é l'istallazione dell'addin di word. Vorrei evitare di usare l'installer di office perché se no non posso tenere il controllo dell'esito dell'installazione. A qualcuno é mai capitato?

Grazie
Tommaso
5.390 messaggi dal 09 febbraio 2002
Contributi
Ciao,
da Visual Studio ha un tipo di progetto pensato proprio per questo scopo. Creando un nuovo progetto, seleziona "Other Project Types" -> "Setup and deployment" -> "Visual Studio Installer" -> "Setup project". (ma nelle versioni Express di Visual Studio non è disponibile)

ti permette di:
  • verificare dei prerequisiti, come la presenza di un file o di una chiave nel registro; puoi anche controllare che esistano determinati pacchetti redistribuibili di Microsoft, come una certa versione del .Net framework, Sql Express o lo stesso Windows Installer.
  • incorporare degli eseguibili e lanciarli subito prima dell'installazione, al commit, al rollback o alla disinstallazione. Potresti usare questo sistema per installare il tuo add-in di word. La chiamata all'eseguibile è sincrona, quindi l'installer attenderà il termine dell'esecuzione prima di proseguire.
  • Modificare il registro, associare estensioni di file al tuo software
  • Creare le pagine del wizard di installazione e, infine, fargli creare i link sul desktop e nel menu programmi
  • Eseguire operazioni diverse a seconda che l'installer sia lanciato con privilegi di amministrazione o meno.


Alla compilazione, Visual Studio produrrà un file .msi di Windows Installer.

ciao,
Modificato da BrightSoul il 12 novembre 2011 14.55 -

- So what you're saying is, if we get in trouble, there's no one to help us out?
- I'm afraid not.
- Fantastic!
130 messaggi dal 18 gennaio 2008
Ciao, ma questo tipo di progetto puó gestire prerequisiti alternativi?cioé é installato office 2007 o 2010. Puó scrivere o controllare chiavi di registro? In poche parole posso aggiungere del codice custom per descompattare zip e controllare percorsi e prerequisiti?

Grazie

BrightSoul ha scritto:
Ciao,
da Visual Studio ha un tipo di progetto pensato proprio per questo scopo. Creando un nuovo progetto, seleziona "Other Project Types" -> "Setup and deployment" -> "Visual Studio Installer" -> "Setup project". (ma nelle versioni Express di Visual Studio non è disponibile)

ti permette di:
  • verificare dei prerequisiti, come la presenza di un file o di una chiave nel registro; puoi anche controllare che esistano determinati pacchetti redistribuibili di Microsoft, come una certa versione del .Net framework, Sql Express o lo stesso Windows Installer.
  • incorporare degli eseguibili e lanciarli subito prima dell'installazione, al commit, al rollback o alla disinstallazione. Potresti usare questo sistema per installare il tuo add-in di word. La chiamata all'eseguibile è sincrona, quindi l'installer attenderà il termine dell'esecuzione prima di proseguire.
  • Modificare il registro, associare estensioni di file al tuo software
  • Creare le pagine del wizard di installazione e, infine, fargli creare i link sul desktop e nel menu programmi
  • Eseguire operazioni diverse a seconda che l'installer sia lanciato con privilegi di amministrazione o meno.


Alla compilazione, Visual Studio produrrà un file .msi di Windows Installer.

ciao,
Modificato da BrightSoul il 12 novembre 2011 14.55 -
5.390 messaggi dal 09 febbraio 2002
Contributi
ciao,
sì, può controllare la presenza di chiavi nel registro e di file sul disco fisso. Office scriverà sicuramente qualcosa nel registro, quindi, per verificare se è installato devi andare a cercare delle specifiche chiavi, per esempio queste:
http://technet.microsoft.com/en-us/library/dd772637%28WS.10%29.aspx


In poche parole posso aggiungere del codice custom per descompattare zip e controllare percorsi e prerequisiti?

Per queste cose non ti serve del "codice" custom perché puoi configurare tutto da interfaccia grafica. Guarda questo video... l'audio è irritante ma ti mostra cosa si può fare :)

http://www.youtube.com/watch?v=S-rEZ4Ir_PQ

Nel video però non si vede una cosa che ti può tornare utile, cioè includere degli eseguibili che verranno lanciati durante l'installazione. Questi eseguibili possono essere tue applicazioni windows (per rispondere alla questione del codice custom) oppure pacchetti che vuoi siano installati insieme alla tua applicazione principale.

Qui trovi una FAQ:
http://social.msdn.microsoft.com/Forums/zh/winformssetup/thread/717cfce0-3061-400f-9ea3-069f73f3a473

ciao,

- So what you're saying is, if we get in trouble, there's no one to help us out?
- I'm afraid not.
- Fantastic!
130 messaggi dal 18 gennaio 2008
Ciao,
ti faccio l'ultima domanda. Sai come si fá a controllare un prerequisito opzionale? per esempio io devo controllare se c'é installato office 2007 o office 2010.

Grazie ancora
5.390 messaggi dal 09 febbraio 2002
Contributi
ciao,
il progetto Setup ha una finestra chiamata "Launch Conditions Editor" da cui puoi definire le tue condizioni. La raggiungi dal Solution Explorer, in alto, è l'ultima iconcina a destra.

In quella finestra troverai un piccolo menu ad albero in cui una delle voci è "Search target machine". Fai tasto destro lì sopra e poi "Add Registry Search" che ti consente di creare una variabile che verrà riempita dall'installer con il valore trovato nella chiave di registro desiderata.

Mettiamo che tu voglia intraprendere un'azione diversa a seconda che sia installato Office 2007 o 2010 o nessuno dei due.

Con "Add Registry Search" creati una prima variabile che attinge il valore da questo ramo del registro, che sarà presente solo se Office 2007 è installato:
HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Common\DRM

Poi fai una seconda volta "Add Registry Search" per crearti una seconda variabile che legge da un ramo diverso, quello di Office 2010:
HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Common\DRM


Questo era solo un esempio che non posso verificare perché non ho Office installato. Comunque le chiavi le trovi elencate qui:
http://technet.microsoft.com/en-us/library/dd772637%28WS.10%29.aspx

Fatto questo, avrai definito le due variabili. Ora vai nell'altra finestra del progetto Setup, denominata "Custom Actions". Da lì potrai aggiungere degli eseguibili, come ad esempio un pacchetto di installazione per un add-in per Office.

Se hai due pacchetti, uno per Office 2007 e uno per Office 2010, e vuoi che solo uno, al massimo, venga installato, allora potrai legare ciascuno di essi ad una di quelle variabili che avevi definito prima. Così verranno lanciati soltanto se la condizione è verificata.

Dopo aver aggiunto gli eseguibili alle "Custom Actions", nel loro pannello delle proprietà troverai appunto la voce "Condition" che ti lascerà indicare la condizione necessaria affinché ciascun eseguibile sia lanciato.

ciao
Modificato da BrightSoul il 30 dicembre 2011 15.08 -

- So what you're saying is, if we get in trouble, there's no one to help us out?
- I'm afraid not.
- Fantastic!
130 messaggi dal 18 gennaio 2008
Perdonami ma questo setup mi sta facendo impazzire...
Che tu sappia, dopo che hai aggiunto una cartella nella schermata filesystem, c'é modo di eliminarla? Sembra che dopo che ci hai messo degli assembly sia impossibile cancellarla. Al massimo la puoi escludere portandoti peró dietro la copia di tutti quei file e della cartella stessa.
Per aggiungere poi dei setup nei prerequisiti, cioé impostando che la ricerca sia nella stessa cartella dell'installer, per .net lo fá lui ma per un altro componente come si fá? Crystal report mi sta facendo impazzire...
Poi mi sta capitando pure che l'applicazione installata si rimpe perché cerca delle reference, interne a qualche componente di terze parti, a componenti di framework .net di altre versioni. Non avendo la reference diretta, come posso fare in questo caso?

Grazie mille!
Tommaso
5.390 messaggi dal 09 febbraio 2002
Contributi
ciao,

TOM_YOOX ha scritto:

Che tu sappia, dopo che hai aggiunto una cartella nella schermata filesystem, c'é modo di eliminarla? Sembra che dopo che ci hai messo degli assembly sia impossibile cancellarla.

Effettivamente sì... devi prima rimuovere tutti i file contenuti al suo interno prima di poterla cancellare.
Ad ogni modo, per caricare i file nella schermata filesystem, forse conviene fare tasto destro su Application directory -> Add -> Project output -> seleziona il progetto, così da non dover aggiungere i singoli assembly a mano. (Il progetto deve trovarsi nella stessa soluzione altrimenti non riuscirai a selezionarlo dal menu a tendina).

Se hai referenziato degli assembly che sono nella tua GAC ma che pensi non siano nella GAC dell'utente finale, allora nella cartella "References" del tuo progetto vai a selezionare quell'assembly e dalla finestra delle proprietà imposta Copy Local a true, in modo che verrà copiato nella cartella insieme al resto, e quindi incluso anch'esso nel pacchetto di installazione.

TOM_YOOX ha scritto:

Per aggiungere poi dei setup nei prerequisiti, cioé impostando che la ricerca sia nella stessa cartella dell'installer, per .net lo fá lui ma per un altro componente come si fá?

Qui vanno considerati due casi
  • Una dipendenza da un "pacchetto" che non puoi/vuoi ridistribuire insieme al tuo setup. Ad esempio la dipendenza da una certa versione del framework, o da IIS. In questo caso crei una Launch Condition dalla schermata Launch Conditions Editor. Sulla condizione puoi indicare un URL per indirizzare l'utente verso la pagina web da cui scaricare il pacchetto da installare. Quindi, se la condizione fallisce, il setup non potrà proseguire ma almeno avrai informato l'utente su che cosa deve installarsi prima di poter eseguire di nuovo il tuo setup.
  • Invece, la dipendenza da un "pacchetto" che vuoi ridistribuire col tuo setup, lo puoi aggiungere nella schermata Custom Actions Editor, nella cartella "Install", così verrà installato insieme al resto, senza perciò dover creare alcuna condizione.


Se la tua applicazione ha una dipendenza da Crystal Reports, potresti usare il primo metodo, perché vedo che la versione ridistribuibile è un pacchetto da 70+ Mb. Ma anche la seconda ipotesi penso sia percorribile...

TOM_YOOX ha scritto:

Poi mi sta capitando pure che l'applicazione installata si rimpe perché cerca delle reference, interne a qualche componente di terze parti, a componenti di framework .net di altre versioni. Non avendo la reference diretta, come posso fare in questo caso?

Tutte le referenze sono elencate nella cartella "References" del progetto che intendi distribuire. Esaminale una per una e cerca di capire se c'è qualche assembly, a parte quelli del framework, che l'utente finale potrebbe non avere. In questo caso impostagli Copy Local a true.

ciao

- So what you're saying is, if we get in trouble, there's no one to help us out?
- I'm afraid not.
- Fantastic!

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.
Community
Ultimi messaggi
UTENTI ONLINE
In primo piano

I più letti di oggi

Media
In evidenza
MISC