2012-12-07 16 views
6

Sto usando Inno Setup per installare aggiornamenti patch per la mia applicazione VB.net in cui devo sostituire un file DLL e un paio di file javascript/html per l'aggiornamento. Tuttavia, la DLL non viene aggiornata (è in C: \ program files ...) - anche su sistemi XP senza UAC non viene sostituita, ma quando elimino manualmente la DLL e rieseguo la patch, il file viene copiato . Non è di sola lettura, e nessun privilegio UAC/admin è coinvolto nel caso XP.È necessario sovrascrivere una DLL in inno setup installer - ma il file non viene sostituito

Quale potrebbe essere il motivo per cui il file non viene copiato se esiste già un file? È costruito in VS2008 e in .NET 2.0 - la nuova DLL ha anche una data e una differenza di dimensioni più recenti.

C'è un modo per aggirare il problema di accesso in scrittura UAC su Vista/Win7/8? Immagino che la patch non riuscirebbe mai a sostituire il file su questi sistemi con UAC attivo. Dire che la nostra base di utenti per disattivarlo non è ovviamente un'opzione.

[EDIT] L'assembly dll è impacchettato in setup.exe in Visual Studio prelevandolo dalla cartella Release sulla creazione della soluzione. La sezione [file] inno setup ha questo:

[Files] 
Source: C:\Visual Studio 2005\Projects\Setup5\Setup5\Debug\setup.exe; DestDir: {app} 
Source: C:\Visual Studio 2005\Projects\Setup5\Setup5\Debug\interact.msi; DestDir: {app} 
[Run] 
Filename: {app}\setup.exe; Flags: runmaximized 
+0

Puoi mostrare la voce di sezione '[Files]' per quella libreria? Cosa intendi con * "C'è un modo per risolvere il problema di accesso in scrittura UAC su Vista/Win7/8?" *, Quale problema pensi di fare? – TLama

+0

Idealmente voglio che l'aggiornamento della patch avvenga senza alcuna interazione umana - es. Non riesco a far sì che facciano clic su un dialogo per chiedere il permesso di amministratore (UAC?) Quando sto cercando di spostare o eliminare file come la DLL. – Surge

+0

Se hai intenzione di aggiornare/installare i file nella directory 'Programmi 'su Windows Vista, devi solo chiedere i privilegi di amministratore, altrimenti non riesci ad accedere a errore negato e per questo caso non devi specificare esplicitamente il valore della direttiva ['PrivilegesRequired'] (http://jrsoftware.org/ishelp/topic_setup_privilegesrequired.htm) (per impostazione predefinita richiede i privilegi di amministratore). – TLama

risposta

7

La DLL dispone di una risorsa versione? La nuova DLL è una versione superiore rispetto a quella precedente? Per impostazione predefinita, InnoSetup utilizza la risorsa versione per determinare se un file deve essere sostituito.
Un'altra opzione è che è possibile aggiungere il flag ignoreversion nella sezione [Files] per sostituire sempre quel file.

+0

Da quello che posso vedere, la DLL nella soluzione di installazione di Visual Studio non ha alcuna risorsa di versione. Grazie! – Surge

+1

Solo curioso, perché stai creando una soluzione di installazione di Visual Studio e quindi includendola all'interno di un'installazione di InnoSetup? Perché non includere la DLL direttamente nell'installazione di InnoSetup o semplicemente utilizzare l'installazione di Visual Studio? – mirtheil

+0

Grazie per la vostra guida: questo è stato sviluppato da una terza parte e sto cercando di risolvere i problemi di produzione. – Surge

Problemi correlati