Microsoft visual studio 2008 setup project - visual-studio

I have a bunch of files and need to build MSI file /setup.exe file that put them on specific folder and run one file of them that install a win32 service is that possible with micorosoft visual studio 2008 setp project ?
suppossing i have the following files:
file1,
file2
file3
file4
I need to put file1,file,file3 under c:\documents and setting\all users\my directory
and run file4 which install a win32 service while running the setup or the msi is that possilbe ?

Yes, that's all possible. Create a new deployment project and in the File View add the files from your project in the correct places. You may need to mark your files as Content = True in the file properties (from the solution explorer) then I think they'll appear in the dropdown in the file view.
For a windows service, the executable needs to be able to install itself as a service from the command line anyway, so installing it from the MSI is easy as you just need a custom step to call your .exe.

Yes. You can do this with a standard Setup Project. To add custom files and folders, check this link: http://msdn.microsoft.com/en-us/library/x56s4w8x.aspx
For the base "All Users" folder, you will need to specify a Special Folder, specifically the CommonAppDataFolder.
Specifying how to install a Windows Service involves using a special component. I'm not too happy with it, I much prefer Wix.

Related

Setup project: Using dynamic path for adding a file

Summary
Does SourcePath property of a file that is added to a setup project support variables? If yes, How can I ask it to pick the file from the folder corresponding to the current build configuration?
Detail
I'm deploying my VSTO add-in using MSI installer, which requires me to include MyAddin.vsto and MyAddin.dll.manifest files to the application folder. I include them manually using Add File command. The problem however is that if I change build configuration from Debug to Release and build my installer, it will still pick those two files from the Debug folder (becuz their paths are hard-coded in the setup project), potentially bundling an old version of the files in the installer. Therefore I want to use some macro/variable that would evaluate to the current build configuration.
The setup project file (.vdproj) adds files like this:
"SourcePath" = "8:..\\MyAddin\\obj\\Release\\MyAddin.vsto"
The path is relative, but the build configuration is hard-coded. I'm looking forward to something like:
"SourcePath" = "8:..\\MyAddin\\obj\\[$BUILD_CONFIG]\\MyAddin.vsto"
I'm using VS2015 community and .NET Framework 4.5.

Why am I getting an Error 1309 : Error reading from file..... when attempting to use a .msi generated by InstallShield in VS 2013?

Error 1309 : Error reading from file.....
I am using VS2013 - with latest download of InstallShield Limited Edition
From VS2013 -> Solution Explorer -> Installshield Project -> Uninstall/Install: everything is fine.
If I run the installer file (right click .msi file->uninstall/install) from the directory it is compiled in everything is fine.
If I copy the .msi file anywhere else I get the above error UNLESS I copy the 'program files' directory that is also created in the DISK1 folder of installshield project.
I thought this was all supposed to be packaged into 1 file (isn't that the purpose of InstallShield?)
This question was originally posted on the flexera forum, but no one seems to be responding to questions on that forum:
https://community.flexerasoftware.com/showthread.php?214260-Error-1309-Error-reading-from-file
Any thoughts on how to fix this?
Thanks,
JB
I have solved it. When you have your InstallShield LE project ready to Build, Go into Build, Configuration Manager and change the build to SingleImage. Next do a Build. When you navigate the folders to where the CD_ROM folder is, you will see a new folder called SingleImage. As you go through that you will find the single MSI file that contains all folders. No more issues with Error 1309.
Hope that helps.
You should also ensure that the 254 character limit for the files' local url is not exceeded

ClickOnce : deploy files to different location

Using ClickOnce, is it possible to include a file (resource, dll, image, whatever) to be copied to a different location and NOT the app folder?
What I am trying to achieve exactly is to install Microsoft.Web.Publishing.Tasks.dll + Microsoft.Web.XmlTransform.dll and their .targets to C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\Web so those msbuild tasks can be used on workstations that do not have Visual Studio installed.
It was so easy using a Setup Project before VS 2013!!
I repeat: I do NOT want those files to be installed in the app folder (so please don't tell me to set the option Copy to Output = Always" on project files).
Thanks.
No. You can't do it with ClickOnce.
Either deploy the files and write code to copy files when your app starts. Or use some other deployment option, like msi.

Including a batch file with VSIX

I'm trying to create a Visual Studio plugin, it's a menu item that executes batch files. I have no idea how to include the batch files (or any other additional files) with the VSIX when publishing so that they are available to all users that install the extension.
In solution explorer right click on the batch file (in this case I called it BatchFile.cmd) and choose 'Properties'
In the properties window change:
Build Action: Content
Include in VSIX: True
When the solution is built in release mode it creates a VSIX file in the bin/Release folder. This is the package and it contains all the assets required. When the package is installed on another machine, the batch file is included in the install location and can be referenced using:
Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "BatchFile.cmd"
You can just include the batch file as content in your project, and use GetAssembly() to find the location of your adin dll at runtime

What's the easiest way to install 100s of files in a Visual Studio setup project

I have a standard c# application that acts as a GUI front end for a an "R" statistics engine. "R" consists of approx 600 files in approx 50 different folders and can be "installed" on a machine through xcopy deployment.
I would like to package up both the R engine and my c# gui into one setup.exe so that the user doesn't need to go and install R first and then my c# application seperately.
I know that I can produce a setup project and then add in the R files one by one but adding all 600 files will be very tedious!
Is there an easier way of doing what I want? Can I add the single R folder and automatically add the subfolders and files to save me adding them in one by one? Or maybe do an unzip procedure in my setup project which will unzip the R engine in one go?
You can simply drag/drop the folder in Windows Explorer into the File System view of your Installer vdproj. All the files and folders in the hierarchy will be added to your setup project.
Tip: If the folders are in SVN or similar source control, delete all the hidden folders before you do this! If you have PowerShell, check out
get-childitem . -include _svn -force -recurse | foreach ($_) {remove-item -recurse -force $_.fullname}
Or you can always use Windows Search to find all hidden directories in the hierarchy and delete them from the Results Window.
I couldn't work out the project file so what I did in the end was to zip up all the files I wanted to deploy, add the zip file to the application and create a custom Installer class to unzip them (using CSharp ziplib)
I think Badjer is most of the way there.
If your 600 files are part of a project and the "Build action" for each of these is set as content you can add all of these by simply:
Going to the setup project
Selecting Add > Project Output
Selecting the project the files belong to from the drop down
Selecting the "Content Files" option from the list below
Clicking OK.
You can check the files will be added to the appropriate place by going to View > File System on the setup project and checking that the content files output is being added to the correct folder.
The files will be added to the install directory in the same hierarchy as they are specified in the project they belong to.
Have a look at the project file. I believe is text based. You might be able to insert the file paths directly there with some copy-paste-replace.
One thing you could try is adding the R files as content in the C# project - then the setup project can just copy them over for you (make sure you configure the setup file to copy content files from your project, not just the primary output).
You can either add the R folders into the project manually, or set up a script to modify the .csproj file (it's just an XML file) - content items are represented by these nodes:
<Content Include="myfile" />

Resources