J'ai une structure de répertoire qui doit être ajoutée à l'installateur. J'ai 3 versions différentes de mon script d'installation et l'un d'entre eux étant un script de mise à niveau, nécessite à l'exclusion d'un certain fichier et d'un sous-répertoire dans mon répertoire d'installation.
Je suis donc ce qui suit: Le fichier XML et le répertoire DerbyDB sont déjà présents (puisqu'il s'agit d'une mise à niveau) et donc je ne veux pas les écraser. Encore une fois exécutant l'installateur, je vois clairement que les deux fichiers sont écrasés et que, de plus, la visualisation du setup.exe généré avec 7ZIP montre qu'elles ont été ajoutées. On peut aussi tout simplement être appelé p> alors qu'est-ce qui ne va pas ici? Je souhaite que la NSI aurait une meilleure documentation ou une meilleure répartition des mises en garde à
leurs paramètres de commande / syntaxe. (/ rant) p> p>
7 Réponses :
Je pense que le problème est que vous ne devriez pas spécifier le chemin complet des fichiers pour exclure simplement un motif, c'est donc en d'autres termes, la commande devrait ressembler à ceci:
File /r /x data\someFile.xml /x data\derbydb\runtime\*.* ${InputDir}\*.*
J'ai déjà essayé cela et ça ne marche pas. Il inclut toujours le fichier XML à l'intérieur de l'installateur et écrase ce qui est déjà là.
Le Si je comprends bien correctement, vous souhaitez éviter l'écrasement des fichiers pendant l'installation / la mise à niveau au temps d'exécution em>. p>.
Ainsi, vous pouvez donc utiliser le drapeau / x code> est destiné à exclure certains fichiers à inclure dans l'installateur au moment de la compilation em>. p>.
SETOVEROVERWRITE CODE> compilateur avant la directive code> code>. Recherchez la section manuelle 4.8.2.8 SETOVERWRITE FORT> A A >, la section 4.8.2 montre également une méthode pour gérer Setoverwrite code> dynamiquement. P>
Mais le but est qu'il ne les exclurait pas même à la compilation. Si j'ouvre le fichier de configuration généré, je peux voir qu'il contient les fichiers que je voulais exclure.
@Rex: Eh bien, la documentation ne semble pas indiquer explicitement que les chemins de répertoire sont pris en charge pour / x code> comme ils sont pour / r code> ... il dit: / x fichier | wildcard code>
Mais cela ne fonctionne même pas pour les fichiers, que vous utilisiez une faune ou fournissez un chemin exact.
@Rex: Le problème est autre chose, car j'utilise / x code> dans mes propres installateurs, par exemple. Fichier / NonFatal / R / X .svn / x * .plez "$ {instasrcfiles} \ Excel" code> (dans ce cas.svn est un dossier et * .PL sont des fichiers). Êtes-vous sûr que le $ {INPUTDIR} code> est correct?
Je suppose que c'est, car il est capable de traiter $ {INPUTDIR} *. * Correctement. J'ai également essayé de ne pas spécifier d'entrée Dir dans le / x, c'est-à-dire à l'aide de Data \ File.xml ou de données * .xml et ni de travail.
@Rex: Je remarque que j'ajoute que tout ajout de son nom et sans spécifier *. * Code>. Matybe que c'est votre mise en garde? Je vais essayer de regarder SNS Source pour voir si *. * Code> n'écrase pas le paramètre / x code>. Je suis d'accord avec vous que la documentation du SNS est perfectible: p
Je trouve que n'exclut pas foo.img au moment de la compilation - il est inclus avec les autres fichiers .IMG. P> P>
var pname
!define pname "Salt v1.2.9.3c"
File /r /x small-games.info.url "E:\Games\${pname}\*.*"
include E:\Games\${pname}*.*, but exclude small-games.info.url in folders
Il me semble qu'il y a un bug qui est que si vous faites:
File /r "C:\folder a\subfolder b" File /r /x "subfolder b" "C:\folder b"
finalement fissuré après avoir tiré certaines de mes cheveux ...
exclure d'abord l'ensemble du sous-répertoire sous le puis excluez les fichiers XML ... p> *. * code> p> SetOutPath "$INSTDIR"
File /r /x "subfolder" "C:\App\bin\*.*"
SetOutPath "$INSTDIR\subfolder"
File /r /x "*.xml" "C:\App\bin\subfolder\*.*"
SetOutPath "$INSTDIR"
J'aimerais que je puisse marquer cela comme la réponse, mais je n'ai pas encore travaillé sur la SNI depuis, je ne peux donc pas confirmer.