How to copy directories/files in installed folder using wix - 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.

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.

WiX Managed Bootstrapper “Failed to resolve source for file” for .cab files

I have an .msi package with 5 external .cab files in my bootstrapper application(not being compressed in my bootstrapper application, external) which installs well locally, and has DownloadUrl attribute for web-based installation.
But, when I execute my bootstrapper application without its .msi file and .cab files(not accompanied by them in the same folder, i.e., executed solely in a separate folder), it cannot download the .cab files although it can download the .msi file(log files says that).
So, I added <Payload> elements for each .cab file under <MsiPackage> element with DownloadUrl attributes set to their individual URL and Compressed attibutes set to no. And then, when I execute my boostrapper application solely, it downloads all its files well and installs well.
Should I manage all the <Payload> elements for .cab files in <MsiPakcage> manually? No automatic download for .cab files?
I had written only .msi file path in DownloadUrl attribute of MsiPackage element. But in the source code of Wix Setup BA there was a substitution '{2}' meaning the file name of payload. I followed that and it solved the problem.
For more info see this link.

copy files from drop location to different file location

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