Use conditional build events to freshen zip files in Visual Studio


I wanted to update a couple zip files of the VB version of my Blog Crawler (to be posted soon) with the latest and greatest when I built the Release version of a project. I used the XCOPY command with the /D option to update only if changed. Copying to a ZIP file extension actually puts the file into the ZIP file. Is this a feature of Win XP or Winzip? I suspect it’s Win XP Compressed folder behavior. Nice.


 


In VS 2005 (the steps for prior VS versions are slightly different), choose Project->Properties->Compile. Build Events.


I didn’t see a way to make the build events run conditionally depending on configuration: Debug or Release, nor did these configurations have their own separate settings. So, I used the IF command.


 


For the Post-Build Event, I added these lines using the build event editor and the Macros dialog to help build the strings.


 


if $(ConfigurationName)==Release xcopy /df $(ProjectDir)$(TargetName)*.vb $(ProjectDir)$(TargetName)Source.zip


if $(ConfigurationName)==Release xcopy /df $(TargetDir)$(TargetName)$(TargetExt) $(ProjectDir)$(TargetName)Runtime.zip


 


 


Choose: “Run the post build event:“ On Successful Build


 


In the Output Build window, the commands are echoed with the macros expanded, and the results are shown:


BlogCrawl -> d:\dev\vb\BlogCrawl\bin\Release\BlogCrawl.exe


if Release==Release xcopy /df d:\dev\vb\BlogCrawl\BlogCrawl*.vb d:\dev\vb\BlogCrawl\BlogCrawlSource.zip


if Release==Release xcopy /df d:\dev\vb\BlogCrawl\bin\Release\BlogCrawl.exe d:\dev\vb\BlogCrawl\BlogCrawlRuntime.zip


D:\dev\vb\BlogCrawl\BlogCrawl.vb -> D:\dev\vb\BlogCrawl\BlogCrawlSource.zip


1 File(s) copied


D:\dev\vb\BlogCrawl\bin\Release\BlogCrawl.exe -> D:\dev\vb\BlogCrawl\BlogCrawlRuntime.zip


1 File(s) copied


 


 


Of course, when building the Debug version the output is different:


BlogCrawl -> d:\dev\vb\BlogCrawl\bin\Debug\BlogCrawl.exe


if Debug==Release xcopy /df d:\dev\vb\BlogCrawl\BlogCrawl*.vb d:\dev\vb\BlogCrawl\BlogCrawlSource.zip


if Debug==Release xcopy /df d:\dev\vb\BlogCrawl\bin\Debug\BlogCrawl.exe d:\dev\vb\BlogCrawl\BlogCrawlRuntime.zip


 

Comments (40)

  1. Calvin_Hsia says:

    Hold on… i don’t think the XCOPY is doing what i thought it was doing: it’s actually replacing the ZIP file with the source file. Is there a programmatic way to freshen a file in Winzip, sort of like PKZIP -f option?

  2. Calvin_Hsia says:

    Winzip has a command line addon that does the trick:

    if $(ConfigurationName)==Release "c:Program FilesWinZipWZZIP.EXE" -f  $(ProjectDir)$(TargetName)Source.zip

    if $(ConfigurationName)==Release "c:Program FilesWinZipWZZIP.EXE" -f $(ProjectDir)$(TargetName)Runtime.zip

  3. 1mekdzp0cq says:

    f7d3djnhhkepqvdnj <a href = http://www.544516.com/112880.html > cmfe0uivkt </a> [URL=http://www.546484.com/426576.html] rn944ti0t3wn75k8 [/URL] at9clzi3awd5vhr3

  4. – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]

  5. – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]

  6. – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]

  7. – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]

  8. – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]

  9. – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]

  10. – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]

  11. – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]

  12. – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]

  13. – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]

  14. – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]

  15. – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]

  16. – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]

  17. 6teu7b5xkh says:

    z7skqbvq9qpt <a href = http://www.205940.com/404547.html > 9h1s24vzfhbda </a> [URL=http://www.1036079.com/697025.html] ch903n9vgn0azcdq [/URL] 8re2m7g4hv75

  18. – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]

  19. – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]

  20. – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]

  21. – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]

  22. – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]

  23. – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]

  24. – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]

  25. – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]

  26. – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]  – [URL= ]  [/URL]

  27. Roiy Zysman says:

    Have you noticed that you’ve got lots of spam in your comments system ??

  28. Clayton says:

    Anyway, the conditional build event is awesome.  You helped me save so much time on my builds… thanks!

    Do you collect spam?

  29. Sergi Diaz says:

    This has saved me some headaches. I can’t understand why it’s not configuration dependant to begin with, AFAIK, it is in C++ configurations.

    Thanks!