0

我正在编写一些自动化代码,并将 dll 文件添加到 xap 文件中。我提取 xap(我将其视为 zip),添加 dll 并更改 appmanifest.xml。

但是我似乎无法将文件夹更改回 silverlight xap 文件。这是唯一的选择,因为开发人员不会将测试挂钩添加到他们的程序中。

在powershell中,如何转换目录类型?属性:类型文件文件夹-> XAP(文件)

4

1 回答 1

3

正如您所说,该.xap文件实际上只是一个伪装成不同扩展名的 zip 文件。更新文件夹的内容后,只需将文件夹压缩成一个文件,然后使用.xap扩展名重命名该文件。

下面的压缩代码在网上很多地方都可以通过简单的google找到。我使用了这里这里的代码

$folder = "C:\FolderToZip"
$zipFileName = "C:\Temp.zip"
set-content $zipFileName ("PK" + [char]5 + [char]6 + ("$([char]0)" * 18))
(dir $zipFileName).IsReadOnly = $false

$zipFile = (new-object -com shell.application).NameSpace($zipFileName)
gci $folder | foreach-object {$zipFile.CopyHere($_.FullName); sleep -milliseconds 100}

rename-item $zipfileName "RepackagedXapFile.xap"

当我对此进行测试时,我注意到 powershell 偶尔会弹出错误,File not found or no read permission. 这可能是某种竞争条件,因为我能够通过在每个副本之间发出睡眠来解决它。我知道睡眠通常不受欢迎,原因不仅限于人们可能永远不知道有多长足够长,但由于这似乎真的是为了测试文件的内部打包,我认为这并不过分关心。

于 2012-05-01T09:20:43.247 回答