Progetto di setup - path di installazione

giovedì 09 marzo 2006 - 18.29

makabe Profilo | Newbie

Ciao a tutti,
il mio problema è questo, ho creato un progetto di installazione, in cui ho aggiunto come custom action una classe in vb.net che compie alcune operazione durante la fase di setup.
La cosa che non riesco a fare è passare il path di installazione (quello scelto dall'utente durante il setup) alla mia classe.
non riesco a farlo perchè questo path di installazione viene inserito dalla form predefinita di Visual Studio .NET 2003, che è poco, anzi pochissimo personalizzabile.
esiste un parametro che posso richiamare per sostituire il path statico inserito di seguito?

Dim path As String = "C:\Programmi\nomeazienda\nomeprogramma\"

anticipatamente grazie.

Brainkiller Profilo | Guru

>esiste un parametro che posso richiamare per sostituire il path
>statico inserito di seguito?
>Dim path As String = "C:\Programmi\nomeazienda\nomeprogramma\"

L'obbiettivo finale quale sarebbe ?
Fare impostare all'utente un path e poi modificarlo da dentro la custom action ?

David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/

trinity Profilo | Guru

Potresti giocare con il salavatggio sul registro di configurazione, oppure crearti un file txt di configurazione dove registri il path che desideri...se ho capito bene il tuo problema, altrimenti confermo la domanda di David.

Ciao
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/

makabe Profilo | Newbie

L'obiettivo finale è quello di intercettare il path scelto dall'utente per passarlo alla mia funzione che modifica un file appena installato.

L'idea del registro di config, o del txt è buona, ma non so comunque come andare a catturare il percorso di installaz.
se riuscissi a scrivere il path di installaz scelto dall'utente sarebbe perfetto

Esempio
Durante la form di scelta della cartella di install, catturo il path scelto dall'utente come stringa (è questo il problema) e poi ho due possibilità

1. passare questa stringa alla funzione
2. scrivere la stringa su un txt e poi la mia funzione legge questo file e acquisicse la stringa.

Brainkiller Profilo | Guru

>L'obiettivo finale è quello di intercettare il path scelto dall'utente
>per passarlo alla mia funzione che modifica un file appena installato.

Allora, primo passo, crea un file .NET da Command Line che nel Main esegue le operazioni che tu desideri. Il Path lo recuperi accedendo al valore args[0]. Hai mai programmato file da command line ? args è una variabile che contiene tutti i parametri passati, 0 è il primo parametro.

Vai in visual studio, vai nelle Custom Actions, vai su Commit, aggiungi la Custom Action, aggiungi il file da command line che hai craeto precedentemente. Una volta aggiunto vai nella finestra proprietà imposta "InstallerClass" a false e nel campo Arguments incolla questo valore "[TARGETDIR]

A questo punto fai un Build del pacchetto di Setup.
Una volta lanciato, quando c'è la fase di commit viene lanciato l'eseguibile da commandline di cui sopra, che avrà come primo parametro args[0] la cartella dov'è stato installato il software.

Ora hai il path e nel codice Main del programma da command line fai quello che ti pare.

Ciao

David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/

bluedragon Profilo | Newbie

visto che siamo in argomento potrei sapere come fare per poter registrare una mia estensione via setup?

Brainkiller Profilo | Guru

>visto che siamo in argomento potrei sapere come fare per poter
>registrare una mia estensione via setup?

Mi pare che lo puoi fare in due modi.
Tasto destro sul progetto, View, File Types.

Oppure guarda come vengono registrate le estensioni nel registro, e creare delle chiavi di registro da installare con il setup, sempre Tasto destro sul progetto, View, Registry.

Ciao,

Ma Makabe che fine ha fatto ?

David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/

makabe Profilo | Newbie

eccomi!

questo estratto di codice si trova nel file vb che è l'applicazione che faccio partire come Custom Action nella fase di Installazione.
l'applicazione è impostata con "InstallerClass" a false, ma non riesco a trovare il campo Arguments a cui impostare il valore "[TARGETDIR].

Dim p As String = "C:\Programmi\azienda\prodotto\"
CreateVirtualDir(s, vd, p)

Dim path As String = args[0]
modificaWebConfig(path, key, Me.TextBox1.Text)


Forse dovrei eseguire questa applicazione nella fase di commit?


Brainkiller Profilo | Guru

>questo estratto di codice si trova nel file vb che è l'applicazione
>che faccio partire come Custom Action nella fase di Installazione.
>l'applicazione è impostata con "InstallerClass" a false, ma non
>riesco a trovare il campo Arguments a cui impostare il valore
>"[TARGETDIR].

Ciao,
allora Arguments dovrebbe essere nella finestra delle proprietà appena sopra ad InstallerClass.

Vedi nell'immagine, c'è impostato /install in questo caso:


270x119 4Kb


Ciao

David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/

makabe Profilo | Newbie

ok! ho trovato la proprietà Arguments

però ho ancora un errore da risolvere:

È previsto un identificatore.
Nome "p" non dichiarato.


Dim p As String = args[0]
CreateVirtualDir(s, vd, p)

dove p dovrebbe essere il path di installazione

Brainkiller Profilo | Guru

>ok! ho trovato la proprietà Arguments
>però ho ancora un errore da risolvere:
> È previsto un identificatore.
> Nome "p" non dichiarato.
> Dim p As String = args[0]
> CreateVirtualDir(s, vd, p)

Attenzione, il codice che ho io riportato è in C#.
Tu stai scrivendo in VB.NET, args[0] non va bene.

Devi modificare il main in questo modo:

Sub Main(ByVal szCmdLine() As String) Console.WriteLine(szCmdLine(0)) Console.WriteLine(szCmdLine(1)) End Sub

Lanciando questo programma in questo modo:

programma.exe pippo pluto

le due Writeline mi scrivono la prima pippo e la seconda pluto ossia le due corrispondenti opzioni da linea di comando con indice 0 e indice 1.
ciao

David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/

makabe Profilo | Newbie


>
>L'obbiettivo finale quale sarebbe ?
>Fare impostare all'utente un path e poi modificarlo da dentro
>la custom action ?
>

fare impostare all'utente un path che verrà usato all'interno della custom action
è possibile farlo?

Brainkiller Profilo | Guru

>fare impostare all'utente un path che verrà usato all'interno
>della custom action
>è possibile farlo?

Durante il setup del programma c'è una finestra dove c'è una TextBox e l'utente può scegliere dove installare il Software. Con il metodo che ti ho spiegato prima questa stringa può essere passata ad uno script/programma esterno.
ciao

David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/
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-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5