views:

1258

answers:

2

Does anyone know if it is possible to display a prompt to a user/administrator when activating or installing a sharepoint feature?

I am writing a custom webpart and it is connecting to a separate database, I would like to allow the administrator to select or type in a connection string when installing the .wsp file or activating the feature.

I am looking inside the FeatureActivated event and thinking of using the SPWebConfigModification class to actually write the connection string to the web.config files in the farm.

I do not want to hand edit the web.configs or hard code the string into the DLL.

If you have other methods for handling connection strings inside sharepoint I would be interested in them as well.

Thank you, Keith

+1  A: 

Unfortunately there is no way to swap to a screen where you can get user via the feature activation process. Couple of comments for you:

  1. I'm assuming the connection string is going to be different for every installation, so there is no way you can include it directly in the Solution.
  2. I'm assuming that you couldn't programmatically construct this during installation.

Therefore, you need some way to get user input, could of options:

  1. It could be a web part property, though this would mean setting it each and every time the web part was added, and you would need to then maitain those settings individually.
  2. You could build out your own _layouts settings screen (good post: http://community.zevenseas.com/Blogs/Robin/archive/2008/03/17/lcm-creating-custom-application-page-and-using-the-propertybag-more-detailed.aspx), and from there users can maintain the property, storing it in either the Web Property bag, or inside the Web.Config. I try to avoid using the Web.Config where I can, but if you do wish to go this route then MAKE SURE you use the SPWebConfigModification class (Read this great blog: http://www.crsw.com/mark/Lists/Posts/Post.aspx?ID=32)
  3. Finally, a technique I often use is storing configuration information in a SharePoint List. Chris O'Brien has a great framework for that here: http://www.codeplex.com/SPConfigStore

Hope that helps, Daniel

Daniel McPherson
A: 

Sounds good. I will look at these possible solutions.

I do not think #1 will work since I am deploying multiple webparts inside a single solution which all use the same connectionString.

#3 sounds like a very clean solution. I see the config items are cached so it looks like if I need to store a connection string, I will not be hit with a SP lookup each time I need that string.

While searching for a solution I did stumble across another method.
http://www.codeplex.com/CKS/SourceControl/FileView.aspx?itemId=222757&changeSetId=11423 If you dig around their code, I looks like they have created an installer that accepts application specific values, adds the values into a FeatureTemplate.xml file and passes them to the SPFeatureReceiverProperties object in the Reciever.

I was about to start tackling this method, but I think #3 would be better.

Thank you, Keith

Keith Sirmons