views:

1069

answers:

2

Hi,

I'm using the following post build actions in a project, to merge a lib into my application:

IF $(ConfigurationName) == Debug GOTO end
cp $(TargetPath) $(TargetDir)app_unmerged.exe
del $(TargetPath)
"C:\Program Files\Microsoft\ILMerge\ilmerge.exe" /internalize $(TargetDir)MyApp_unmerged.exe $(TargetDir)someLib.dll /out:$(TargetDir)myApp.exe
del $(TargetDir)myApp_unmerged.exe $(TargetDir)someLib.dll
:end

This works fine. Now I have an Installer project and added the Project Output. I would expect that the "Primary Output from " is used, i.e. the exe in /bin/Release . But actually instead of /bin/release/myApp.exe , /obj/release/myApp.exe is used.

Does anyone know if I can change this behavior and use the output in /bin/release for the installer project? Thanks.

A: 

I put the files explicitly, meaning that instead of telling the setup project to use primery content, it put the .exe/.dll file explicitly.
That works pretty well, I get to control which file would enter and the setup project user relative paths so the setup project can be used on other machines.

Shay Erlichmen
While this would work, it comes at the cost of not being able to work with different build configurations, because the file location is different for different configurations. At the moment I have a Debug, Release and EvaluationRelease configuration.
phatoni
I know, we only install release. BTW, most of projects have move to Wix3, you need to work harder at first, but you have control on everything.
Shay Erlichmen
A: 

Seems there is no real solution for this problem, but a workaround exists. I created a ticket on Microsoft connect: https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=428898

Microsofts anwser:

Hi,

In order to execute those post build actions, you will need to put them in a batch file and then add the appropiate command to invoke the batch file in the post build event dialog. I see that there are several instances in the script with references to a number of Visual Studio variables. Since we do not expose those variables as environment variables, you will have to pass them as parameters to the batch file.

I hope that helps!

Candy Chiang Program Manager - Visual Studio

phatoni