Needs to be in the part of the MSDeploy package that will actually be installed.
Trying to test the runCommand provider.  Not working:

[13:54:312]Source runCommand (set) does not match destination (set) differing in attributes (isSource). Update pending.
[13:54:315]Updating runCommand (set).
	Details:
	operationType: Update
	providerName: runCommand
	path: set
EXCEPTION: System.IO.FileNotFoundException: Could not find file '\\?\C:\Users\rpatterson\Documents\My Web Sites\IISFCGISampleApp'.
File name: '\\?\C:\Users\rpatterson\Documents\My Web Sites\IISFCGISampleApp'
   at Microsoft.Web.Deployment.ProcessInfoWrapper.Resume()
   at Microsoft.Web.Deployment.CommandLineProcessExecutor.Execute(ProcessKind kind)
   at Microsoft.Web.Deployment.RunCommandProvider.PerformOperation(DeploymentObject source, Boolean whatIf)
   at Microsoft.Web.Deployment.RunCommandProvider.Update(DeploymentObject source, Boolean whatIf)
   at Microsoft.Web.Deployment.DeploymentObject.Update(DeploymentObject source, DeploymentSyncContext syncContext)
   at Microsoft.Web.Deployment.DeploymentSyncContext.HandleUpdate(DeploymentObject destObject, DeploymentObject sourceObject)
   at Microsoft.Web.Deployment.DeploymentSyncContext.SyncChildrenOrder(DeploymentObject dest, DeploymentObject source)
   at Microsoft.Web.Deployment.DeploymentSyncContext.SyncChildren(DeploymentObject dest, DeploymentObject source)
   at Microsoft.Web.Deployment.DeploymentSyncContext.ProcessSync(DeploymentObject destinationObject, DeploymentObject sourceObject)
   at Microsoft.Web.Deployment.DeploymentObject.SyncToInternal(DeploymentObject destObject, DeploymentSyncOptions syncOptions, PayloadTable payloadTable, ContentRootTable contentRootTable, Nullable`1 syncPassId)
   at Microsoft.Web.Deployment.DeploymentObject.SyncTo(DeploymentProviderOptions providerOptions, DeploymentBaseOptions baseOptions, DeploymentSyncOptions syncOptions)
   at Microsoft.Web.Deployment.DeploymentObject.SyncTo(String provider, String path, DeploymentBaseOptions baseOptions, DeploymentSyncOptions syncOptions)
   at Microsoft.Web.Deployment.DeploymentObject.SyncTo(DeploymentWellKnownProvider provider, String path, DeploymentBaseOptions baseOptions, DeploymentSyncOptions syncOptions)
   at Microsoft.Web.Deployment.DeploymentObject.SyncTo(DeploymentBaseOptions baseOptions, DeploymentSyncOptions syncOptions)
   at Microsoft.Web.PlatformInstaller.MSDeployProxy.Install(InstallerContext context, RemoteCredentials remoteCredentials)
Try testing with msdeploy.exe directly, still not working:

Verbose: Performing synchronization pass #1.
Verbose: Parameter entry 'ApplicationPath/1' is applicable to 'iisApp/IISFCGISampleApp' because of its scope.
Verbose: Source createApp (IISFCGISampleApp) does not match destination (Default Web Site/IISFCGISampleApp) differing in attributes (isDest,managedRuntimeVersion['',''],enable32BitAppOnWin64['',''],managedPipelineMode['','']). Update pending.
Info: Adding createApp (Default Web Site/IISFCGISampleApp).
Microsoft.Web.Deployment.DeploymentException: The metabase key '/lm/w3svc' could not be found. ---> Microsoft.Web.Deployment.DeploymentException: Unable to access the IIS configuration system. Please make sure you have IIS 7 (or later) installed. ---> System.Runtime.InteropServices.COMException (0x80040154): Retrieving the COM class factory for component with CLSID {2B72133B-3F5B-4602-8952-803546CE3344} failed due to the following error: 80040154.
   at Microsoft.Web.Deployment.SafeAppHostAdminManager..ctor()
   at Microsoft.Web.Deployment.AdminManagerWrapper..ctor(DeploymentWebServerConfigurationSystemInfo webServerConfigurationSystemInfo)
   --- End of inner exception stack trace ---
   at Microsoft.Web.Deployment.AdminManagerWrapper..ctor(DeploymentWebServerConfigurationSystemInfo webServerConfigurationSystemInfo)
   at Microsoft.Web.Deployment.AdminManagerWrapper.GetWritableAdminManagerWrapper(DeploymentBaseContext baseContext, String suffix)
   at Microsoft.Web.Deployment.MetaKeyCommitItem..ctor(DeploymentBaseContext baseContext, Boolean useInternalAbo, Boolean isReadOnly)
   at Microsoft.Web.Deployment.MetaKeyCommitItem.GetInstance(DeploymentBaseContext baseContext, Boolean useInternalAbo, Boolean isReadOnly)
   at Microsoft.Web.Deployment.MetaKeyProvider.get_CommitItem()
   at Microsoft.Web.Deployment.MetaKeyProvider.DoesNodeExist(Exception& e)
   --- End of inner exception stack trace ---
   at Microsoft.Web.Deployment.MetaKeyProvider.EnsureNodeExists()
   at Microsoft.Web.Deployment.MetaKeyProvider.TryGetMetabasePath(String input, DeploymentBaseContext baseContext, DeploymentProviderContext providerContext, String& actualPath)
   at Microsoft.Web.Deployment.CreateIIS6ApplicationProvider.get_MetaKeyProvider()
   at Microsoft.Web.Deployment.CreateIIS6ApplicationProvider.CreateApplication()
   at Microsoft.Web.Deployment.DeploymentObject.Add(DeploymentObject source, DeploymentSyncContext syncContext)
   at Microsoft.Web.Deployment.DeploymentSyncContext.HandleAdd(DeploymentObject destObject, DeploymentObject sourceObject)
   at Microsoft.Web.Deployment.DeploymentSyncContext.HandleUpdate(DeploymentObject destObject, DeploymentObject sourceObject)
   at Microsoft.Web.Deployment.DeploymentSyncContext.SyncChildrenNoOrder(DeploymentObject dest, DeploymentObject source)
   at Microsoft.Web.Deployment.DeploymentSyncContext.SyncChildrenOrder(DeploymentObject dest, DeploymentObject source)
   at Microsoft.Web.Deployment.DeploymentSyncContext.ProcessSync(DeploymentObject destinationObject, DeploymentObject sourceObject)
   at Microsoft.Web.Deployment.DeploymentObject.SyncToInternal(DeploymentObject destObject, DeploymentSyncOptions syncOptions, PayloadTable payloadTable, ContentRootTable contentRootTable)
   at Microsoft.Web.Deployment.DeploymentObject.SyncTo(DeploymentProviderOptions providerOptions, DeploymentBaseOptions baseOptions, DeploymentSyncOptions syncOptions)
   at MSDeploy.MSDeploy.ExecuteWorker()
Error count: 1.