Menù Principale

Cerca
Login
Registrati
Link
<< Discussione precedente | Discussione successiva >>   
LYX, WinTeXmacs, Texmaker

Vai a pagina   <<        >>  
Autore Messaggio
ZioZione
mer 06 giu 2007 - 08:53
online

Utente registrato #74
Registrato il: dom 21 gen 2007 - 11:31
Provenienza: Tradate (VA)
Messaggi: 3821
Ciao Danix,
non so se possa risolvere con le [RunBefore] (registra la .dll) e [RunAfter] (de-registra la .dll), tramite il comando "RunFile", ma in alternativa si potrebbe seguire questa strada: invece di chiamare con X-Launcher direttamente il programma, si chiama (con i parametri adeguati, ma mi servirebbe dare un'occhiata all'.ini dell'X-Launcher) uno script VBScript di questo tipo:
1) registra la .dll
2) manda in esecuzione il programma e ne aspetta la conclusione
3) de-registra la .dll
Purtroppo dipende moltissimo da come è fatto l'.ini, quindi potrebbe rivelarsi un buco nell'acqua...
Cordialmente
ZioZione

[ Modificato mer 06 giu 2007 - 09:00 ]
Torna ad inizio pagina
Danix
mer 06 giu 2007 - 10:35

online

Utente registrato #1
Registrato il: ven 29 dic 2006 - 05:38
Provenienza: Sassari
Messaggi: 12956
Si, è una buona idea.
Basterebbe uno script da avviare con RunFile in [RunBefore] per registrare la .dll
e un'altro script per de-registrare la .dll sempre con RunFile ma in [RunAfter]

Il resto lo fa il launcher.
Tieni conto che le 3 .dll (che ho inserito nella directory principale nella cartella "Dll") sono pronte per esser copiate in system32 e che tutto avviene correttamente. Occorre solo registrare la dll in modo automatico.
Se riesci a preparare uno script per registrare e deregistrare la dll, il gioco è fatto

Ini:

[Setup]
AppName=TeXnicCenter

[FileToRun]
PathToExe=$Bin$\$AppName$\TEXCNTR.EXE

[Functions]
FileCopy=$ExeDir$\Dll\*.dll|@SystemDir@

[RunAfter]
FileDelete=@SystemDir@\msxml4.dll;msxml4a.dll;msxml4r.dll

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

[WriteToReg=$Home$\$AppName$\$AppName$_1.reg]
MainKey=HKEY_CURRENT_USER\Software\ToolsCenter

[WriteToReg=$Home$\$AppName$\$AppName$_2.reg]
MainKey=HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.tex

[WriteToReg=$Home$\$AppName$\$AppName$_3.reg]
MainKey=HKEY_LOCAL_MACHINE\OFTWARE\Classes\LaTeX.Document

[WriteToReg=$Home$\$AppName$\$AppName$_4.reg]
MainKey=HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TeXnicCenter.Project

[RunBefore]
RegEdit=$Home$\$AppName$\$AppName$_1.reg;$AppName$_2.reg;$AppName$_3.reg;$AppName$_4.reg;

[Options]
DeleteTemp=true
MultipleIstances=true
RunWait=true
FixAppData=true
ShowSplash=false
WriteLog=false


[ Modificato mer 06 giu 2007 - 10:35 ]
Torna ad inizio pagina
Sito Web
ZioZione
mer 06 giu 2007 - 11:12
online

Utente registrato #74
Registrato il: dom 21 gen 2007 - 11:31
Provenienza: Tradate (VA)
Messaggi: 3821
Ciao Danix,
non credo che serva lo script, potremmo far fare tutto alla "RunFile"...

Per registrare (nella sezione [RunBefore]):
RunFile=regsvr32 nomeDLL

Per de-registrare (nella sezione [RunAfter]):
RunFile=regsvr32 /u nomeDLL

Una domanda: è proprio necessario copiare le dll in @SYSTEMDIR@? Non si possono registrare direttamente dal folder del programma? Purtroppo non posso, al momento, provarlo io stesso, ma non mi stupirei se andasse ugualmente. Ovviamente, per registrare e de-registrare si deve usare lo stesso path...

Cordialmente
ZioZione

[ Modificato mer 06 giu 2007 - 11:13 ]
Torna ad inizio pagina
Danix
mer 06 giu 2007 - 14:31

online

Utente registrato #1
Registrato il: ven 29 dic 2006 - 05:38
Provenienza: Sassari
Messaggi: 12956
Perfetto!! Non ci avevo pensato!!
Le dll devo stare per forza in system32, in altri percorsi (benchè corretti) non vengono registrate....o meglio non viene trovato il path C:\Documents .....ma non è un grosso problema....

[ Modificato mer 06 giu 2007 - 14:40 ]
Torna ad inizio pagina
Sito Web
Danix
mer 06 giu 2007 - 14:39

online

Utente registrato #1
Registrato il: ven 29 dic 2006 - 05:38
Provenienza: Sassari
Messaggi: 12956
L'unico problema è che la dll viene registrata ogni volta che si apre il programma.....
ci vorrebbe un comando tipo runonce......
Torna ad inizio pagina
Sito Web
ZioZione
mer 06 giu 2007 - 14:45
online

Utente registrato #74
Registrato il: dom 21 gen 2007 - 11:31
Provenienza: Tradate (VA)
Messaggi: 3821
Ciao Danix,
si, grazie, me ne sono accorto da solo. Per completezza, sarebbe meglio usare, per regsvr32, l'opzione "/s" per non visualizzare degli antiestetici (e noiosi) alert. Eccoti la mia versione (scusa per la non ottimizzazione...). Come noterai, ho usato la nostra directory \Lib (mi sembrava appropriata...)

[Setup]
AppName=TeXnicCenter

[FileToRun]
PathToExe=$Bin$\$AppName$\TEXCNTR.EXE

[Functions]
FileCopy=$Lib$\$AppName$\*.dll|@SystemDir@

[RunBefore]
RunFile=regsvr32 /s @SystemDir@\msxml4.dll
RunFile=regsvr32 /s @SystemDir@\msxml4r.dll
RunFile=regsvr32 /s @SystemDir@\msxml4a.dll

[RunAfter]
RunFile=regsvr32 /u /s @SystemDir@\msxml4a.dll
RunFile=regsvr32 /u /s @SystemDir@\msxml4r.dll
RunFile=regsvr32 /u /s @SystemDir@\msxml4.dll
FileDelete=@SystemDir@\msxml4.dll;msxml4a.dll;msxml4r.dll

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

[WriteToReg=$Home$\$AppName$\$AppName$_1.reg]
MainKey=HKEY_CURRENT_USER\Software\ToolsCenter

[WriteToReg=$Home$\$AppName$\$AppName$_2.reg]
MainKey=HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.tex

[WriteToReg=$Home$\$AppName$\$AppName$_3.reg]
MainKey=HKEY_LOCAL_MACHINE\OFTWARE\Classes\LaTeX.Document

[WriteToReg=$Home$\$AppName$\$AppName$_4.reg]
MainKey=HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TeXnicCenter.Project

[RunBefore]
RegEdit=$Home$\$AppName$\$AppName$_1.reg;$AppName$_2.reg;$AppName$_3.reg;$AppName$_4.reg;

[Options]
DeleteTemp=true
MultipleIstances=true
RunWait=true
FixAppData=true
ShowSplash=false
WriteLog=false


Ma, a proposito, a cosa servono esattamente quelle dll? Ho notato che TeXnicCenter ne fa tranquillamente a meno per per partire (non le cerca da nessuna parte) e non ho capito come mandare in errore l'eseguibile quando non le trova, per testare la corretta registrazione...

Cordialmente
ZioZione
Torna ad inizio pagina
Danix
mer 06 giu 2007 - 14:46

online

Utente registrato #1
Registrato il: ven 29 dic 2006 - 05:38
Provenienza: Sassari
Messaggi: 12956
Aspetta ZioZione, così non funziona perchè le dll vengono cancellate e quindi non possono essere de-registrate...quindi o si impedisce che vengano cancellate o si impedisce che vengano de-registrate.

A me senza le dll non parte il programma...hai provato a vedere in system32 se le hai già?


Solo msxml4.dll ha bisogno di esser registrata.

[ Modificato mer 06 giu 2007 - 14:52 ]
Torna ad inizio pagina
Sito Web
Danix
mer 06 giu 2007 - 14:53

online

Utente registrato #1
Registrato il: ven 29 dic 2006 - 05:38
Provenienza: Sassari
Messaggi: 12956
Così è perfetto (urrà!!)

[Setup]
AppName=TeXnicCenter

[FileToRun]
PathToExe=$Bin$\$AppName$\TEXCNTR.EXE

[Functions]
FileCopy=$Lib$\$AppName$_dll\*.dll|@SystemDir@

[RunBefore]
RegEdit=$Home$\$AppName$\$AppName$_1.reg;$AppName$_2.reg;$AppName$_3.reg;$AppName$_4.reg;
RunFile=regsvr32 /s @SystemDir@\msxml4.dll

[RunAfter]
FileDelete=@SystemDir@\msxml4.dll;msxml4a.dll;msxml4r.dll

[WriteToReg=$Home$\$AppName$\$AppName$_1.reg]
MainKey=HKEY_CURRENT_USER\Software\ToolsCenter

[WriteToReg=$Home$\$AppName$\$AppName$_2.reg]
MainKey=HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.tex

[WriteToReg=$Home$\$AppName$\$AppName$_3.reg]
MainKey=HKEY_LOCAL_MACHINE\OFTWARE\Classes\LaTeX.Document

[WriteToReg=$Home$\$AppName$\$AppName$_4.reg]
MainKey=HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TeXnicCenter.Project

[Options]
DeleteTemp=true
MultipleIstances=true
RunWait=true
FixAppData=true
ShowSplash=false
WriteLog=false



----- EDIT ------

E' vero le dll in $Lib$\$AppName$_dll è meglio

[ Modificato mer 06 giu 2007 - 15:02 ]
Torna ad inizio pagina
Sito Web
ZioZione
mer 06 giu 2007 - 15:01
online

Utente registrato #74
Registrato il: dom 21 gen 2007 - 11:31
Provenienza: Tradate (VA)
Messaggi: 3821
Ciao Danix,
perché non funziona? La cancellazione la faccio dopo aver de-registrato le dll (che non avevo nella @system@, ho verificato).
Se serve registrare la sola msxml4.dll (EDIT - ho verificato nell'"install_script.iss" ed è effettivamente così... ), meglio, ma la sezione [RunAfter], secondo me, dovrebbe essere:

[RunAfter]
RunFile=regsvr32 /u /s @SystemDir@\msxml4.dll
FileDelete=@SystemDir@\msxml4.dll;msxml4a.dll;msxml4r.dll

Ho verificato togliendo il flag /s e l'alert di de-registrazione mi avverte che avviene tutto correttamente. Prova e fammi sapere.
Cordialmente
ZioZione

[ Modificato mer 06 giu 2007 - 15:07 ]
Torna ad inizio pagina
Danix
mer 06 giu 2007 - 15:07

online

Utente registrato #1
Registrato il: ven 29 dic 2006 - 05:38
Provenienza: Sassari
Messaggi: 12956
E' vero, li avevo messi nell'ordine inverso!
Ancora meglio allora!

Dovrebbe essere il definitivo:

[Setup]
AppName=TeXnicCenter

[FileToRun]
PathToExe=$Bin$\$AppName$\TEXCNTR.EXE

[Functions]
FileCopy=$Lib$\$AppName$_dll\*.dll|@SystemDir@

[RunBefore]
RegEdit=$Home$\$AppName$\$AppName$_1.reg;$AppName$_2.reg;$AppName$_3.reg;$AppName$_4.reg;
RunFile=regsvr32 /s @SystemDir@\msxml4.dll

[RunAfter]
RunFile=regsvr32 /u /s @SystemDir@\msxml4.dll
FileDelete=@SystemDir@\msxml4.dll;msxml4a.dll;msxml4r.dll

[WriteToReg=$Home$\$AppName$\$AppName$_1.reg]
MainKey=HKEY_CURRENT_USER\Software\ToolsCenter

[WriteToReg=$Home$\$AppName$\$AppName$_2.reg]
MainKey=HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.tex

[WriteToReg=$Home$\$AppName$\$AppName$_3.reg]
MainKey=HKEY_LOCAL_MACHINE\OFTWARE\Classes\LaTeX.Document

[WriteToReg=$Home$\$AppName$\$AppName$_4.reg]
MainKey=HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TeXnicCenter.Project

[Options]
DeleteTemp=true
MultipleIstances=true
RunWait=true
FixAppData=true
ShowSplash=false
WriteLog=false
Torna ad inizio pagina
Sito Web

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