문제

FART 기능을 만들었고 업그레이드했습니다.

문서에 따르면, 업그레이드 - SPFEATURE -Scope 팜은 업그레이드가 필요한 모든 기능을 업그레이드합니다. 기능 업그레이드 (파트 5) - PowerShell 사용 업그레이드기능 (이 기사)

나는 단지 Ugprade 하나를 원하고 PowerShell과 함께 있어야합니다.

모든 아이디어?

도움이 되었습니까?

해결책

im presuming that the feature is in a wsp so you should be able to do this:

Update-SPSolution –Identity YourSolutionName.wsp –LiteralPath “C:\YourSolutionName.wsp” –GacDeployment

http://technet.microsoft.com/en-us/library/ff607724.aspx

EDIT

forgot to mention you need to change the version number ;) for a more finer detail you can follow this:

1.Open the Feature Designer for Feature2. In the Properties pane, set the version number to 1.0.0.0. Where no version number is specified, a default of 0.0.0.0 is assumed. Version numbers must contain four components.

2.From the Build menu, select Deploy. This will deploy our version 1 solution to the farm.

3.In the Feature Designer, click the Manifest button at the bottom of the page. Expand the Edit Options section to display the Manifest Template. Replace the template XML with the following:

  <?xml version="1.0" encoding="utf-8" ?>
  <Feature xmlns="http://schemas.microsoft.com/sharepoint/">
  <UpgradeActions>
  <VersionRange>
  <CustomUpgradeAction Name="MyUpgrade"/>
  </VersionRange>
  </UpgradeActions>
  </Feature>

By attaching this XML to the feature definition, we’re defining the steps that should be taken to upgrade existing features. The CustomUpgradeAction element specifies that we’re using a feature receiver to perform the upgrade programmatically. In this example, we haven’t specified a version range, so this upgrade action will apply for all versions. If we needed to include different upgrade actions for different versions we could add this:

  <Feature xmlns="http://schemas.microsoft.com/sharepoint/">
    <UpgradeActions>
      <VersionRange BeginVersion="1.0.0.0" EndVersion="2.0.0.0">
        <CustomUpgradeAction Name="V2Upgrade"/>
      </VersionRange>
      <VersionRange BeginVersion="2.0.0.0" EndVersion="3.0.0.0">
        <CustomUpgradeAction Name="V3Upgrade"/>
      </VersionRange>
    </UpgradeActions>
  </Feature>

4.In the Properties pane, change the Version number for Feature 2 to 2.0.0.0.

Note

Within the Properties pane are options to set the Upgrade Actions Receiver Assembly and Class properties. These properties allow a feature to use a separate assembly for handling standard feature events such as Activate and Deactivate and a separate assembly for handling upgrade events. This facility is useful for retrofitting upgrade capabilities to a feature if the existing receiver assembly isn’t available or can’t be altered for some reason.

5.For the sake of simplicity, we’ll implement our upgrade code in our existing feature receiver. In the Feature2.EventReceiver.cs file, add the following code:

Code View: Scroll / Show All

public override void FeatureUpgrading(
                             SPFeatureReceiverProperties properties,
                             string upgradeActionName,
                             IDictionary<string, string> parameters)
    {
      switch (upgradeActionName)
      {
        case "MyUpgrade":
          if (properties.Feature.Parent is SPWeb)
          {
            SPWeb web = properties.Feature.Parent as SPWeb;
            using (Stream s = properties.Definition.GetFile(
                                              "FirstElement\\MyConfig.xml"))
            {
              using (XmlReader rdr = XmlReader.Create(s))
              {
                rdr.ReadToDescendant("List");
                do
                {
                  string listName = rdr.GetAttribute("name").ToString();
                  SPList myList = web.Lists.TryGetList(listName);

                  if (myList != null)
                  {
                   myList.Description += "- Updated";

                    myList.Update();
                  }
                } while (rdr.ReadToNextSibling("List"));
              }
            }
          }
           break;
         default:
           break;
       }
    }
 }

Notice the use of a switch block in this code snippet to handle the upgradeActionName. This value is specified in the Name attribute of the CustomUpgradeAction element in the feature manifest.

6.If we deploy our updated feature using Visual Studio, our existing version will be removed first, which will make it impossible to test our upgrade process. Instead, we’ll package our solution using Visual Studio and deploy it manually. From the Build menu, select Package.

7.To test our upgrade process quickly, we can use PowerShell to upgrade a single feature. Choose Start | SharePoint 2010 Management Shell, and then enter the following script:

  update-spsolution -identity Example 19.wsp -literalpath c:\code\example19\→
  example19\bin\debug\example19.wsp -gacdeployment

Note This command should be entered as a single line.

8.This command will upgrade the Example19 solution package to the latest version. We can confirm this by entering the following script:

$featureName="Example19_feature2"
$latestVersion=(get-spfeature|where {$_.DisplayName -eq $featureName}).Version
$web=get-spweb http://<your Server Name>/example19
$theFeature=$web.Features|Where {$_.Definition.DisplayName -eq $featureName}
$currentVersion=theFeature.Version
write-host "Current Version: $currentVersion, Latest Version: $latestVersion"

If all is well, the resultant output should be this:

Current Version: 1.0.0.0, Latest Version: 2.0.0.0

9.We can upgrade a single feature using the following script:

$web=get-spweb http://<your Server Name>/example19
$theFeature=$web.Features|Where {$_.Definition.DisplayName -eq $featureName}
$theFeature.Upgrade($false)

10.Any errors that occur as part of the upgrade process will be shown in the PowerShell window. However, we can confirm that our upgrade was successful by issuing the following command:

  write-host ($theFeature).Version

The new version number should be reported as 2.0.0.0.

http://allcomputers.us/windows_server/sharepoint-2010---packaging-and-deployment-model---features-(part-3)---upgrading-features.aspx

다른 팁

원하는 SPFeature 객체에서 업그레이드 방법을 호출 할 수 있습니다. 기능 범위에 따라 SPFeature 객체를 가져 오는 데 다른 코드가 필요할 수 있습니다.

사이트 범위 기능의 예 :

$id = new-object System.Guid("<feature_id_here>")
$site = Get-SPSite "<site_url_here>"
$feature = $site.Features[$id]
$feature.Upgrade($false)
.

Ali Jafer는 매우 포괄적 인 대답을 주었지만 내 경우에는 기능 이름을 사용하는 이러한 명령이 작동하지 않습니다.나는 기능 ID를 사용했고 여기에 PowerShell 명령이 어떻게 생겼는지입니다.

Update-SPSolution –Identity "Example.wsp" –LiteralPath "E:\Visual Studio 2015\Projects\Example.wsp" –GacDeployment  


$featureId = new-object System.Guid("FeatureID here")  
$latestVersion=(get-spfeature|where {$_.Id -eq $featureId}).Version 
$web=get-spweb "URL"  
$theFeature=$web.Features|Where {$_.Definition.Id -eq $featureId} 
$currentVersion=$theFeature.Version 
write-host "Current Version: $currentVersion, Latest Version: $latestVersion" 



$web=get-spweb "URL"  
$theFeature=$web.Features|Where {$_.Definition.Id -eq $featureId} 
$theFeature.Upgrade($false) 
.

PowerShell을 사용하여 SPFeature.Upgrade() cmdlet을 실행 한 후 Update-SPSolution를 실행하려면 세션을 닫고 SPFeature.Upgrade()를 실행하기 전에 PowerShell (PowerGui 등)의 새 인스턴스를 엽니 다.그렇게하지 않으면 업그레이드가없는 것처럼 기능이 나타나게됩니다.웹 범위 기능을 업그레이드 할 때 경험이 있습니다 (따라서 웹 범위에만 국한 될 수 있으며 사이트 범위에 대한 문제가 아닌) 동일한 경험 여기 여기서

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 sharepoint.stackexchange
scroll top