Most developers deploy their BizTalk 2006+ applications into other environments like Test and Production using and MSI file that they generate using BizTalk Administrator.
The process of creating an MSI is fast and easy - it's also very thorough in that the process enumerates dependencies while it creates the MSI and ensures that the dependencies are present when the MSI runs.
The problem is that the MSI you generate on your development system could include dependencies on your system in folders and drives that may not be present on the target system. Common dependencies are maps and schemas - it's possible to end up with errors when trying to run an MSI that folders and drives don't exist!
Fortunately, there is a relatively straight-forward fix:
- In BizTalk Administrator, under your Application's Resources folder, review the values under the Source and Destination Location columns - you'll see folders and drive letters that exist on your system.
- For each item in the list, right-click and select Modify
- Change the "Destination location" - the path part of the location to %BTAD_InstallDir% (include the % symbols and separate the last % from the file name (probably a DLL) with a back-slash character ( \ ). So, it might look similar to this when you are finished: %BTAD_InstallDir%\MyStuff.DLL
- Export your application
- Run the MSI on your target systems
It turns out that %BTAD_InstallDir% is the name of the folder that the user selects when she runs your MSI file - oddly enough, the installer does not use the folder for files in the Resources folder of the BizTalk application! Although %BTAD_InstallDir% looks like an environment variable, you won't find it. The pseudo-environment variable exists only within the MSI's runtime environment, so there's not much you can do to manipulate it during development.
I hope this saves you some time.