Main menu

Search
Login
Signup
Links
<< Previous thread | Next thread >>   
Fare scrivere correttamente un file REG

Go to page       >>  
Author Post
Costa28
Sun 10 Aug 2008 - 21:20
online
Registered Member #56
Joined: Sun 21 Jan 2007 - 10:18
Posts: 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

[ Edited Sat 16 Aug 2008 - 11:24 ]
Back to top
ZioZione
Sun 17 Aug 2008 - 12:16
online

Registered Member #74
Joined: Sun 21 Jan 2007 - 11:31
Location: Tradate (VA)
Posts: 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
Back to top
Costa28
Mon 18 Aug 2008 - 11:44
online
Registered Member #56
Joined: Sun 21 Jan 2007 - 10:18
Posts: 64
ZioZione wrote ...
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 wrote ...

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.
Back to top
Danix
Mon 18 Aug 2008 - 12:46

online

Registered Member #1
Joined: Fri 29 Dec 2006 - 05:38
Location: Sassari
Posts: 12956
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


Back to top
Website
Costa28
Tue 19 Aug 2008 - 09:57
online
Registered Member #56
Joined: Sun 21 Jan 2007 - 10:18
Posts: 64
Danix wrote ...

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 wrote ...

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

Back to top
Danix
Tue 19 Aug 2008 - 18:47

online

Registered Member #1
Joined: Fri 29 Dec 2006 - 05:38
Location: Sassari
Posts: 12956
Costa28 wrote ...

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
Back to top
Website
Costa28
Wed 20 Aug 2008 - 10:58
online
Registered Member #56
Joined: Sun 21 Jan 2007 - 10:18
Posts: 64
Danix wrote ...

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.
Back to top
Danix
Wed 20 Aug 2008 - 11:19

online

Registered Member #1
Joined: Fri 29 Dec 2006 - 05:38
Location: Sassari
Posts: 12956
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
Back to top
Website
Costa28
Thu 21 Aug 2008 - 17:11
online
Registered Member #56
Joined: Sun 21 Jan 2007 - 10:18
Posts: 64
Danix wrote ...

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 wrote ...

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 wrote ...

[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?

[ Edited Fri 22 Aug 2008 - 08:41 ]
Back to top
rbon
Fri 22 Aug 2008 - 10:43
online
Registered Member #4134
Joined: Sat 14 Apr 2007 - 11:42
Posts: 911
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.


Back to top

Go to page       >>  
Moderators: Danix, Taf, Rcs, Energy, zandet2, ZioZione, Admin, LordJim60

Jump:     Back to top

Syndicate this thread: rss 0.92 Syndicate this thread: rss 2.0 Syndicate this thread: RDF
Powered by e107 Forum System