How are encoded the custom actions in AI_DATA_SETTER? I need to encode it by myself in order to modify the xml aip file directly.
Example:
<ROW Action="AI_DATA_SETTER_12" Type="51" Source="SetEnvironmentVariables_RabbitMQ" Target="AEkAcwA2ADQAQ.....MALQBSAGEAYgBiAGkAdABNAFEAIg==">
I tried to modify the Target value with this:
Code: Select all
$StagingPath = 'C:\PkgFactory'
$ScriptsPath = Join-Path -Path $StagingPath 'scripts'
$configPath = Join-Path -Path $StagingPath 'MyProject.aip'
$Table = "caphyon.advinst.msicomp.MsiCustActComponent"
[XML]$configXml = Get-Content -Path $configPath -ErrorAction 'Stop'
function Set_Target{
param (
[String]
$ScriptFullName
)
$CasName = (Get-ChildItem $ScriptFullName).BaseName
#Get AI_DATA_SETTER number
$AI_DATA_SETTER = $configXml.SelectNodes("//DOCUMENT/COMPONENT[@cid='$table']/ROW[@Action='$CAsName']/@AdditionalSeq") | Select-Object -ExpandProperty '#text'
#Set target
$XmlComponent = $configXml.DOCUMENT.COMPONENT | Where-Object cid -eq $Table
$XmlRow = $XmlComponent.ROW | Where-Object Action -eq $AI_DATA_SETTER
$CAsStringTob64 = "Is64Bit1IsFallback32BitParams" + (Get-Content($ScriptFullName))
$CAsStringTob64 = [Convert]::ToBase64String([Text.Encoding]::unicode.GetBytes($CAsStringTob64))
$XmlRow.Target = $CAsStringTob64
$CAsStringTob64 = [Convert]::ToBase64String([Text.Encoding]::unicode.GetBytes($CAsStringTob64))
$XmlRow.Target = $CAsStringTob64
}
$ScriptsList = Get-ChildItem -Path $ScriptsPath
foreach ($Script in $ScriptsList) {
$CasScriptFullName = $Script.FullName
Set_Target($CasScriptFullName)
}
$configXml.Save($configPath)
Thank you for your help
Emmanuel