Я создал установочный файл msi
, который включает несколько файлов в папке «Образец», которые следует скопировать в папку temp. Кто-нибудь подскажет, как это сделать?
Скопируйте файл из места установки в другое место в wix при установке
Ответы (2)
Что-то вроде этого:
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="MyVendor" Name="MyVendor">
<Directory Id="INSTALLDIR" Name="MyDir">
<Component Id="MyFileId" Guid="...G1...">
<File Id="MyFileId" Name="MyFile" Source="...blabla...\MyFile" KeyPath="yes" >
</File>
</Component>
<DirectoryRef Id="TARGETDIR">
<Component Id="MyFileCopyId" Guid="...G2...">
<RemoveFile Id="MyFileRemoveId" Name="MyFile" On="install" Directory="MyCopyDir" />
<CopyFile Id="MyFileCopyId" FileId="MyFileId" DestinationDirectory="MyCopyDir" />
</Component>
<Feature Id="MyFeature" ... >
<ComponentRef Id="MyFileId" />
<ComponentRef Id="MyFileCopyId" />
Важным элементом Xml является CopyFile. Вам нужно создать новый компонент, который является копией первого (с другими идентификаторами, идентификаторами, ..., конечно). Оба компонента должны быть объявлены в функции.
person
Simon Mourier
schedule
06.12.2010
привет, спасибо за ответ, у меня есть некоторые сомнения 1). Каким будет значение Guid. 2). Если я установлю DestinationDirectory =% TEMP%, тогда мой файл будет скопирован во временную папку. 3). Могу ли я установить атрибут Source = myfile для Файловый элемент.
- person Sukhjeevan; 06.12.2010
Guid2 — это просто новый гид. Ни к чему не имеет отношения, но нужен для wix/msi. Ваша временная папка будет MyCopyDir в образце. Источник — это, по сути, локальный путь, поэтому вы можете указать все, что хотите, но эта часть уже должна быть настроена в вашем файле wix. Это не связано с копией.
- person Simon Mourier; 06.12.2010
Вы имеете в виду, что если я установлю DestinationDirectory=MyCopyDir, то мой файл будет скопирован в папку ~[user]/LOCALS~1\Temp. Мне больше ничего не нужно делать.
- person Sukhjeevan; 06.12.2010
Также я хочу скопировать все файлы в папку Sample, поэтому в этом случае будет значение свойства Source элемента File
- person Sukhjeevan; 06.12.2010
@Sukhi: вставьте CopyFile в File, и вы никогда не догадаетесь, что вам нужно указать в качестве источника
- person Yan Sklyarenko; 06.12.2010
Я не могу этого сделать, потому что в папке Sample есть 100 файлов. Нужно ли устанавливать Source=*.* для копирования всех файлов во временную папку.
- person Sukhjeevan; 06.12.2010
Элемент CopyFile — ваш друг. Вы можете вложить его в исходный элемент File несколько раз, в зависимости от того, как много раз вам нужно скопировать его. Поместите правильные папки назначения и позвольте установщику Windows сделать все остальное.
person
Yan Sklyarenko
schedule
06.12.2010
Я не могу этого сделать, потому что в папке Sample более 100 файлов. Нужно ли устанавливать Source=*.* для копирования всех файлов во временную папку или что-то в этом роде.
- person Sukhjeevan; 06.12.2010
Да, вы можете указать подстановочный знак и скопировать все файлы в папку в место назначения. И это, вероятно, будет довольно элегантно, так как для всей папки требуется один элемент CopyFile. Однако, если вы создадите файл *.wxs для этой папки, вы можете рассмотреть возможность применения XSL-преобразования к выходным данным, чтобы добавить CopyFile к каждому собранному файлу. Но это альтернатива, если предыдущий способ работает для вас, придерживайтесь его :)
- person Yan Sklyarenko; 06.12.2010