2013年2月6日水曜日

◆CABファイルを展開する

InfoPathのテンプレート(XSNファイル)をSharePoint2010からSharePoint2013に移行しようとしている。

残念なことにXSNファイル内にサーバーURLがハードコードされているので、そのままでは持って行けない。

テキストに変換して一括で修正できないか?

最近のパターンからするとZIP展開するとテキスト(xml)ファイルが出てくるパターンかと思ったのだがそうでもなさそう。

調べてみるとどうやらZIP形式ではなく、CABなんだそうな・・・。

PowerShellでのCABファイル操作を調べてみると以下にサンプルがあったので使わせてもらう。
Windows PowerShell で .CAB ファイルを作成する

展開処理を最小限に抜き出すとこんな感じ。

001
002
003
004
005
006
007
008
009
010
011
012
013
014
015

Function ConvertFrom-Cab()
{

Param
(
 
$cab ,
  $destination
)
 
$comObject = "Shell.Application"
  $shell = New-Object -Comobject $comObject
  if(!$?) { $(Throw "unable to create $comObject object"
)}
 
$sourceCab = $shell.Namespace($cab).
items()
 
$DestinationFolder = $shell.Namespace($destination
)
 
$DestinationFolder.CopyHere($sourceCab
)
}


ConvertFrom-Cab -cab "F:\Test.cab" -destination "F:\Desktop\wk"

ファイルの拡張子はXSNのままではうまくいかなかったのでCABにリネームした。

最初は気づかなかったが、ミニマムにしたソースを見てみるとZIPの解凍に似ている。

っていうか、もしかして同じ?

以前作ったZIP解凍のソースを見てみたら、同じですねぇ。

だから拡張子をCABにしないとダメなのね・・・。

0 件のコメント:

コメントを投稿