我正在编写一些自动化代码,我正在将dll文件添加到xap文件中。我提取xap(我把它当作拉链),添加dll并更改appmanifest.xml。
但是我似乎无法将文件夹更改回silverlight xap文件。这是唯一的选择,因为开发人员不会在他们的程序中添加测试钩子。
在powershell中,如何转换目录类型?属性:类型文件夹 - > XAP(文件)
答案 0 :(得分:3)
正如您所说,.xap
文件实际上只是一个伪装在不同扩展名下的zip文件。更新文件夹的内容后,只需将文件夹压缩到一个文件中,然后使用.xap
扩展名重命名该文件。
以下压缩代码可以通过简单的google在网上找到很多地方。我使用了here和here
中的代码$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
。这可能是一些竞争条件,因为我能够通过在每个副本之间发出睡眠来绕过它。我知道睡眠通常是不受欢迎的,原因不在于人们可能永远不会知道多长时间,但由于这似乎真的是用于测试文件的内部包装,我认为这不是太多了关注。