2013-11-14 6 views
8

Attualmente sto usando Inno Setup Compiler per creare un programma di installazione per Windows e tutto funziona correttamente, tranne quando cerco di includere una cartella nel file exe. In altre parole, quello che voglio è poter includere una cartella con due file al suo interno, voglio che questa cartella appaia proprio dove il file .exe è (C: \ Programmi x86 \ appFolder) quando il programma è installato.Come includere una cartella nel file exe usando Inno Setup Compiler

Inno ha un'opzione per aggiungere cartelle ma per qualche ragione quando seleziono la cartella con i due file che voglio, compila bene ma quando installo effettivamente il programma in realtà aggiunge i due file ma non la cartella.

Ho trovato la seguente riga di codice online e l'ho usata ma in realtà includeva alcune cartelle che non volevo. Il problema che ho con questa riga di codice è che non lo capisco completamente, non so dove dovrebbe essere il percorso della cartella? Che cosa è exlude: "Setup.iss, generated_images \"

Source: "*.*"; Excludes: "Setup.iss,generated_images\*"; DestDir: "{app}"; Flags:replacesameversion recursesubdirs 

Qualcuno può essere così gentile di spiegare questa riga di codice?

Grazie

+1

Dovrebbe includere tutti i file ('*. *') Da tutte le sottodirectory ('recursesubdirs') dalla posizione dello script escludendo il file' Setup.iss' e tutti i file dalla sottocartella 'generate_images'. – TLama

+0

Conservo in modo genrale il mio script in una cartella diversa, quindi, se aggiungo un percorso assoluto e sbarazzarsi dell'istruzione exclude dovrebbe funzionare, giusto? * Fonte: "* C: \ Users \ nomeutente \ Documenti *"; DestDir: "{app}"; Flags: replaceaceseversion recursesubdirs –

+1

Sure, quel parametro 'Exclude' è lì solo per l'esclusione. Se non vuoi escludere nulla dalla directory 'Source' (che può essere ovviamente il percorso assoluto o relativo, ma non solo il percorso in cui è archiviato lo script), non usarlo. – TLama

risposta

16

Da suoi commenti (come rifugio; t realmente mostrato tutto il codice si sta parlando), immagino che si sta facendo qualcosa di simile:

[Files] 
Source: "blah.exe"; DestDir: "{app}"; Flags:replacesameversion 
Source: "subfolder\*.*"; DestDir: "{app}"; Flags:replacesameversion 

In questo caso, sta copiando il contenuto di subfolder a {app}.

Se si desidera copiare e mantenere la sottodirectory, specificare la directory stessa:

[Files] 
Source: "blah.exe"; DestDir: "{app}"; Flags: replacesameversion 
Source: "subfolder"; DestDir: "{app}"; Flags: replacesameversion recursesubdirs 

o specificare una directory di destinazione esplicita:

[Files] 
Source: "blah.exe"; DestDir: "{app}"; Flags:replacesameversion 
Source: "subfolder\*.*"; DestDir: "{app}\subfolder"; Flags:replacesameversion 
3

stavo avendo un problema simile:

ho questa cartella tra le altre cose:

  • \ WorkFolder \ MyEmptyFolder \

voglio sul sistema installato questo:...

  • \ PathToExe \ name.exe
  • \ PathToExe \ MyEmptyFolder \

Se la cartella non è vuota funziona, ma a volte ho bisogno di una cartella vuota.

Sto usando questa linea:

Source: .\WorkFolder\MyEmptyFolder\*; DestDir: {app}\MyEmptyFolder; Flags: ignoreversion recursesubdirs createallsubdirs 

Quello che voglio script per fare è (senza bisogno di riscrivere il copione ogni volta):

  • Se la cartella è vuota, poi su installata la cartella sarà vuota, ma esiste
  • Se la cartella ha file e/o cartelle, quindi sul installato esiste la volontà cartella e avere quel contenuto

Il mio problema è quando è vuoto, lo script termina con un errore che dice che non ci sono file su di esso. Non capisco voglio quella cartella e tutto quello che potrebbe essere in quel momento.

Grazie per le idee, i loro provare e ottenuto la soluzione, qui è:

Prima assicurare verrà creata la cartella (se non ha i file con sezione Files non crearlo):

[Dirs] 
Name: {app}\; Permissions: users-modify 
Name: {group}\; Permissions: users-modify 
Name: {app}\MyEmptyFolder\; Permissions: users-modify 

Modifica accanto la linea sulla sezione File da includere "skipifsourcedoesntexist":

Source: .\WorkFolder\MyEmptyFolder\*; DestDir: {app}\MyEmptyFolder; Flags: ignoreversion recursesubdirs createallsubdirs skipifsourcedoesntexist 

e lo fa quello che voglio: includere tali cartelle e tutto ciò che è su di esso, non importa se la cartella è em pty o no, lo script non terminerà con un errore se è vuoto.

Come funziona?

Facile trucco: se la cartella è vuota, linea di sezione file potrebbe fallire e lo script terminerà con un errore, ma con skipifsourcedoesntexist a evitare che, ma che renderebbe tale cartella non esiste, questo è il motivo per cui aggiungo tale cartella sulla sezione Dir, per assicurarsi che venga sempre creata.

Spero che questo aiuti gli altri a non arrabbiarsi!

+0

la parola chiave skipifsourcedoesntexist ha funzionato per me. Grazie – Vijayaraghavan

0

durante l'esecuzione del file di installazione Inno SETUP .... Fare clic sulla nuova cartella, fare clic sull'URL, quindi fare clic su modifica e assegnare un nome alla sottocartella che si desidera includere nella cartella di installazione.