Копировать файлы в NSIS - PullRequest
       7

Копировать файлы в NSIS

4 голосов
/ 14 сентября 2010

Я использую следующую команду для копирования файлов.

После установки выходного пути ...

File "Documents\*"

Это действие работает без нареканий. Нет проблем с копированием файлов в каталоге Documents до ...

если в каталоге есть копия существующего файла (с другим именем), копируется только первый экземпляр файла независимо от имени.

Как мне сделать так, чтобы он копировал ВСЕ файлы независимо от того, являются ли они копиями других файлов?

Исправление / лучшее объяснение (возможно)

Я прошу прощения за путаницу. Позвольте мне попытаться переформулировать проблему. Файлы, извлекаемые с помощью команды FILE, являются проблемой здесь. Файлы состоят из оригинальных файлов и копий одних и тех же файлов (только с другим именем).

пример: MyDocument.txt и copyOfMyDocument.txt и т. Д.

Когда применяется команда File, для извлечения файлов в текущий путь вывода извлекается только первый экземпляр файла (либо копия, либо оригинал ... но не оба). Опять же, я прошу прощения за путаницу, но мне впервые приходится работать с NSIS. Мне нужно извлечь ВСЕ файлы.

Ответы [ 2 ]

3 голосов
/ 18 ноября 2010

Самый простой способ сделать это - поместить его в другой каталог, который вы создали.Затем, если вам нужно беспокоиться о переименовании (поскольку комментаторы отметили, что ваш вопрос не имеет особого смысла), вы можете атаковать его файл за файлом.

# Extract the files to a directory which can't exist beforehand
CreateDirectory $PLUGINSDIR\extracting
SetOutPath $PLUGINSDIR\extracting
File Documents\*

# Now go through file by file
FindFirst $0 $1 $OUTDIR\*
${While} $1 != ""
    ${If} ${FileExists} $DOCUMENTS\$1
        # This still isn't infallible, of course.
        Rename $DOCUMENTS\$1 $DOCUMENTS\$1.local-backup
    ${EndIf}
    Rename $OUTDIR\$1 $DOCUMENTS\$1
    FindNext $0 $1
${Loop}
FindClose $0
SetOutPath $INSTDIR # Or somewhere else
RMDir $PLUGINSDIR\extracting

(обратите внимание, что используется LogicLib.)

Это не очень аккуратный способ сделать это, и если вы можете избежать этого, сделайте.

1 голос
/ 12 января 2011

Я думал, что понял, о чем вы, пока не начал читать ответы;я пойду с моей первоначальной интерпретацией: учитывая каталог с именем «Documents», с кучей файлов в нем (как они называются, и их содержимое не должно иметь значения), вам нужен установщик, который скопирует файлы в некоторыевыходной каталог.Я создал тестовый установщик для этого сценария здесь , и он работает для меня.Чего мне не хватает в том, что вы ищете?

...