Menù Principale

Cerca
Login
Registrati
Link
<< Discussione precedente | Discussione successiva >>   
Fare scrivere correttamente un file REG

Vai a pagina       >>  
Autore Messaggio
Costa28
dom 10 ago 2008 - 21:20
online
Utente registrato #56
Registrato il: dom 21 gen 2007 - 10:18
Messaggi: 64

Ciao a tutti !!!

Mentre voi siete al mare ad abbronzarvi io sono qui a spremermi le meningi !!!

Mi capita una cosa strana con un ini che sto' scrivendo per un'applicazione....innominabile !!!

Il problema è che devo "rinfrascare" all'avvio i percorsi che sono memorizzati nel registro.
Quindi carico le impostazioni generali della chiave in HKCU, le chiavi di attivazione e poi cambio le chiavi dei percorsi utilizzando il comando REG

[RunBefore]
RegEdit=$Home$\$AppName$\HKCU.reg;Attivazione.reg
RunFile=REG.EXE ADD "HKCU\Software\NomeProgramma" /v CollectioCardsPath /t REG_SZ /d "%USER_DIR%\\NomeProgramma\\MyCollectionCard\\" /f
RunFile=REG.EXE ADD "HKCU\Software\NomeProgramma" /v DatabaseFile /t REG_SZ /d "%I_MIEI_DATI_DIR%\\NomeProgramma\\Films.mdb" /f
RunFile=REG.EXE ADD "HKCU\Software\NomeProgramma" /v DocumentsPathReal /t REG_SZ /d "%USER_DIR%\\NomeProgramma\\" /f
RunFile=REG.EXE ADD "HKCU\Software\NomeProgramma" /v FileAviSearchPath /t REG_SZ /d "%USERPROFILE%\\Desktop\\" /f
RunFile=REG.EXE ADD "HKCU\Software\NomeProgramma" /v OpenDatabasePath /t REG_SZ /d "%USER_DIR%\\NomeProgramma\\databases\\" /f
RunFile=REG.EXE ADD "HKCU\Software\NomeProgramma" /v TargetDir /t REG_SZ /d "%I_MIEI_DATI_DIR%\\NomeProgramma\\Films_template\\" /f


Io uso correntemente XP e il tutto funziona alla grande.
Ieri sono andato da un amico che ha W2K e non ha funzionato + nulla.
Dopo un po' di smanettamento ho capito che la causa era la mancanza del comando REG.

Quindi ho pensato di aggirare l'ostacolo creando un file reg contenente le soli chiavi con i riferimenti corretti:

[Functions]

[WriteToReg=$Temp$\ResetPercorsi.reg]
MainKey=HKEY_CURRENT_USER\Software\NomeProgramma
"CollectioCardsPath"=$Home$\$AppName$\NomeProgramma\MyCollectionCard\|\\"
"DatabaseFile"=%I_MIEI_DATI_DIR%\\NomeProgramma\\Films.mdb"
"DocumentsPathReal"=$Home$\$AppName$\NomeProgramma\|\\"
"FileAviSearchPath"=%USERPROFILE%\Desktop\|\\"
"OpenDatabasePath"=$Home$\$AppName$\NomeProgramma\databases\|\\"
"TargetDir"=%I_MIEI_DATI_DIR%\\NomeProgramma\\Films_template\\"


e modificare la sezione runbefore così:


[RunBefore]
RegEdit=$Home$\$AppName$\HKCU.reg;Attivazione.reg
RegEdit=$Temp$\ResetPercorsi.reg


Ho verificato la corretta creazione del file:

REGEDIT4
[HKEY_CURRENT_USER\Software\NomeProgramma]
"CollectioCardsPath"="J:\\PROGRAMMI\\NomeProgramma\\User\\NomeProgramma\\NomeProgramma\\MyCollectionCard\\"
"DatabaseFile"=J:\\I miei dati\NomeProgramma\Films.mdb"
"DocumentsPathReal"="J:\\PROGRAMMI\\NomeProgramma\\User\\NomeProgramma\\NomeProgramma\\"
"FileAviSearchPath"="C:\\Documents and Settings\\user\\Desktop\\"
"OpenDatabasePath"="J:\\PROGRAMMI\\NomeProgramma\\User\\NomeProgramma\\NomeProgramma\\databases\\"
"TargetDir"=J:\\I miei dati\\NomeProgramma\\Films_template\\"


(Per la verità, a differenza di quelli creati dal S.O. esportando una chiave, manca un a capo tra REGEDIT4 e la chiave, ma penso che non sia importante)

Ora capita questo: quando il launcher carica ResetPercorsi, cancella totalmente il contenuto della chiave NomeProgramma e lo sostituisce con il suo contenuto (quindi mana il contenuto di tutte le altre molte chiavi contenute in HKCU.reg) e quindi l'applicazione non va.

Ho fatto una prova empirica:
lanciando l'applicazione... con i REG e quindi funzionante, ho lanciato manualmente resetpercorsi.reg e tutto è andato a posto. La chiave è stata aggiornata senza alcun problema nel senso che sono stati mantenuti tutti i valori di HKCU diversi da quelli contenuti in resetpercorsi.reg.

Quale pensate che possa essere la causa di questo problema?

Grazie e buone vacanze a tutti

[ Modificato sab 16 ago 2008 - 11:24 ]
Torna ad inizio pagina
ZioZione
dom 17 ago 2008 - 12:16
online

Utente registrato #74
Registrato il: dom 21 gen 2007 - 11:31
Provenienza: Tradate (VA)
Messaggi: 3821
Ciao Costa28,
anche guardando i nomi delle chiavi di registro, il programma mi rimane assolutamente sconosciuto. Spero quindi che perdonerai "qualche" inesattezza, dovuta all'impossibilità di testare l'.ini...
Pur non essendo un "espertissimo" di X-Launcher, credo che l'utilizzo del comando "reg.exe" sia assolutamente inutile, potendo contare direttamente sul comando di X-Launcher "WriteToReg". In altre parole, io scriverei


[Setup]
AppName=NomeProgramma

[FileToRun]
PathToExe=$Bin$\$AppName$\$AppName$.exe

[RunBefore]
RegEdit=$Home$\$AppName$\$AppName$.reg

[WriteToReg=$Home$\$AppName$\$AppName$.reg]
MainKey=HKEY_CURRENT_USER\Software\NomeProgramma
"CollectioCardsPath"=%USER_DIR%\\NomeProgramma\\MyCollectionCard\\|\\"
"DatabaseFile"=%I_MIEI_DATI_DIR%\\NomeProgramma\\Films.mdb|\\"
"DocumentsPathReal"=%USER_DIR%\\NomeProgramma\\|\\"
"FileAviSearchPath"=%USERPROFILE%\\Desktop\\|\\"
"OpenDatabasePath"=%USER_DIR%\\NomeProgramma\\|\\"
"TargetDir"=%I_MIEI_DATI_DIR%\\NomeProgramma\\|\\"


Se posso permettermi, poi, ti suggerirei, per una più efficiente portatilizzazione, di non ridefinire cartelle tipo %USER_DIR% o %I_MIEI_DATI_DIR%, ma di utilizzare le cartelle e le variabili predefinite di X-Launcher e di salvare, se possibile, sotto \User\NomeProgramma (cartella di winPenPack) tutto quello che serve al programma per funzionare (ma questo dipende dal fatto se sia possibile ridefinire dalle opzioni del programma le cartelle che salvi nel registro).
In ultimo, ti suggerisco di fare sempre riferimento al manuale di X-Launcher e, soprattutto, ai files .ini degli altri X-Programs, studiando i quali potrai farti un'idea molto più precisa di quanto si può fare.
Cordialmente
ZioZione
Torna ad inizio pagina
Costa28
lun 18 ago 2008 - 11:44
online
Utente registrato #56
Registrato il: dom 21 gen 2007 - 10:18
Messaggi: 64
ZioZione ha scritto ...
anche guardando i nomi delle chiavi di registro, il programma mi rimane assolutamente sconosciuto. Spero quindi che perdonerai "qualche" inesattezza, dovuta all'impossibilità di testare l'.ini...


Beh... per me non è un problema dirlo ma... non è free.

ZioZione ha scritto ...

Se posso permettermi, poi, ti suggerirei, per una più efficiente portatilizzazione, di non ridefinire cartelle tipo %USER_DIR% o %I_MIEI_DATI_DIR%, ma di utilizzare le cartelle e le variabili predefinite di X-Launcher e di salvare, se possibile, sotto \User\NomeProgramma (cartella di winPenPack) tutto quello che serve al programma per funzionare (ma questo dipende dal fatto se sia possibile ridefinire dalle opzioni del programma le cartelle che salvi nel registro).


Purtroppo ho dovuto usare le variabili di sistema se no REG non avrebbe funzionato


Si ma alla fine .... come vedi la tua strada l'avevo già seguita con il risultato che ti ho scritto.

La domanda è sempre la stessa.

perchè se lancio il file reg creato dal launcher cancella le chiavi già caricate in precedenza?

Grazie.
Torna ad inizio pagina
Danix
lun 18 ago 2008 - 12:46

online

Utente registrato #1
Registrato il: ven 29 dic 2006 - 05:38
Provenienza: Sassari
Messaggi: 12916
Perchè salvi le chiavi in TEMP?

[WriteToReg=$Temp$\ResetPercorsi.reg]


Come fa ad essere ripristinato ResetPercorsi.reg al successivo riavvio se la directory $Temp$ viene cancellata alla chiusura del programma?

[RunBefore]
RegEdit=$Temp$\ResetPercorsi.reg


Io proporrei:


[WriteToReg=$Home$\$AppName$\ResetPercorsi.reg]

[RunBefore]
RegEdit=$Home$\$AppName$\ResetPercorsi.reg


Torna ad inizio pagina
Sito Web
Costa28
mar 19 ago 2008 - 09:57
online
Utente registrato #56
Registrato il: dom 21 gen 2007 - 10:18
Messaggi: 64
Danix ha scritto ...

Perchè salvi le chiavi in TEMP?

[WriteToReg=$Temp$\ResetPercorsi.reg]


Perchè così evito di cancellarla esplicitamente alla chiusura del programma.
Contiene chiavi valide solamente per questa sessione ed è quindi inutile conservarla.

Danix ha scritto ...

Come fa ad essere ripristinato ResetPercorsi.reg al successivo riavvio se la directory $Temp$ viene cancellata alla chiusura del programma?

[RunBefore]
RegEdit=$Temp$\ResetPercorsi.reg


Semplice... perchè al riavvio viene ricreata con i nuovi percorsi.


Qualcuno mi può aiutare a risolvere (o comprendere il perchè) del problema di cui al presente thread ?

Grazie 1K

Torna ad inizio pagina
Danix
mar 19 ago 2008 - 18:47

online

Utente registrato #1
Registrato il: ven 29 dic 2006 - 05:38
Provenienza: Sassari
Messaggi: 12916
Costa28 ha scritto ...

Qualcuno mi può aiutare a risolvere (o comprendere il perchè) del problema di cui al presente thread ?

Mi sembrava che lo stessimo facendo.. .. comunque, senza sapere di che programma si tratta ed avere la possibilità di testarlo, la cosa è assai difficile. D'altronde, noi ci occupiamo di portabilizzare principalmente software libero o al massimo freeware (previa autorizzazione), quindi, l'impresa è ardua.
L'unica cosa che posso dirti è di seguire i consigli ricevuti, oppure di aspettare qualcuno che ne sappia di più.

Un ulteriore consiglio. Mi sembra che ci siano errori di sintassi, ad esempio qui:
[Functions]

[WriteToReg=$Temp$\ResetPercorsi.reg]
MainKey=HKEY_CURRENT_USER\Software\NomeProgramma
"CollectioCardsPath"=$Home$\$AppName$\NomeProgramma\MyCollectionCard\|\\"
"DatabaseFile"=%I_MIEI_DATI_DIR%\\NomeProgramma\\Films.mdb"
"DocumentsPathReal"=$Home$\$AppName$\NomeProgramma\|\\"
"FileAviSearchPath"=%USERPROFILE%\Desktop\|\\"
"OpenDatabasePath"=$Home$\$AppName$\NomeProgramma\databases\|\\"
"TargetDir"=%I_MIEI_DATI_DIR%\\NomeProgramma\\Films_template\\"


Infatti nel file .reg, all'inizio delle relative stringhe non sono presenti gli apici:
"DatabaseFile"=J:\\I miei dati\NomeProgramma\Films.mdb"
"TargetDir"=J:\\I miei dati\\NomeProgramma\\Films_template\\"


ed anche questa sezione non mi convince molto:

[RunBefore]
RegEdit=$Home$\$AppName$\HKCU.reg;Attivazione.reg
RegEdit=$Temp$\ResetPercorsi.reg
Torna ad inizio pagina
Sito Web
Costa28
mer 20 ago 2008 - 10:58
online
Utente registrato #56
Registrato il: dom 21 gen 2007 - 10:18
Messaggi: 64
Danix ha scritto ...

ed anche questa sezione non mi convince molto:

[RunBefore]
RegEdit=$Home$\$AppName$\HKCU.reg;Attivazione.reg
RegEdit=$Temp$\ResetPercorsi.reg



Perchè?

Devo lanciare 3 files reg.
2 nello stesso percorso quindi uso la forma contratta;
1 in un altro percorso e lo lancio da solo.

Comunque il problema secondo me stà proprio qui.

Se io faccio:

[RunBefore]
RegEdit=$Home$\$AppName$\HKCU.reg;Attivazione.reg


e lancio a mano:

ResetPercorsi.reg

le chiavi si aggiornano senza alcun problema.
Questo significa che ResetPercorsi è scritto correttamente.

Se faccio:

[RunBefore]
RegEdit=$Home$\$AppName$\HKCU.reg;Attivazione.reg
RegEdit=$Temp$\ResetPercorsi.reg


(che poi è la stessa cosa) nella chiave Nomeprogramma ci trovo solo le sottochiavi di Resetpercorsi e nessuna di HKCU.reg.

This is the problem.
Torna ad inizio pagina
Danix
mer 20 ago 2008 - 11:19

online

Utente registrato #1
Registrato il: ven 29 dic 2006 - 05:38
Provenienza: Sassari
Messaggi: 12916
ResetPercorsi.reg non è scritto correttamente, perchè in quelle due stringhe la sintassi dovrebbe essere:

"DatabaseFile"=%I_MIEI_DATI_DIR%\NomeProgramma\Films.mdb|\\"
"TargetDir"=%I_MIEI_DATI_DIR%\NomeProgramma\Films_template|\\"


E poi, ripeto, è proprio necessario salvarla in $Temp$?
Anche se "al riavvio viene ricreata con i nuovi percorsi", che si ricreerebbero comunque se venisse salvata in $Home$\$AppName$, hai provato:

[WriteToReg=$Home$\$AppName$\HKCU.reg]
[WriteToReg=$Home$\$AppName$\Attivazione.reg]
[WriteToReg=$Home$\$AppName$\ResetPercorsi.reg]

[RunBefore]
RegEdit=$Home$\$AppName$\HKCU.reg;Attivazione.reg;ResetPercorsi.reg
Torna ad inizio pagina
Sito Web
Costa28
gio 21 ago 2008 - 17:11
online
Utente registrato #56
Registrato il: dom 21 gen 2007 - 10:18
Messaggi: 64
Danix ha scritto ...

ResetPercorsi.reg non è scritto correttamente, perchè in quelle due stringhe la sintassi dovrebbe essere:

"DatabaseFile"=%I_MIEI_DATI_DIR%\NomeProgramma\Films.mdb|\\"
"TargetDir"=%I_MIEI_DATI_DIR%\NomeProgramma\Films_template|\\"



Si grazie, avevo già tenuto conto della tua segnalazione ed aggiornato senza alcuna miglioria.


Danix ha scritto ...

E poi, ripeto, è proprio necessario salvarla in $Temp$?
Anche se "al riavvio viene ricreata con i nuovi percorsi", che si ricreerebbero comunque se venisse salvata in $Home$\$AppName$,


Scusami se insisto ma non capisco se il tuo suggerimento è ... come dire funzionale o solamente ... estetico?

Penso che se si trova in $Temp$ o in $Home$\$AppName$ o in $Vattalapesca$, una volta richiamata deve fare il suo lavoro.
Se è vero che è così, con il tuo metodo salvi in modo "permanente" sulla chiavetta un file (da 1K!) che serve solamente per la sessione in corso e che viene sovrasritto alla sessione successiva. Con il mio metodo lo crei e lo cancelli implicitamente a fine sessione.


Danix ha scritto ...

[WriteToReg=$Home$\$AppName$\HKCU.reg]
[WriteToReg=$Home$\$AppName$\Attivazione.reg]
[WriteToReg=$Home$\$AppName$\ResetPercorsi.reg]

[RunBefore]
RegEdit=$Home$\$AppName$\HKCU.reg;Attivazione.reg;ResetPercorsi.reg


Questa non l'ho capita.
O meglio penso che sia necessario chiarire che:
HKCU.reg è già un file di registro creato esportando le sottochiavi di Nomeprogramma;
Attivazione è già un file di registro creato esportando le chiavi dell'attivazione (necessario in quanto la chiave è diversa da NomeProgramma)

ResetPercorsi è un file di registro creato come sopra esplicitato.

Per quale motivo dovrei farli ri-scrivere con l'istruzione writetoreg ?


Ora... scusami ... nel ringraziarti per l'attenzione che mi dedichi... vorrei tornare al mio problema;
quello della cancellazione di tutte le sottochiavi di NomeProgramma (create da HKCU.reg) ad opera di quelle contenute in ResetPercorsi.reg.

Il fatto che il tutto "avvenga" sotto la chiave NomeProgramma, significa che HKCU.reg punta alla chiave giusta.

Io so che lanciando un file reg, le chiavi si aggiungono, eventualmente sostituendosi a quelle con lo stesso nome (ed è quello che succede qualora il lancio di ResetPercorsi avvenga "a mano").

Qualche idea?

[ Modificato ven 22 ago 2008 - 08:41 ]
Torna ad inizio pagina
rbon
ven 22 ago 2008 - 10:43
online
Utente registrato #4134
Registrato il: sab 14 apr 2007 - 11:42
Messaggi: 764
Qualche idea?

si, provare a scrivere un file .reg 'multiplo' (vedi Wintricks.com -Link- )
con l'avvertenza di usare:

REGEDIT5
riga vuota obbligatoria
- chiave HKCU.reg
riga vuota
- chiave Attivazione.reg
riga vuota
- chiave ResetPercorsi.reg

non so se funziona ma provare non costa nulla.
ciao.


Torna ad inizio pagina

Vai a pagina       >>  
Moderatori: Danix, Taf, Rcs, Energy, zandet2, ZioZione, Admin, LordJim60

Salta:     Torna ad inizio pagina

RSS discussione: rss 0.92 RSS discussione: rss 2.0 RSS discussione: RDF
Powered by e107 Forum System