フォルダの内容(プレーンHTMLファイル)をリモートIIS6/7サーバー上の特定のWebアプリケーションに展開することは可能ですか?
次のコマンドはエラーにはなりませんが、リモートサーバーにファイルを公開することもありません。
msdeploy.exe -verb:sync -source:dirPath="c:\myHtmlFiles" -dest:auto,ComputerName="http://deploy.mycompany.co.uk/msdeploy?site=TestSite",includeAcls="false",username="administrator",password="myPassword" -enableRule:DoNotDeleteRule -disableLink:AppPoolExtension -disableLink:ContentExtension -allowUntrusted
注意:
http://sedodream.com/2012/08/20/WebDeployMSDeployHowToSyncAFolder.aspx でこれに答えるためのブログ投稿を書きました。あなたの質問から、あなたはMSDeployにかなり精通しているように見えるので、答えは少し冗長かもしれませんが、私はMSDeployの知識が少ない人に理解してもらいたかったです。以下に答えを貼り付けました。
Web Deploy(別名MSDeploy)はプロバイダーモデルを使用し、すぐに利用できる 適切な数のプロバイダー があります。一部のプロバイダーの例を示します。 IIS Webアプリケーションを同期する場合、iisAppを使用します。MSDeployパッケージにはpackageを使用し、WebサーバーwebServerなどに使用します。ローカルフォルダーをリモートIISパスに同期する場合は、 contentPath プロバイダーを使用できます。このプロバイダーを使用して、あるWebサイトから別のWebサイトにフォルダーを同期することもできます。
この場合に私たちがしたいことの一般的な考え方は、PCのフォルダーをIIS Webサイトに同期することです。 msdeploy.exeの呼び出しは少し冗長になる可能性があるため、一度に1ステップずつコマンドを作成しましょう。以下のテンプレートを使用します。
msdeploy.exe -verb:sync -source:contentPath="" -dest:contentPath=""
Sync動詞を使用して何をしようとしているかを説明し、次にソースとデスティネーションの両方にcontentPathプロバイダーを使用します。次に、これらの値がどうあるべきかを記入しましょう。ソース値には、同期するフォルダーへのフルパスを渡す必要があります。私の場合、ファイルはC:\ temp\files-to-pubにあります。 dest値には、フォルダーへのパスをIISパスとして指定します。私の場合、同期するWebサイトの名前はsayedupdemoであるため、同期するIISパスは「sayedupdemo/files-to-pub」です。今それは私たちに与えます。
msdeploy.exe –verb:sync -source:contentPath="C:\temp\files-to-pub" -dest:contentPath='sayedupdemo/files-to-pub'
Dest値には、それらのコマンドの送信先サーバーを示すパラメーターは指定していません。これらのパラメーターを追加する必要があります。通常、渡される必要があるパラメーターは次のとおりです。
私の場合、 Windows Azure Web Site に公開しています。したがって、使用する値は次のとおりです。
これらの値はすべて.publishSettingsファイルにあります(WindowsAzure.comのWebサイトダッシュボードからダウンロードできます)。 ComputerName値については、完全なURLを取得するためにサイトの名前を追加する必要があります。上記の例では、?site=sayedupdemo
を手動で追加しました。これは、Azureポータルに表示される名前と同じです。だから今私たちが持っているコマンドは次のとおりです。
msdeploy.exe
–verb:sync
-source:contentPath="C:\temp\files-to-pub"
-dest:contentPath='sayedupdemo/files-to-pub'
,ComputerName="https://waws-prod-blu-001.publish.azurewebsites.windows.net/msdeploy.axd?site=sayedupdemo"
,UserName='$sayedupdemo'
,Password='thisIsNotMyRealPassword'
,AuthType='Basic'
OK、もうすぐです!私の場合、このプロセス中にサーバーからファイルを削除しないようにします。そのため、–enableRule:DoNotDeleteRule
も追加します。だから私たちのコマンドは今です。
msdeploy.exe
–verb:sync
-source:contentPath="C:\temp\files-to-pub"
-dest:contentPath='sayedupdemo/files-to-pub'
,ComputerName="https://waws-prod-blu-001.publish.azurewebsites.windows.net/msdeploy.axd?site=sayedupdemo"
,UserName='$sayedupdemo'
,Password='thisIsNotMyRealPassword'
,AuthType='Basic'
-enableRule:DoNotDeleteRule
このコマンドを実行する前のこの時点で、–whatif
を渡して最初に実行します。これにより、実際に変更を加えることなく、操作の概要を知ることができます。これを行うと、結果が下の画像に表示されます。
変更がすべて意図的なものであることを確認した後、–whatif
を削除してコマンドを実行しました。その後、ローカルファイルがリモートサーバーに公開されました。これで、各パブリッシュされたファイルを同期したので、変更されたファイルのみがパブリッシュされます。
個々のファイルをsnycする方法を学びたい場合は、以前のブログ投稿「公開中にWebアプリをオフラインにする方法」をご覧ください。
あなたの場合、dest:auto
を使用していることに気付きましたが、それを使用できますが、IISアプリ名をパラメーターとして渡す必要があり、フォルダーへのパスを置き換えます。以下はコマンドです。
msdeploy.exe
-verb:sync
-source:contentPath="C:\temp\files-to-pub"
-dest:auto
,ComputerName="https://waws-prod-blu-001.publish.azurewebsites.windows.net/msdeploy.axd?site=sayedupdemo"
,UserName='$sayedupdemo'
,Password='thisIsNotMyRealPassword'
,AuthType='Basic'
-enableRule:DoNotDeleteRule
-setParam:value='sayedupdemo',kind=ProviderPath,scope=contentPath,match='^C:\\temp\\files-to-pub$'