copy files from drop location to different file location - msbuild

I have build definition for a project which outputs some MSI files and zip files with assembly version folder name to Drop folder. eg: 1.0.0.0 folder contains MSI and zip files.
Now my requirement at final step is to copy only MSI files from above drop folder and copy to different file location as part of build process.
How can i achieve this using build process template or post build script?
Thanks

Related

Wix installer, make directory or files optional

I am using Wix for our installer,
I am using and to copy or include files in the directory, however, I want a certain files or directory to be optional and only copy if the directory and files exists during compilation of the installer.

Wix custom action to unzip a file

I've a zipped file which contains around 1000+ files.
I was able to bundle the zip file into msi.
But I would like to know how to unzip that file using any custom action
We had this requirement to unzip a file and place or the sub directories and files inside it at a particular location after installation.
Solution:
1. Create a exe (console app) that will unzip the file and place required files at required location.
2. Ship this exe with installer
3. Make this exe run (with execute sequence) while the application is installs.
This may add overhead, but this works.

Visual Studio ASP.NET Web API Precompiled files placed in a different folder with TFS

I have an asp.net web api project whose output needs to be packaged in a setup project using wix.
I would like to precompile the site. The problem is that the precompilation process generates variable file names (ie. *.compiled files in particular).
I also would like to build the setup in a TFS build.
It seems that my only option is to generate a .wxs file wihtin the prebuild step of the wix project.
The .wxs files source paths are using $(var._My_Web_Project_.TargetDir). This seems to be translated to a Sources based directory.
I'm using paraffin to do that already and it works perfectly fine when building the solution with visual studio.
When building the solution through a TFS build, the .compiled files are copied to a Binaries folder, whereas all the other related web site files are copied to a Sources based directory.
The build errors are like the following :
The system cannot find the file 'd:\BuildAgents\___basedir___\Binaries\___web_project_dir\_PublishedWebSites\___site___\bin\textsample.cshtml.c6fb271c.compiled'.
The file is indeed in the Sources directory.
'd:\BuildAgents\___basedir___\Sources\___web_project_dir\_PublishedWebSites\___site___\bin\textsample.cshtml.c6fb271c.compiled'
I think I somehow need to redefine the aspnet_compiler output or something like this, but can't figure out how to do that.
The msbuild command line arguments are the follwing:
/p:GenerateProjectSpecificOutputFolder=true /p:VisualStudioVersion=14.0 /p:DeployOnBuild=true /p:PublishProfile=local /p:CleanWebProjectOutputDir=False /verbosity:d
EDIT 1: I'm using XAML build.
Any help appreciated.
EDIT 2:
With the new task based build, it works as is (no need to use an additional Copy Files task).
The aspnet_compiler output the .compiled files in the correct folder :
C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_compiler.exe -v / -p D:\BuildAgents\vNext\_work\1\s\Softs\__Solution__\__Web_Project\obj\Release\AspnetCompileMerge\Source -c D:\BuildAgents\vNext\_work\1\s\Softs\__Solution__\__Web_Project__\obj\Release\AspnetCompileMerge\TempBuildDir
In the new tasks based build system, it's easy to copy files from a source folder to a target folder with Copy Files task.
Source Folder: Folder that contains the files you want to copy.
Contents: Specify minimatch pattern filters (one on each line) that you want to apply to the list of files to be copied.
Target Folder: Folder where the files will be copied. In most cases you specify this folder using a variable.

How to copy directories/files in installed folder using wix

I have deployment files which are dynamic in nature. Sometimes I have 4 files and sometimes 5 files. I need to just copy those files in installed folder.
How to include those files in msi?
How to copy it in installed folder?
You include files in your msi by harvesting them with wix tool harvest tool set
Once you have proper msi file , you install it and that will copy your harvested files to the desired dir.

How can I filter which files are included in a workspace using MSBuild?

It seems that MsBuild creates a folder called, "BuildType" on the build server and this folder is where the .proj file is copied. In source control I have several files that are in the same folder as the build project file. I have a workspace mapped to this location.
I would like to be able to specify explicitly which files from this workspace location should be copied to the build machine. Is this possible?
Thanks!
You cannot do this on file level but if you organize your build type folder with subfolders you can cloak the folders that you want to exclude.