Quantcast
Channel: biztalkdeployment Forum Rss Feed
Viewing all 1089 articles
Browse latest View live

New Post: To create Application and VDIRs under it in IIS7.5

$
0
0
I have many VDIRs that are clubbed into a application under IIS 7.5. How can I achieve the same automatically using BDTF?
IIS
 DefaultWeb Site
                 ABC Application
                                    VDIR 1
                                    VDIR 2
                                    VDIR 3
                                    VDIR 4
Currently I manually need to create the application in IIS, which then shows the VDIRs created by BTDF under it.
I tried creating the ABC Application the same way as VDIR. It did get created but it was not visisble in IIS. How is it possible to see them without adding the application?


Here's the sample config in BTDF file
<VDirList Include="*">
        <Vdir>ABC</Vdir>
        <Physdir>..\ABC.Services</Physdir>
        <AppPool>ABCAppPool</AppPool>
        <AppPoolNetVersion>v4.0</AppPoolNetVersion>
    </VDirList>
    <VDirList Include="*">
        <Vdir>ABC\VDIR1</Vdir>
         <Physdir>..\ABC.Services\VDIR1</Physdir>
        <AppPool>ABCAppPool</AppPool>
        <AppPoolNetVersion>v4.0</AppPoolNetVersion>
    </VDirList>

New Post: To create Application and VDIRs under it in IIS7.5

$
0
0
I'd suggest that you just bypass the BTDF behavior and do it yourself. I'm assuming you are on BizTalk 2009 or newer.

You can download the MSBuild Extension Pack and add the necessary DLL's to an "ExternalDependencies" folder within your solution. Then in your .btdfproj, you can add one or more <UsingTask> elements to import the task(s) that you need to set up your IIS artifacts, using a relative path from the Deployment project folder to the DLL(s) in the ExternalDependencies folder.

You need to get those DLL's into your MSI, so add something like this to your .btdfproj:
<Target Name="CustomRedist">
    <MakeDir Directories="$(RedistDir)\ExternalDependencies" />

    <!-- Force MSBuild to expand the item spec into physical file specs -->
    <CreateItem Include="..\ExternalDependencies\**\*.*">
      <Output TaskParameter="Include" ItemName="EDSourceGroup" />
    </CreateItem>

    <Copy DestinationFolder="$(RedistDir)\ExternalDependencies\%(RecursiveDir)" SourceFiles="@(EDSourceGroup)"/>
  </Target>
The MSBuild Extension Pack tasks are now available for use within your .btdfproj. Check out their documentation to figure out how and what tasks to use.

Now add an override for the Deployment Framework's DeployVDirs target:
<Target Name="DeployVDirs" Condition="'$(IncludeVirtualDirectories)' == 'true'">
      <!-- Use Extension Pack tasks here -->
  </Target>
Similarly you may want to override the UndeployVdirs target:
<Target Name="UndeployVDirs" DependsOnTargets="SetWinVer;GetSoftwarePaths" Condition="'$(IncludeVirtualDirectories)' == 'true' and '$(SkipUndeploy)' == 'false' and '$(UndeployIISArtifacts)' == 'true'">
      <!-- Use Extension Pack tasks here -->
  </Target>
I haven't tested any of this but it should be close. Hopefully that's enough to get you on your way.

Thanks,
Tom

New Post: Reading Values from Multiple SSO application in binding file

$
0
0
Hi Nikhil,

There was a previous discussion along the same lines. It is not built-in functionality.

Will you have the other SettingsFileGenerator.xml file when you build the MSI, or will it exist only on the server and completely separate from your app deploy?

If it is completely separate, then you'd have to make an assumption of where it is located on the server and code your .btdfproj changes to use that location. You can add a Target element in your .btdfproj with the AfterTargets="ExportSettings" attribute, which will run immediately after your app's settings export. In there, you can call EnvironmentSettingsExporter.exe to export the other file. As for the bindings file, XmlPreprocess.exe itself supports multiple settings XML files with multiple /s parameters, but the Deployment Framework is coded to use only one file and one parameter.

You could override the PreprocessBindings target in your .btdfproj to add the additional /s parameter. You'd have to copy the PreprocessBindings target from BizTalkDeploymentFramework.targets (in the Program Files\MSBuild folder tree) and paste it into your .btdfproj, then modify it.

Anything is possible since you have the flexibility of MSBuild, but it will take some work on your part to make it come together.

Another option is to build the source code from the Environment Settings Manager, which has an option to merge together multiple setting spreadsheet files. It is unreleased but probably works fine.

Thanks,
Tom

New Post: Reading Values from Multiple SSO application in binding file

$
0
0
Hi Tom,
Thanks for your reply. I just want to read the value from a different SSO application which will be deployed only once and can be used by different Biztalk solutions.For example , I will deploy all the SAP user name and passwords in single SSO application say "SAPCredentials". Then I want to read the values from this common application "SAPCredentials" in binding files of different Biztalk solution where I do not have to insert the username and passwords in each SettingsFileGenerator.xml file .Is this possible ?

Also I would like to thank you for this wonderful framework which has made deployment/undeployment very convenient and is easy enough to extend according to different needs. We have started to use this for all our biztalk solution deployments.

With Regards,
Nikhil Rai


New Post: Reading Values from Multiple SSO application in binding file

$
0
0
Hi Nikhil,

First, thank you very much for your positive comments. It's great to hear that kind of feedback!

Second, the easiest way that comes to mind to work off of a deployed SSO app is to automate an export from the deployed SSO app to an XML settings file on disk early in the deployment process (same AfterTargets attribute mentioned in previous reply). You could then do what I described above to pass the app-specific settings file path and the exported-from-SSO settings file path to XmlPreprocess.exe. It would be easy to take the existing source code for SSOSettingsFileImport and add an export option to it that reverses the process and does SSO->disk.

No matter what you do, there will be a fair amount of work and testing involved for you to get it all working for both local and server deployments. That said, it can definitely be done.

Thanks,
Tom

New Post: Physical path for IIS Web Service too long

$
0
0
When I'm trying to copy my web services during the MSI build using the BTDF, I'm getting the following error: "The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters.". Is there anyway to get around this error? A sample of one of my Virtual Directories that is being copied looks like the below:
<VDirList Include="*">
        <Vdir>ESB.AccountsReceivable.Application.Publish.Adjustment</Vdir>
        <Physdir>..\ESB.AccountsReceivable.Application.Publish.Adjustment</Physdir>
        <AppPool>AccountsReceivableAppPool</AppPool>
    </VDirList>

New Post: Physical path for IIS Web Service too long

$
0
0
That has to be a result of your entire source code folder structure being too deep. This is just a side effect of that because to build the MSI the files are copied under obj\Debug/Release\redist, so in addition to the existing structure of your source code, it's also trying to create obj\Release\redist\ESB.AccountsReceivable.Application.Publish.Adjustment and that's pushing it over the limit.

You'll have to reduce the length of your folder names or move the entire solution to a less-nested location in your source code tree.

Thanks,
Tom

New Post: Installation of MSI

$
0
0
Hi Tom,
I am facing an issue in uninstalling the BTDF deployed app. After undeploy from start menu, When I try to uinstall it from control panel, the application folder is not deletedand PortBinding.xml remains there. And sometimes while reinstalling the same app portbinding file is not overwritten which leads to error if there is any change in portbinding master.
Is there any setting need to be done in btdf project file which removes application folder after uninstall.

Secondly, I am facing a strange issue. When I deploy my application using BTDF msi I get following error:

Error details: System.IO.FileNotFoundException: Could not load file or assembly 'Oracle.DataAccess, Version=2.111.7.0, Culture=neutral, PublicKeyToken=89b483f429c47342' or one of its dependencies. The system cannot find the file specified.
File name: 'Oracle.DataAccess, Version=2.111.7.0, Culture=neutral, PublicKeyToken=89b483f429c47342'

BUT, if I deploy it using BizTalk build and msi it runs smoothly.
Please help me with these two issues.

New Post: Installation of MSI

$
0
0
As long as you have UsingMasterBindings set to True in your .btdfproj you're using PortBindingsMaster.xml, so PortBindings.xml is just a throwaway, generated file. It doesn't get deleted by the MSI because the MSI didn't install it. Every time you run Deploy, PortBindings.xml is regenerated, so it doesn't make any difference that it stays there.

Are you using Deployment Framework 5.0 final release? Make sure that you have the same version both on dev workstations AND your build server, if any. You'll have to narrow down for me exactly where that error is coming from in the deployment output and some more context around it. Does it happen while deploying the app with BTDF from Visual Studio?

If you're on BizTalk 2009 or newer, you can also see if you have ToolsVersion="3.5" (4.0 for 2010) in the Project element in your .btdfproj.

Thanks,
Tom

New Post: Use settings spreadsheet to control enable receive location on deploy setting

$
0
0
I'd like to be able to use the settings spreadsheet to change the value of EnableAllReceiveLocationsOnDeploy on a per environment basis, but it doesn't seem to be working.

I created a new setting named EnableReceiveOnDeploy, and set it to False on 2 of my environments and True for the others, then updated the PropsFromEnvSettings item (like so: <PropsFromEnvSettings Include="SsoAppUserGroup;SsoAppAdminGroup;EnableReceiveOnDeploy" />). But when deploying to the environments where the receive locations should not be started, they do get started. I've even checked the setting value by echoing it using a custom deploy target, and it does show as False.

So my question is why isn't EnableAllReceiveLocationsOnDeploy taking the setting from the spreadsheet (EnableReceiveOnDeploy), and what do I need to do to get it to?

Thanks in advance.

New Post: Use settings spreadsheet to control enable receive location on deploy setting

$
0
0
I'm not sure why you changed the property name when you put it into the spreadsheet. Change EnableReceiveOnDeploy to EnableAllReceiveLocationsOnDeploy.

Thanks,
Tom

New Post: Use settings spreadsheet to control enable receive location on deploy setting

$
0
0
Sorry I wasn't clear.

I used a different name because I then used that new property to set the value in the btdfproj file like so:
<EnableAllReceiveLocationsOnDeploy>$(EnableReceiveOnDeploy)</EnableAllReceiveLocationsOnDeploy>
I had assumed that if I used the same name as the existing property that there would be conflicts. Are you saying that I can just directly override the value of EnableAllReceiveLocationsOnDeploy by adding it to the settings spreadsheet?

When I try that it seems to ignore the value in the spreadsheet and just take the value in the btdfproj file.

Thanks for your assistance.

New Post: Use settings spreadsheet to control enable receive location on deploy setting

$
0
0
Correct, you can directly override a property using the actual property name. You'll want to completely remove the property from your .btdfproj and allow it to always be set from the settings spreadsheet.

Thanks,
Tom

New Post: Use settings spreadsheet to control enable receive location on deploy setting

$
0
0
Is there anything else that could override that value? I set the EnableAllReceiveLocationsOnDeploy to false in my settings spreadsheet, the exported settings file correctly showsEnableAllReceiveLocationsOnDeploy as being false, but when deploying the receive locations are still started, and checking the value using a message in the CustomDeployTarget shows EnableAllReceiveLocationsOnDeploy=true.

Thanks for the quick responses.

New Post: Use settings spreadsheet to control enable receive location on deploy setting

$
0
0
OK. Unfortunately this is another example of MSBuild's order of evaluation of properties making things harder. When MSBuild loads the .btdfproj and all of its imported targets files, it evaluates the property values. The only thing that can get ahead of that is explicit property declarations in the .btdfproj, command-line parameters and environment variables.

The problem is that we create properties from the settings spreadsheet AFTER that load process is complete. The underlying property that controls this behavior, ControlBizTalkAppStartOption, has already been evaluated by the time this property is loaded from the settings spreadsheet.

One of the limiting factors on this is MSBuild 2.0 which is the common denominator due to our BizTalk 2006 R2 support. I'd have a bit more flexibility on this with MSBuild 3.5.

One workaround is a bit ugly -- redefine the property at runtime with the CreateProperty task in your .btdfproj. You can try this out. It's not ideal for future upgrades so you may have to undo or change it at some point in the future.
<Target Name="RedefinePropertiesAfterSettingsSpreadsheet" AfterTargets="SetPropertiesFromEnvironmentSettings">
  <CreateProperty Value="StartAll" Condition="'$(EnableAllReceiveLocationsOnDeploy)' == 'true' and '$(StartReferencedApplicationsOnDeploy)' == 'true'">
    <Output TaskParameter="Value" PropertyName="ControlBizTalkAppStartOption" />
  </CreateProperty>
  <CreateProperty Value="StartAllOrchestrations,StartAllSendPortGroups,StartAllSendPorts,DeployAllPolicies,StartReferencedApplications" Condition="'$(EnableAllReceiveLocationsOnDeploy)' == 'false' and '$(StartReferencedApplicationsOnDeploy)' == 'true'">
    <Output TaskParameter="Value" PropertyName="ControlBizTalkAppStartOption" />
  </CreateProperty>
  <CreateProperty Value="StartAllOrchestrations,StartAllSendPortGroups,StartAllSendPorts,DeployAllPolicies,EnableAllReceiveLocations" Condition="'$(EnableAllReceiveLocationsOnDeploy)' == 'true' and '$(StartReferencedApplicationsOnDeploy)' == 'false'">
    <Output TaskParameter="Value" PropertyName="ControlBizTalkAppStartOption" />
  </CreateProperty>
  <CreateProperty Value="StartAllOrchestrations,StartAllSendPortGroups,StartAllSendPorts,DeployAllPolicies" Condition="'$(EnableAllReceiveLocationsOnDeploy)' == 'false' and '$(StartReferencedApplicationsOnDeploy)' == 'false'">
    <Output TaskParameter="Value" PropertyName="ControlBizTalkAppStartOption" />
  </CreateProperty>
</Target>
Thanks,
Tom

New Post: Use settings spreadsheet to control enable receive location on deploy setting

$
0
0
Still no luck.

Every time it still starts the receive locations. Using some Message statements, it looks like the settings spreadsheet property values aren't available at that point in execution, at least they all return blank. The only exception is EnableAllReceiveLocationsOnDeploy which returns true, I assume because it's a BTDF property and true is the default value.

Thanks for your help thus far though.

New Post: Use settings spreadsheet to control enable receive location on deploy setting

$
0
0
Please verify that you updated PropsFromEnvSettings to include EnableAllReceiveLocationsOnDeploy. The AfterTargets causes the new target to run immediately after PropsFromEnvSettings is processed, so if EnableAllReceiveLocationsOnDeploy is in the exported XML file then it should certainly have a value within the new target using <Message Text="EnableAllReceiveLocationsOnDeploy='$(EnableAllReceiveLocationsOnDeploy)'" />. I'm assuming that you are seeing this target execute right after SetPropertiesFromEnvironmentSettings.

Also be sure to remove all property definitions for EnableAllReceiveLocationsOnDeploy. It will always end up with a value of true by default. Are you testing all of this by deploying from Visual Studio?

New Post: Use settings spreadsheet to control enable receive location on deploy setting

$
0
0
That was the problem. I missed adding EnableAllReceiveLocationsOnDeploy to PropsFromEnvSettings. It's working now.

Thanks for all you help! And a not inconsiderable amount of patience.

New Post: Use settings spreadsheet to control enable receive location on deploy setting

$
0
0
OK great, you're welcome! Now that you have the property definition working you could try it without the extra target... but I'm pretty sure that you'll have to keep it.

Thanks,
Tom

New Post: Use settings spreadsheet to control enable receive location on deploy setting

$
0
0
Yes, once it started working I actually tried that, but it didn't work without the additional target.

Still, it's working now, and I'm happy.

Thanks again.
Viewing all 1089 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>