ryok
10-11-2021, 14:08
Приветствую, был составлен такой код на основе примеров которые нашел в сети.
$xpuiBundlePath = "C:\Users\Ps1\Desktop\123\xpui.spa"
Add-Type -Assembly 'System.IO.Compression.FileSystem'
$zip = [System.IO.Compression.ZipFile]::Open($xpuiBundlePath, 'update')
$entry = $zip.GetEntry('xpui.js')
# Extract xpui.js from zip to memory
$reader = New-Object System.IO.StreamReader($entry.Open())
$xpuiContents = $reader.ReadToEnd()
$reader.Close()
# Replace ".ads.leaderboard.isEnabled" + separator - '}' or ')'
# With ".ads.leaderboard.isEnabled&&false" + separator
$xpuiContents = $xpuiContents -replace '(\.ads\.leaderboard\.isEnabled)(}|\))', '$1&&false$2'
# Delete ".createElement(XX,{onClick:X,className:XX.X.UpgradeButton}),X()"
$xpuiContents = $xpuiContents -replace '\.createElement\([^.,{]+,{onClick:[^.,]+,className:[^.]+\.[^.]+\.UpgradeButton}\),[^.(]+\(\)', ''
# Rewrite it to the zip
$writer = New-Object System.IO.StreamWriter($entry.Open())
$writer.BaseStream.SetLength(0)
$writer.Write($xpuiContents)
$writer.Close()
$zip.Dispose()
Вкратце происходит следующее:
- Открываем архив xpui.spa
- в памяти редактируем файл xpui.js из этого архива.
- измененный файл xpui.js закидываем обратно в тот же архив, заменяя старый вариант файла.
Загвоздка для меня в следующем, в этом архиве есть еще файлы, которые хочеться обрабатывать так же в памяти как показано в примере выше, только не по одному а сразу скопом, например хочу обработать по маске все файлы в архиве *.css, но не могу эту маску правильно описать в коде, получаеться только по одному файлу.
$xpuiBundlePath = "C:\Users\Ps1\Desktop\123\xpui.spa"
Add-Type -Assembly 'System.IO.Compression.FileSystem'
$zip = [System.IO.Compression.ZipFile]::Open($xpuiBundlePath, 'update')
$entry = $zip.GetEntry('xpui.js')
# Extract xpui.js from zip to memory
$reader = New-Object System.IO.StreamReader($entry.Open())
$xpuiContents = $reader.ReadToEnd()
$reader.Close()
# Replace ".ads.leaderboard.isEnabled" + separator - '}' or ')'
# With ".ads.leaderboard.isEnabled&&false" + separator
$xpuiContents = $xpuiContents -replace '(\.ads\.leaderboard\.isEnabled)(}|\))', '$1&&false$2'
# Delete ".createElement(XX,{onClick:X,className:XX.X.UpgradeButton}),X()"
$xpuiContents = $xpuiContents -replace '\.createElement\([^.,{]+,{onClick:[^.,]+,className:[^.]+\.[^.]+\.UpgradeButton}\),[^.(]+\(\)', ''
# Rewrite it to the zip
$writer = New-Object System.IO.StreamWriter($entry.Open())
$writer.BaseStream.SetLength(0)
$writer.Write($xpuiContents)
$writer.Close()
$zip.Dispose()
Вкратце происходит следующее:
- Открываем архив xpui.spa
- в памяти редактируем файл xpui.js из этого архива.
- измененный файл xpui.js закидываем обратно в тот же архив, заменяя старый вариант файла.
Загвоздка для меня в следующем, в этом архиве есть еще файлы, которые хочеться обрабатывать так же в памяти как показано в примере выше, только не по одному а сразу скопом, например хочу обработать по маске все файлы в архиве *.css, но не могу эту маску правильно описать в коде, получаеться только по одному файлу.