Oct 23, 2019
11:45 AM
The URL below will need to be accessible for Package Feed Module functionality including the ability to download vendor setups directly in AdminStudio.
https://dl.csi7.secunia.com/
... View more
Oct 21, 2019
08:05 AM
1 Kudo
SVM is not inventory based. It relies upon file signatures, so it detects the presence of known vulnerable files associated with specific versions of vulnerable software. So, I think the answer you are looking for is "Yes, SVM will detect the presence of vulnerable software regardless of how it makes its way to the monitored device".
... View more
Oct 14, 2019
07:58 AM
How long are the filenames. There are limitations based on the target drive format. Maybe you can paste the filenames here?
... View more
Sep 27, 2019
11:03 AM
5 Kudos
Now you can keep all your systems up to date, hands free, using AdminStudio's Package Feed Module and its powerful automation support.
In this article by AdminStudio's Product Management team (Bob Kelly and Kiran Mantagi) we highlight how you can leverage the powerful automation capabilities of AdminStudio to automatically convert a list of applications into deployment ready packages. Such automation can be run regularly to identify, package and publish new versions of each application as new versions are introduced by the vendor!
One of the major challenges for IT Professionals is to keep systems up to date with the latest version of the software they manage (a critical task when you consider the majority of such updates include security fixes). From a software security standpoint, an ideal environment is the one where all systems are current with the latest version immediately as new versions are released. IT Pros spend countless hours trying to keep up: learning of new updates, researching silent command line switches and customization options, etc.
A typical scenario of how you would go about updating the systems in your environment would be:
Using a software inventory report, look to see which have new versions released
For each, download the installer to a managed folder structure
Research how to perform a silent installation of the product
Examine the installer to determine what kind of options it might support
Look to online documentation and community resources to expose silent installation options
Test the discovered silent installation options to confirm it performs as expected
If it cannot be silently installed or customization options are insufficient, the installer is typically repackaged with a solution like AdminStudio’s Repackger
It is common for many organizations to next wrap the installer and silent command line into a standardized script to ensure consistency, control behavior, and provide a mechanism for further customization of the installation.
Add the installation package to an endpoint management system like Configuration Manager (SCCM)
Deploy the application to test systems to confirm success prior to a full production deployment
Mitigate failures related to Windows Compatablity, failure to conform to best practices, conflicts with previously deployed applications, etc.
With AdminStudio’s revolutionary Package Feed Module, released in AdminStudio 2019 R2, getting new software updates and silent command line switches is quick and easy. Package Feed Module provides access to nearly 3000 software entries with a focus on those frequently used in an Enterprise. Package Feed Module provides easy download of the latest version of the setup files along with the tested silent command line switches just by a few clicks of a button. To learn more about Package Feed Module, click here.
Now imagine, you could take that inventory report from step #1 above and automate the rests of those tasks. A new version is released for a product—a new package appears in your deployment system, tested and ready for initial deployment. Thanks to the script outlined below, this dream is now a reality…
This article explains how you will be able to achieve this automation using the provided PowerShell Script which leverages AdminStudio’s powerful automation capabilities exposed via PowerShell Cmdlets. For the complete list of PowerShell Cmdlets exposed by AdminStudio, please refer to our documentation here.
Prerequisites:
AdminStudio Enterprise 2019 R2 (or later) installed and activated
An established AdminStudio Catalog (video)
Subscription to Package Feed Module (datasheet)
Let’s get started..
Launch the 32-bit Windows PowerShell ISE as Administrator on the machine where AdminStudio is installed and open the below PowerShell Script in the editor.
You will see a section titled, ‘User Defined Settings’ at the beginning of the script. These are one time settings that must be edited to match your environment. It is pretty straight forward. Simply replace the value of variables like SQL Server, SQL Server User Name, etc. with the actual values applicable to your environment. This sample script shows various settings needed for distributing an application from AdminStudio to ConfigMgr. If you have any other end point management system in your environment other than ConfigMgr, please refer AdminStudio help library to learn what alternative settings are required to handle the connection between AdminStudio and your end point management system for the publishing of applications. If you do not wish to publish the resulting packages to your endpoint management system, you may choose to either comment these variables out, or simply delete them. Typically, there should be no need not edit any of the ‘Non-User Settings’.
After all the user defined variables are set to the correct values, the script is ready to run. Within few seconds you will be presented with the dialog below (figure 1). Enter the path and file name of a CSV file containing your list of software and click OK. Don’t worry about what other columns may exist in the CSV file, just be sure to have a title row and one column that contains Product Name and another that contains Vendor Name.
Figure 1. Dialog to provide the path of the software inventory file.
Below (figure 2) is an example of what a simple CSV list might look like:
Figure 2. A simple example of an inventory list suitable for this script
Next, you will see the below dialog (figure 3). The drop down lists all the column names detected in the CSV file. Choose the name of the column which lists the Product Name of the software. Depending on the source of your list, the name of this column will vary, some may identify Product Name as "Name", "Software Name", "Display Name" etc.
Figure 3: Select the column which represents Product Name.
You will then be prompted to supply the column name for the Vendor via the below dialog (figure 4). Depending on the source of your list, Vendor Name might also be identified as "Manufacturer", "Publisher", etc. Simply select the column name from the drop down which represents Vendor Name and Click OK to continue.
Figure 4: Select the column which represents Vendor Name.
Finally, upon clicking OK in the previous dialog, you will be presented with the below choice (figure 5). Here you can specify what operation you want to perform-- first choose to Search Apps or to Process Apps.
Figure 5: Select an option: to either search for apps or to process the apps
Search Apps: Selecting ‘Search Apps’ will take your inventory list from the CSV file and search Package Feed Module for the matching installers. The ‘Search Apps’ action fetches the search results, updates the CSV with the results and stops. Output of the search results will be added as new columns in the same CSV file. An example list with the additional columns added can be seen in the below screenshot (figure 6). If multiple results are found while searching for a product, then all the matched results will be updated in the new MatchedProductName column. If there is just one match found, then the same name will be updated in the SelectedProductName column and if multiple matches are found, then the first name from the list will be specified in the SelectedProductName column.
Figure 6: Search results updated into the input csv file for the ‘Search Apps’ action
Process Apps: The ‘Process Apps’ option executes selected tasks against the list. The below dialog (figure 7) lets you choose the tasks that you would like to perform for each application installer selected. This is a sample script, and so shows a very limited list of actions. You can extend this list of actions to cover a long list of other valuable operations AdminStudio can perform, such as conversion to App-V and MSIX, publishing to other end point management systems, resolving Windows compatibility issues, etc. Please refer to our online documentation for a complete list of AdminStudio PowerShell Cmdlets.
Figure 7: Select all the tasks to be performed on the package
Wrapping is a simple, yet powerful way, to customize your installation and to inject any pre-installation or post-installation configurations or actions. As an increasing number of software vendors provide good support for silent command line switches, more and more IT Pros are switching to wrapping from traditional repackaging.
AdminStudio provides two options to easily wrap your software package in a script:
PowerShell wrapping, which wraps your package into a PowerShell Script using a predefined template, where you may add any customizations or configurations desired.
EXE Wrapping, which leverages older WiseScript technology to provide similar benefits using a pre-defined template, where you may add any customizations or configurations desired. This option may be preferable for those not familiar with PowerShell as WiseScript provides a point and click interface and does not require any knowledge of scripting.
You will be presented with the dialog below (figure 😎 only if you chose to Wrap from the list of desired actions. Here you may choose between PowerShell Wrapping and EXE Wrapping.
Figure 8: Select the technology to be used for wrapping
Click OK and enjoy the show!
Behind the Scenes
The script reads your inventory CSV file and looks up each one in Package Feed Module. In order to limit actions only to new versions of each application, the software version of the application from the Package Feed Module is compared against the software version in AdminStudio’s Application Catalog. If the version in the Package Feed Module is found to be greater than the version in the Application Catalog, the new version of the package will be downloaded and imported to your Application Catalog. Once in the catalog, the package will be put through each of the selected tasks.
Detection Methods that are added to a package are evaluated on the end point when the package is deployed for installation. The Detection Methods help identify if the installation is applicable to the device-- if an older version is installed, then the installation is performed. Along with Detection Methods there are other ConfigMgr application model data properties that you may set for an application in AdminStudio before publishing. AdminStudio exposes PowerShell Cmdlets to set most of these app model properties, however there are certain complex properties like Detection Methods, Requirements, and Supersedence which cannot be set using the existing Cmdlets. AdminStudio has some Cmdlets which are not documented and but are operational in the product, one such Cmdlet is used in this script to add the Detection Methods.
Running This Script
To make sure you get the exact matches for the inventory list in the CSV file, it is recommended to run this script in 2 passes. In the first pass, provide your inventory CSV file and select the Search Apps action to update your list with the matches found in the Package Feed Module. Then, open the updated CSV file and have a look at the new SelectedProductName column, to confirm column matches your intent. When there are multiple results, pick the correct product name from the list and update the original ProductName column to ensure a proper, singular match. If the product name listed in SelectedProductName matches your intent, you may leave it as is. Once you've massaged the CSV file save the changes and run the script again.
This second time, provide the updated CSV file and select Process Apps. This will take you through the choices explained earlier in this article. Depending on the how big the inventory list is and the tasks selected, it may take some time to download the installers and perform the selected tasks but the script will update you on its progress as it runs.
In case you missed it, a video is also provided to walk you through the above.
Below is a copy of script in question also attached to this article as a text file.
###############################################################
# User Defined Settings
###############################################################
$global:CatalogName = 'ApplicationCatalog' #Name of AdminStudio catalog
$SQLUserName = 'DBacct' #AdminStudio catalog user who should have access to the catalog (sql server)
$SQLPassword = 'DBpwd' #Password for this user
$SQLServer = '10.10.10.10' #Sql server name or ip
$SCCMServer = '10.10.10.10' #ConfigMgr (SCCM) name or ip
$SCCMServerSiteCode = 'FLX' #ConfigMgr site code
$SCCMRepositoryPath = '10.10.10.10\SCCMPublish' #ConfigMgr content location(a shared folder)
$SCCMTargetGroup = 'Applications' #ConfigMgr destination foldeer where the applications will be created
$SCCMUser = 'CMacct' #ConfigMgr username
$SCCMPass = 'CMpwd' #ConfigMgr password
$DistributionName = 'ConfigMgr' #Connection name that will be added in AdminStudio
$ShareUser = 'CMacct' #Username having access to content location
$SharePwd = 'CMpwd' #Password for this username
#####################################################################
# Non-User Settings
#####################################################################
$ConnectionString = 'PROVIDER=SQLOLEDB.1;Data Source=' + $SQLServer+';Initial Catalog=' + $global:CatalogName + ';user ID='+$SQLUserName+';password='+$SQLPassword+''
$shive = "HKLM:\SOFTWARE\Wow6432Node\InstallShield\AdminStudio\18.0\"
$slocation = "Product Location"
$sAsLoc = (Get-ItemProperty $shive $slocation).$slocation
$sCurrentLoc = [Environment]::CurrentDirectory=(Get-Location -PSProvider FileSystem).ProviderPath
$sAsLoc = $sAsLoc + "Common\"
$SCCMPluginID = 13
$Global:CSVFilePath = $null
$Global:ProductColumnName = $null
$Global:VendorColumnName = $null
$Global:VersionColumnName = $null
$Global:CSVContent = $null
#####################################################################
# Functions
#####################################################################
function LoadDLL ($s)
{
$FileName = $sAsLoc + $s
import-module -name $FileName
}
function PrepAS ()
{
LoadDLL 'AdminStudio.Platform.PowerShellExtensions.dll'
LoadDLL 'AdminStudio.Utilities.dll'
LoadDLL 'AdminStudio.SCCM.Model.dll'
LoadDLL 'AdminStudio.SCCM.Integrator.dll'
Set-ASConfigPlatform -ConnectionString $ConnectionString
$sync = Invoke-ASPackageFeedSync
}
function ProcessInputCSV()
{
[System.Reflection.Assembly]::LoadWithPartialName('Microsoft.VisualBasic') | Out-Null
$csvfilepath = [Microsoft.VisualBasic.Interaction]::InputBox("Enter CSV File Path", "CSV File Path")
try{
if (Test-Path $csvfilepath -ErrorAction Stop)
{
$Global:CSVFilePath = $csvfilepath
}
else
{
Write-Host 'File not found. Please run the script again with the correct file path!' -ForegroundColor Red
Exit
}
}
catch
{
Write-Host 'File not found. Please run the script again with the correct file path!' -ForegroundColor Red
exit
}
$CSVContent = Import-Csv $csvfilepath
$Columns = $CSVContent[0].psobject.Properties.Name
$ProductColumnName = SelectFromDropDown 'Product Name' $Columns
If ($ProductColumnName -eq $null)
{
Write-Host 'Make a selection for Product Name column. Exiting script!' -ForegroundColor Red
Exit
}
$VendorColumnName = SelectFromDropDown 'Vendor Name' $Columns
If ($VendorColumnName -eq $null)
{
Write-Host 'Make a selection for Vendor Name column. Exiting scrtip!' -ForegroundColor Red
Exit
}
$CSVContent |
Select-Object *,"SearchResult","MatchedProductName","MatchedVersion","SelectedProductName","SelectedVersion","SelectedPkgFid" -ErrorAction Ignore|
Export-Csv -Path $Global:CSVFilePath -Force -NoTypeInformation
$Global:CSVContent = Import-Csv $csvfilepath
$Global:ProductColumnName = $ProductColumnName
$Global:VendorColumnName = $VendorColumnName
}
function SearchResults($ProductsList)
{
$ProductsList| ForEach-Object {
$product = $_.$Global:ProductColumnName
$vendor = $_.$Global:VendorColumnName
$Search = Invoke-ASPackageFeedSearch -ProductName $product -Vendor $vendor
$MatchedProductName = $null
$MatchedVersion = $null
$fids = $null
if ($Search -like '*No matching records found*')
{
$_.SearchResult = 'Sorry, no match found'
$_.MatchedProductName = 'Not found'
$_.MatchedVersion = 'Not found'
$_.SelectedProductName = 'Not found'
$_.SelectedVersion = 'Not found'
$_.SelectedPkgFid = 'Not found'
$ProductsList |Export-Csv -Path $Global:CSVFilePath -Force -NoTypeInformation
}
else{
if ($Search.Count -gt 1)
{$_.SearchResult = 'Matches Found'}
else
{$_.SearchResult = 'Match Found'}
for ($i=0; $i -lt $Search.Count; $i++)
{
$MatchedProductName= $MatchedProductName + $Search.Item($i).ProductName+"`n"
$MatchedVersion= $MatchedVersion + $Search.Item($i).Version+"`n"
$_.MatchedProductName = $MatchedProductName
$_.MatchedVersion = $MatchedVersion
}
$_.SelectedProductName = $Search.Item(0).ProductName
$_.SelectedVersion = $Search.Item(0).Version
$_.SelectedPkgFid = $Search.Item(0).PackageFeedId
$ProductsList |Export-Csv -Path $Global:CSVFilePath -Force -NoTypeInformation
}
if (!($Search -like '*No matching records found*')){
$fids = $Search.Item(0).PackageFeedId
return $fids
}
}
}
function ExecuteSQLQuery($strSQLQuery)
{
$retval=-1
$temp = ''
$adapter = ''
$command = ''
$dataset = ''
$Value = @()
$result = ''
$strSQLQuerySplit = ''
If($strSQLQuery)
{
$ConnectionInfo = 'Data Source=' + $SQLServer+';Initial Catalog=' + $global:CatalogName + ';user ID='+$SQLUserName+';password='+$SQLPassword+''
$connection = new-object system.data.SqlClient.SQLConnection($connectionInfo)
$command = new-object system.data.sqlclient.sqlcommand($strSQLQuery,$connection)
$connection.Open()
$adapter = New-Object System.Data.sqlclient.sqlDataAdapter $command
$dataset = New-Object System.Data.DataSet
$temp= $adapter.Fill($dataSet)
$result= $dataset.Tables
$strSQLQuerySplit = $strSQLQuery.split()
if(($strSQLQuerySplit.item(0) -eq "select"))
{
if($strSQLQuerySplit[1].Contains(","))
{
for($row=0; $row -lt $result[0].Rows.Count;$row++)
{
$Value+= $result[0].rows[$row].ItemArray+"`n"
$retval=$Value
}
}
else
{
$Value = $result[0].Columns[0].ColumnName
if(![string]::IsNullOrEmpty($result.$Value))
{
$retval = ([string]$result.$Value).trim()
}
else
{
$retval= $result.$Value #Some select queries return null values
}
}
}
else
{
$retval = 0
}
$connection.Close()
}
return $retval
}
function SelectOptions ($Option1,$Option2)
{
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")
$Form = New-Object System.Windows.Forms.Form
$Form.width = 500
$Form.height = 300
$Form.Text = ”Select an option"
$Form.StartPosition = [System.Windows.Forms.FormStartPosition]::CenterScreen
$WrapOptionsGrp = New-Object System.Windows.Forms.GroupBox
$WrapOptionsGrp.Location = '40,30'
$WrapOptionsGrp.size = '400,150'
$Opt1Btn = New-Object System.Windows.Forms.RadioButton
$Opt1Btn.Location = '20,40'
$Opt1Btn.size = '350,30'
$Opt1Btn.Checked = $true
$Opt1Btn.Text = $Option1
$Opt2Btn = New-Object System.Windows.Forms.RadioButton
$Opt2Btn.Location = '20,70'
$Opt2Btn.size = '350,30'
$Opt2Btn.Checked = $false
$Opt2Btn.Text = $Option2
$OKBtn = new-object System.Windows.Forms.Button
$OKBtn.Location = '130,200'
$OKBtn.Size = '80,30'
$OKBtn.Text = 'OK'
$OKBtn.DialogResult=[System.Windows.Forms.DialogResult]::OK
$CancelBtn = new-object System.Windows.Forms.Button
$CancelBtn.Location = '255,200'
$CancelBtn.Size = '80,30'
$CancelBtn.Text = "Cancel"
$CancelBtn.DialogResult=[System.Windows.Forms.DialogResult]::Cancel
$form.Controls.AddRange(@($WrapOptionsGrp,$OKBtn,$CancelBtn))
$WrapOptionsGrp.Controls.AddRange(@($Opt1Btn,$Opt2Btn))
$form.AcceptButton = $OKBtn
$form.CancelButton = $CancelBtn
$form.Add_Shown({$form.Activate()})
$dialogResult = $form.ShowDialog()
if ($dialogResult -eq "OK"){
if ($Opt1Btn.Checked){
$OptionSelected = $Option1
}
elseif ($Opt2Btn.Checked){
$OptionSelected = $Option2
}
return $OptionSelected
}
else
{
$OptionSelected = $null
return $OptionSelected
}
}
function SelectTasks()
{
$TasksList = "Import", "Test","Wrap","PublishToSCCM"
$formTitle="Select Tasks"
$Form = New-Object System.Windows.Forms.Form
$btnCancel = New-Object System.Windows.Forms.Button
$btnNext = New-Object System.Windows.Forms.Button
$cloCheckList = New-Object System.Windows.Forms.CheckedListBox
$btnMargin = New-Object System.Windows.Forms.Padding(4,4,4,4)
$btnSize = New-Object System.Drawing.Size(80,30)
$Form.SuspendLayout()
$btnCancel.DialogResult = [System.Windows.Forms.DialogResult]::Cancel
$btnCancel.Location = New-Object System.Drawing.Point(246, 134)
$btnCancel.Margin = $btnMargin
$btnCancel.Size = $btnSize
$btnCancel.Text = "Cancel"
$btnNext.DialogResult = [System.Windows.Forms.DialogResult]::OK
$btnNext.Location = New-Object System.Drawing.Point(246, 83)
$btnNext.Margin = $btnMargin
$btnNext.Size = $btnSize
$btnNext.Text = "OK"
$cloCheckList.FormattingEnabled = $true
$cloCheckList.Items.AddRange($TasksList)
$cloCheckList.Location = New-Object System.Drawing.Point(12, 12)
$cloCheckList.Size = New-Object System.Drawing.Size(227, 165)
$Form.AcceptButton = $btnNext
$Form.AutoScaleMode = [System.Windows.Forms.AutoScaleMode]::None
$Form.CancelButton = $btnCancel
$Form.ClientSize = New-Object System.Drawing.Size(376, 189)
$Form.Margin = $btnMargin
$Form.Name = "Form"
$Form.Text = $formTitle
$Form.MaximizeBox = $False
$Form.MinimizeBox = $False
$Form.ShowIcon = $true
$Form.ShowInTaskbar = $true
$Form.StartPosition = [System.Windows.Forms.FormStartPosition]::CenterScreen
$Form.TopMost = $True
$Form.WindowState = [System.Windows.Forms.FormWindowState]::Normal
$Form.Controls.Add($cloCheckList)
$Form.Controls.Add($btnCancel)
$Form.Controls.Add($btnNext)
$Form.ResumeLayout($true)
$result = $form.ShowDialog()
if ($result -eq ([System.Windows.Forms.DialogResult]::OK)){
$selections += for($i=0; $i -lt $($cloCheckList.CheckedItems.Count); $i++){
$($cloCheckList.CheckedItems[$i])
}
}
else{
$selections = $null
}
If ($selections -eq $null)
{
Write-Host 'No tasks selected. Exiting Script!' -ForegroundColor Red
Exit
}
If ($selections.contains('Wrap')) {
$selectwrap = SelectOptions 'PowerShellWrapping' 'EXEWrapping'
if ($selectwrap -eq $null)
{
Write-Host 'Make a selection for Wrapping Option. Exiting Script!' -ForegroundColor Red
Exit
}
else
{
$selections -replace 'Wrap', $selectwrap
}
}
else{$selections}
}
function AddDetectionMethod($PkgO,$DMFilePath,$DLFilePath, $DMPrimaryFileVersion)
{
$DMPrimaryFilePath = split-path $DMFilePath -Parent
$DMPrimaryFileName = split-path $DMFilePath -leaf
$xmlcontent = '<?xml version="1.0"?>
<DetectionMethod>
<FileDetectionMethodHelper>
<Id>0</Id>
<Connector>None</Connector>
<DetectionType>FileSystem</DetectionType>
<FileSystemType>File</FileSystemType>
<FileSystemPath>'+$DMPrimaryFilePath +'</FileSystemPath>
<FileSystemName>'+$DMPrimaryFileName+'</FileSystemName>
<Is64BitFile>false</Is64BitFile>
<CheckExistsOnly>false</CheckExistsOnly>
<FileSystemProperty>Version</FileSystemProperty>
<Operator>IsEquals</Operator>
<Value>'+$DMPrimaryFileVersion+'</Value>
</FileDetectionMethodHelper>
</DetectionMethod>'
$strSource= split-path $DLFilePath -Parent
Set-Content $strSource\$ProdName.xml $xmlcontent
$AddDM = Set-ASAppModelData -PackageId $PkgO.RowID -Type DetectionMethod -XmlPath $strSource\$ProdName.xml
If ($AddDM -eq $null)
{
Write-Host $ProdName ': Adding Detection Method for this package failed. If there are no default detection methods, then Publish to ConfigMgr may fail' -ForegroundColor Red
}
Remove-Item -Path $strSource\$Prodname.xml
}
function DownloadSetupFile ($PackageFid, $SetupFile)
{
try{
$download = Invoke-ASPackageFeedDownload -PackageFeedId $PackageFid -FileName $SetupFile -ErrorAction Stop
}
catch
{
Write-Host 'Download may have failed:'$SetupFile -ForegroundColor Red
$download = $null
}
return $download
}
function ProcessApplication($AppsList)
{
$pkgfids = SearchResults($AppsList)
$Tasks = SelectTasks
Foreach($pkgfid in $pkgfids){
$AppsList | ForEach-Object {
if ($_.SelectedPkgFid -eq $pkgfid)
{
$SearchedProd = $_.$Global:ProductColumnName
}
} #To identify the product name from the csv file
$PackageDetails = Get-ASPackageFeedDetails -PackageFeedId $pkgfid
$SilentCmdLineSwitch = $PackageDetails.SilentCommandLineSwitches
$SetupFileName=$PackageDetails.FileName
$ProdName = $PackageDetails.ProductName
$PFSoftVersion = $PackageDetails.Version
$PrimaryFileVersion = $PackageDetails.PrimaryFileVersion
$FilePath = $PackageDetails.PrimaryFile
Foreach ($Task in $Tasks)
{
switch($Task){
Import
{
$ProdExistQuery = "Select * from cstblpackage where ProductName like '%$SearchedProd%'"
$ProdExists = ExecuteSQLQuery $ProdExistQuery
If ($ProdExists -ne $null)
{
$SoftVersionQuery = "Select ProductVersion from cstblpackage where ProductName like '%$SearchedProd%'"
$SoftVersion = ExecuteSQLQuery $SoftVersionQuery
$SoftVersionSplit = $SoftVersion.split()
$maxVerion = ($SoftVersionSplit | Measure -Max).Maximum
try{
If ([System.Version]$PFSoftVersion -gt [System.Version]$maxVerion)
{
$DownloadedFilePath = DownloadSetupFile $pkgfid $SetupFileName
if ($DownloadedFilePath -ne $null)
{
$PkgObj = Import $DownloadedFilePath $SilentCmdLineSwitch
if ($PkgObj -ne $null)
{
AddDetectionMethod $PkgObj $FilePath $DownloadedFilePath $PrimaryFileVersion
}
else
{
Write-Host 'Import may have failed for the setup file:' $DownloadedFilePath -ForegroundColor Red
Break
}
}
else
{
Write-Host 'Setup file not found. Download may have failed!' -ForegroundColor Red
$PkgObj = $null
Break
}
}
else
{
Write-Host $ProdName ':AdminStudio catalog already has this setup file of either same or higher software version' -ForegroundColor Red
$PkgObj = $null
Break
}
}
catch{
Write-Host $ProdName ':Error while comparing software version, importing the package anyway' -ForegroundColor Green
$DownloadedFilePath = DownloadSetupFile $pkgfid $SetupFileName
if ($DownloadedFilePath -ne $null)
{
$PkgObj = Import $DownloadedFilePath $SilentCmdLineSwitch
if ($PkgObj -ne $null)
{
AddDetectionMethod $PkgObj $FilePath $DownloadedFilePath $PrimaryFileVersion
}
else
{
Write-Host 'Import may have failed for the setup file:' $DownloadedFilePath -ForegroundColor Red
Break
}
}
}
}
else
{
$DownloadedFilePath = DownloadSetupFile $pkgfid $SetupFileName
if ($DownloadedFilePath -ne $null)
{
Write-Host $ProdName ': Package does not exist in catalog. Importing the package...' -ForegroundColor Green
$PkgObj = Import $DownloadedFilePath $SilentCmdLineSwitch
if ($PkgObj -ne $null)
{
AddDetectionMethod $PkgObj $FilePath $DownloadedFilePath $PrimaryFileVersion
}
else
{
Write-Host 'Import may have failed for the setup file:' $DownloadedFilePath -ForegroundColor Red
Break
}
}
else
{
Write-Host 'Setup file not found. Download may have failed!' -ForegroundColor Red
$PkgObj = $null
Break
}
}
}
Test
{
if ($PkgObj -ne $null)
{
Test ($PkgObj)
}
else
{
Write-Host $ProdName ':Cannot Test. Import may have failed for this package' -ForegroundColor Red
Break
}
}
PublishToSCCM
{
if ($PkgObj -ne $null)
{
Write-Host 'tasks' + $Tasks
If ($Tasks.Contains("PowerShellWrapping") -or $Tasks.Contains("EXEWrapping"))
{
$PkgId = $PkgObj.RowID + 1
}
else
{
$PkgId = $PkgObj.RowID
}
DistributePackage ($PkgId)
}
else
{
Write-Host $ProdName ':Cannot Publish. Import may have failed for this package' -ForegroundColor Red
Break
}
}
PowerShellWrapping
{
if ($PkgObj -ne $null)
{
Invoke-ASWrapPackage -PackageID $PkgObj.RowID -WrapType Ps1
}
else
{
Write-Host $ProdName ':Cannot Wrap. Import may have failed for this package' -ForegroundColor Red
Break
}
}
EXEWrapping
{
if ($PkgObj -ne $null)
{
Invoke-ASWrapPackage -PackageID $PkgObj.RowID -WrapType Exe
}
else
{
Write-Host $ProdName ':Cannot Wrap. Import may have failed for this package' -ForegroundColor Red
Break
}
}
$null
{
Write-Host 'No tasks selected!' -ForegroundColor Red
exit}
}
}
}
}
function Test ($o)
{
Write-Host 'Testing Package:' $o.DisplayedProductName -nonewline -foregroundcolor white
Write-Host ' RowId:' $o.RowID -foregroundcolor gray
$oTestResults = Test-ASPackage -PackageId $o.RowID
$errors = 0;
$warn = 0;
$fixable=0;
foreach ($oTestResult in $oTestResults.Stats)
{
$errors = $errors + $oTestResult.Errors
$warn = $warn + $oTestResult.Warnings
}
Write-Host-Indent
Write-Host 'Errors:' $errors -foregroundcolor red
Write-Host-Indent
Write-Host 'Warnings:' $warn -foregroundcolor yellow
Write-Host
}
function Import ($s, $SilentSwitch)
{
$f = [System.IO.File]::GetAttributes($s)
$d = ($f -band [System.IO.FileAttributes]::Directory)
if (!$d)
{
Write-Host 'Importing:' $s -foregroundcolor white
$obj = Invoke-ASImportPackage -PackagePath $s -InstallCommandLine $SilentSwitch
if ($obj.GetType().FullName -eq 'AdminStudio.Platform.Helpers.PackageHelper')
{
return $obj
}
else
{
Write-Host 'Failed to import:' $s -foregroundcolor red
$obj = $null
return $obj
}
}
}
function DistributePackage($PkgID)
{
New-ASDistributionConnection -Name $DistributionName -PluginID $SCCMPluginID -ServerAddress $SCCMServer -SiteCode $SCCMServerSiteCode -DistributionWindowsAuthentication 0 -DistributionUser $SCCMUser -DistributionPassword $SCCMPass -SharePath $SCCMRepositoryPath -ShareWindowsAuthentication 0 -ShareUserName $ShareUser -SharePassword $SharePwd
Write-Host 'Distributing the Package:' $oPkg.DisplayedProductName -nonewline -foregroundcolor white
Write-Host ' RowId:' $PkgID -foregroundcolor gray
$oAppID = Get-ASApplicationID -PackageID $PkgID
Invoke-ASPublish -ConnectionName $DistributionName -ApplicationID $oAppID �'TargetGroup $SCCMTargetGroup
}
function SelectFromDropDown ($ColumnName,$arrName)
{
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing
$form = New-Object System.Windows.Forms.Form
$form.Text = $ColumnName
$form.Size = New-Object System.Drawing.Size(500,200)
$form.StartPosition = 'CenterScreen'
$OKButton = New-Object System.Windows.Forms.Button
$OKButton.Location = New-Object System.Drawing.Point(75,120)
$OKButton.Size = New-Object System.Drawing.Size(75,23)
$OKButton.Text = 'OK'
$OKButton.DialogResult = [System.Windows.Forms.DialogResult]::OK
$form.AcceptButton = $OKButton
$form.Controls.Add($OKButton)
$CancelButton = New-Object System.Windows.Forms.Button
$CancelButton.Location = New-Object System.Drawing.Point(150,120)
$CancelButton.Size = New-Object System.Drawing.Size(75,23)
$CancelButton.Text = 'Cancel'
$CancelButton.DialogResult = [System.Windows.Forms.DialogResult]::Cancel
$form.CancelButton = $CancelButton
$form.Controls.Add($CancelButton)
$label = New-Object System.Windows.Forms.Label
$label.Location = New-Object System.Drawing.Point(10,20)
$label.Size = New-Object System.Drawing.Size (400,20)
$label.Text = 'Please select the column for: '+$ColumnName
$form.Controls.Add($label)
$DropDown = New-Object System.Windows.Forms.ComboBox
$DropDown.Location = New-Object System.Drawing.Point(10,40)
$DropDown.Size = New-Object System.Drawing.Size(260,20)
$DropDown.Height = 80
ForEach ($Item in $arrName) {
[void] $DropDown.Items.Add($Item)
}
$form.Controls.Add($DropDown)
$form.Topmost = $true
$result = $form.ShowDialog()
if ($result -eq [System.Windows.Forms.DialogResult]::OK)
{
$x = $DropDown.SelectedItem
return $x
}
else
{
$x = $null
return $x
}
}
function Write-Host-Drawline ()
{
Write-Host '**************************************' -foregroundcolor yellow
}
function Write-Host-Indent ()
{
Write-Host ' ' -nonewline
}
################################################################
# Main Loop
################################################################
cd $sAsLoc
Write-Host
Write-Host-Drawline
Write-Host 'AdminStudio Directory =' $sAsLoc -foregroundcolor gray
Write-Host 'Catalog Name=' $global:CatalogName -foregroundcolor gray
Write-Host-Drawline
Write-Host
PrepAS
ProcessInputCSV
$Option = SelectOptions 'Search Apps' 'Process Apps'
If ($Option -eq 'Search Apps')
{SearchResults($Global:CSVContent)}
elseif ($Option -eq 'Process Apps')
{ProcessApplication($Global:CSVContent)}
else
{write-host 'Exiting the script. Please make a selection.' -ForegroundColor Red
Exit
}
cd $sCurrentLoc
################################################################
# End
################################################################
... View more
Sep 27, 2019
10:31 AM
4 Kudos
SVM Multi Partition Reporting Tool Version 1.0 (download)
We’ve heard from several customers that it would be nice to have consolidated reports when dealing with multiple SVM partitions or accounts. By design, partitions are distinct instances, so sharing data between partitions or accounts is clearly a sensitive capability. We’ve sought specific feedback for several months to understand just what kinds of reports would be of value, but such detail is not easy to obtain. To help address an important customer need and to better solicit actionable feedback on what reports would be of particular value, we are making this simple tool available today.
To summarize, it works like this: You provide access to multiple accounts/partitions and it will pull data from each and aggregate the results into a single spreadsheet. In this initial version, we are offering the ability to create a Product Report or a Host Report which you can then manipulate in Excel.
Specify the location of your SVM server (the online URL is filled in by default, but you may specify differently if you have an on-prem instance) and enter the username and password for a partition/account you’d like to include.
Enter the name of the Smart Group you’d like to include (All Hosts and All Products are specified by default, but you can choose another by entering the desired Smart Group names).
Click “Add Account to List” and repeat the steps above for any additional partition accounts you’d like to include.
When you have identified from which accounts you’d like to collect data, click Get Hosts or Get Products as desired.
The data will be downloaded and if installed, Excel will be launched once download is complete.
You can right click on a listed account to remove it and also save the list so it is faster to re-run the report in the future. Just right-click and choose Load List to bring back what was last saved using the Save List menu item. This is also beneficial if you'd like to automate this from the command line for scheduling purposes. The following command line options are supported for this use case:
-q 1 will run the Product Report
-q 2 will run the Host Report
-q 3 will run both the Product and Host Reports
Although not its primary purpose, this tool can also be used to generate reports within a single partition (from a single account or multiple accounts) which has potential value if you'd like to combine data from multiple Smart Groups.
Is something missing? What kind of reports will you create? We’d love your feedback in the SVM forum to help us understand just what data is of interest when it comes to your need for reports that span multiple partitions or accounts.
https://resources.flexera.com/tools/SVM/SVMReportingTool.exe
... View more
- Tags:
- SVM
Labels
Sep 25, 2019
08:35 AM
1 Kudo
1) Yes, Package Feed Module comes with AdminStudio 2019 R2, but only for the Professional and Enterprise editions (the Application Manager is not available in Standard). There you will see a handful of preselected installers are supported. To unlock full access requires a separate subscription.
2) You can upgrade your AdminStudio Standard edition to Pro or Enterprise. Then you will have what you need to take advantage of a Package Feed Module subscription.
Please contact sales to discuss your specific situation in more detail.
... View more
Sep 23, 2019
01:39 PM
8 Kudos
Unlike the Vendor Patch Module for Software Vulnerability Manager, there really are no competitive offerings when it comes to what AdminStudio provides with its Package Feed Module. However, what you get and for how many applications is nonetheless highly relevant, so in this article, I’ll go into the ways you can count them so you can appreciate what you truly get in terms of coverage when considering the AdminStudio Package Feed Module.
Note: The numbers used below fluctuate and grow over time, see "updates" at the bottom for a quick history of this growth. Below still explains the general logic of how you can count the number of applications covered, but the Package Feed Module page now provides a running count and export ability, so the below data will not continue to be manually updated.
When speaking to the number of installers covered, our current statement is that we have “nearly 4500” which as of February 18 th , 2022 equates to 4,457 and growing. Just how many products does that address is a more valuable question; those 4,457 patches apply to 1,425 unique products across 628 unique manufacturers.
We've not taken an all-or-nothing approach to the data we provide. That is to say, all the details we'd like to provide may not be available for a myriad of reasons summarized below.
Sometimes the vendor setup file isn't publicly available for download. In some cases, vendors don't make their installers available for download without logging in as a paying customer. In such cases, a traditional patch catalog would omit the information and disqualify it as eligible for inclusion. The Package Feed Module currently provides integrated download support for 3,766 of the installers being tracked.
Sometimes the vendor doesn't provide silent command line support. Vendors don’t always provide support for (and sometimes go out of their way to discourage) the silent installation of their applications. In such cases, the awareness the update exists, the ability to easily obtain it, and how to detect when it's installed are still valuable, so we provide such. However, it may be necessary to use Repackager in order to achieve a silent, customized deployment. Package Feed Module currently provides command-line installation details for 3,312 of the installers being tracked.
Sometimes we don’t have sufficient detection logic to offer. In some cases, we may not have a reliable file on which to base applicability rules you can pass as valuable data to systems like Configuration Manager (SCCM). Package Feed Module currently provides detection information (files or MSI package codes) for 2,821 of the installers being tracked.
Now that we’ve established what we have, let’s talk about ways one can count it.
One title can have a lot of installers. For example, Firefox has dozens of languages and variants that we cover, which essentially patch “Firefox." Therefore, the number of installers applies to a much smaller number of products.
Some vendors provide a different installer for 32- and 64-bit architectures. And some provide distinct installers both based on language and architecture. For example, Autodesk Inventor has more than 50 different installers for this reason.
We’ve also got over 250 Mac installers (267 at the moment). For Mac, the value is all in the awareness of what has been released and the ability to easily obtain it as the challenge of determining silent command line parameters is not applicable to Mac systems. Don’t forget AdminStudio allows you to easily publish these Mac packages directly to Jamf Pro (formerly Casper) for deployment.
The number of installers Package Feed Module covers is impressive, but it's not the most important thing. What's likely of more significance is identifying just what applications we cover that you really care about. We’ve focused on enterprise applications to maximize value and aren't just creating patches for everything under the sun to impress you with big numbers. We’ve set up a place where those interested in the AdminStudio Package Feed Module may verify specific application coverage here.
In AdminStudio 2019 R2 and later, you’ll find a restricted view of the Package Feed Module is available for you to try out. You can also see it in action by checking out the demo in our recorded webinar presentation or in this very short video that aims to provide a briefer version of the same.
For hundreds of the Windows Installer-based patches in the catalog, we now also provide a custom installation wizard so you may make application-specific choices that result in the generation of a transform file to handle your selections. For more on this, please see this article and video.
UPDATES:
As of 11/22/19, the total number of Installers covered has increased to 3,097 which applies to 1,058 products across 453 distinct software vendors
As of 4/13/20, the total number of Installers covered has increased to 3,260 which applies to 1,097 products across 473 distinct software vendors
As of 9/15/20, the total number of installers covered has increased to 3,430 which applies to 1,139 products across 491 distinct software vendors
As of 2/10/21, the total number of installers covered has increased to 3,674 which applies to 1,194 products across 524 distinct software vendors
As of 2/18/22, the total number of installers covered has increased to 4,457 which applies to 1,425 products across 628 distinct software vendors
As of February 2023, the total had passed 4,500 and continues to grow as new eligible third-party packages are discovered (and requested by customers). For the dynamically calculated latest total, details, and the ability to download a CSV export, see our Package Feed Module page.
... View more
Sep 23, 2019
10:41 AM
3 Kudos
We held a webinar announcing the Package Feed Module on August 20th 2019 you can watch here.
There were a lot of great questions and we didn’t have time to get to them all. Below are some of the questions (and responses) regarding AdminStudio’s Package Feed Module that we didn’t get to during the live session...
Does it provide packages in alternative deployment formats like App-V or MSIX?
Not directly. The Package Feed Module delivers vendor setups and while we expect to see MSIX packages in the future, we’ve not seen (and don’t expect) any vendor setups delivered in native App-V format. The good news is that AdminStudio is capable of converting to these and other formats with ease. Leveraging the Automated Application Converter (AAC) one can leverage the silent command lines delivered with the Package Feed Module to fully automate the repackaging and conversion of vendor provided setups into the distribution format of your choice.
How do I obtain the Package Feed Module?
The Package Feed Module is available as a feature of AdminStudio 2019 R2 and later. The list of applications it contains are maintained online, but a handful of popular titles are provided even when not licensed so you can experience the feature first-hand. To unlock the full database, an activation key can be purchased which enables the Package Feed Module subscription for up to three years. If this subscription should expire, any perpetual AdminStudio license on which it is running will continue to operate as expected (only this subscription will expire if not maintained).
How does this relate to the previously released feature to provide automatic command line suggestions?
The automatic suggestions for silent command line options are still present and still provide a programmatic suggestion based on detection of installer technology used, including the most popular EXE installers on the market. This means, the suggestion should work in most cases, but may not due to additional requirements or vendor restrictions. However, the command lines provided by the Package Feed Module are application/version specific and they are tested, so they are known to work as expected.
Will you be providing instructions on how to create response files where needed? Some installers use different switches.
Not at this time. The Package Feed Module aims to take advantage of vendors offering command line support. It offers a validated command line, and not instructions on how to perform an automated installation. We do intend to enhance this in the future, for example we plan to leverage MSI Transforms (MSTs) to allow for simple customization of Windows Installer based setups.
Where did you get your list of applications? What industries?
We included installers that have a significant install base and are used widely in enterprise environments. We’re more than happy to take suggestions for additional applications.
Requests for new entries may be submitted via our AdminStudio discussion forums. Please be sure to provide the following details when making such a request:
Product Name (including vendor name)
Product Version (the latest available)
Comments (any optional information you believe will help the request)
Download URL (where it be downloaded)
Information URL (product home page)
Is package size available information before downloading the application via package feed?
Not yet, but we’d be happy to take this as feedback for improvement. Right now, you’ll see the size of the download after selection so you can better anticipate it taking longer for larger downloads. A progress bar is provided during download but seeing the size can help you understand why some may take longer than others.
Why are you using Wise script? Are you maintaining a current version of Wise script?
Wise Script allows customers without scripting skills to take advantage of script wrappers. The rationale behind our inclusion is described in detail here. In short, Wise Script met the use case of a wrapper script as it was so no significant improvements have been made. We realize many like to use Wise Script for other things and are open to suggestions for improvements and enhancements as we would any other aspect of AdminStudio. We will prioritize such alongside other AdminStudio improvements and enhancements based on many factors including level of interest so please do share what you’d like to see in our AdminStudio discussion forum.
Does it support BigFix for distribution?
Not today, but it is on our list of those being considered alongside Intune and Tanium. Please let us know your interest to help us prioritize future integration efforts.
How is application licensing handled here?
Licensing is not considered when it comes to AdminStudio. We are not providing any downloads for licensed applications which are not freely available, but may still provide awareness of new versions, tested silent command line information and applicability criteria. In such a case, you’d simply need to supply the setup file after downloading it from an authorized location as opposed to downloading it directly in AdminStudio.
Do we need to stand up a new server to setup the AdminStudio Application Manager?
AdminStudio’s Application Manager uses a SQL Server to host its Application Catalog database that it uses to perform fast SQL queries and other operations to optimize the testing and storage of application packages and the required meta-data while they’re being prepared by AdminStudio.
This does not need to be a dedicated SQL Server for AdminStudio, and can be a shared server along with other enterprise applications that use SQL Server. Any SQL Server that is accessible to all the AdminStudio users from their workstations will work.
The free SQL Server Express edition also works, especially for evaluating AdminStudio; however, there is a database size limitation that will prevent the Application Catalog from growing beyond a certain amount and will not be sufficient for most organizations. In production, SQL Server Standard or above is recommended.
If I want package VLC Media Player for ConfigMgr in MSI format, can this be achieved?
Yes. In fact, this is included in the Package Feed Module so you can get the latest version and the silent installation command and fully automate the conversion leveraging the Automated Application Converter (AAC). Alternatively, you could of course repackage it with Repackager manually by capturing a manual installation. This application in particular can be a tricky one and is often deployed using the native command line (wrapped versus repackaged) or in a virtual format like App-V. Both of these approaches can likewise be made easier with AdminStudio.
Are redistributables (MS Visual C++ 2017) in the Package feed?
Yes, Visual C++ and many others are included. View the entire list at https://www.flexera.com/adminstudio-pfm
Is there is a list of vendors in the feed catalog? (AutoDesk, ETAP, Bentley)
Yes, filter the entire list by vendor or product name at https://www.flexera.com/adminstudio-pfm
Do you have open source apps listed?
Yes, many open source titles are included. View the full list at https://www.flexera.com/adminstudio-pfm
Is there a list available to see what applications in in the database without subscribing first?
Yes. This list on our site is always up to date with the very latest. The link to this is also accessible directly via the AdminStudio Package Feed Module wizard.
Is the Red Hat OpenJDK available?
No, the Package Feed Module is currently limited to Windows and Mac applications at this time.
If Flexera has not discovered the silent command line switches, but I found silent switch options, is there a way to upload the switches to share with everyone and incorporate to AdminStudio?
Not directly, but we would welcome you to post such information in our online community forums so we can consider incorporating such switches into our offering.
What distribution platforms are supported and are there plans to add others?
AdminStudio support the most widely used distribution systems that the majority of our customers use. More information on which ones are support and what information AdminStudio can publish can be found in the product help here.
We’re open to adding additional distribution systems to support all our current and future customers. Please feel free to submit this as a feature request in our community forum to help us understand the interest level so such can be considered when prioritizing which we’ll introduce next.
... View more
Sep 18, 2019
12:58 PM
1 Kudo
Sorry, it looks like I overlooked responding to this. As you note, this is a capability of our cloud edition. It is on our backlog as something we do plan to bring to on-prem in the future. Thanks for highlighting it here!
... View more
Sep 17, 2019
12:58 PM
1 Kudo
Thank you, I will look into if there is any logic behind the current ordering but alphabetical seems appropriate (particularly if that is how it is shown in WSUS).
... View more
Sep 12, 2019
07:59 AM
Use the "Get Support" menu above to open a ticket. Some ways to open a support ticket are covered in the link below:
https://community.flexera.com/t5/Using-the-Case-Portal/Support-Contacts/ta-p/94684
... View more
Sep 06, 2019
02:19 PM
3 Kudos
A lot (that’s the easy answer). More than anyone else (also an easy answer). But if you are looking for a number, it gets a tad complicated. In this article, I’ll go into the ways you can count them so you can appreciate what you truly get in terms of coverage when considering the SVM Vendor Patch Module.
The below article explains the ways one can go about counting the patches available in different ways; those numbers are a point in time. For the latest list, a dynamic count, and the ability to export the list and coverage details, visit our Vendor Patch Module page.
First, when speaking to patches, we can all agree that the goal is to provide out-of-the-box patches that require no additional effort. We’ve got “over 1500,” which at the time I write this translates to 1,614 and growing. But how many products does that address is a more valuable question. Those 1,614 patches apply to 629 unique products. That is probably the most conservative way to look at the list, while at the other end of the spectrum, we can say (just as factually) that we provide valuable details on over 3,649 vendor software installers.
That is where the SVM Vendor Patch Module goes further by not limiting coverage to just those setups where we can provide everything necessary for an out-of-the-box patch. We’ve got an additional 2,035 installers covered where something may be missing that prevented us from offering an out-of-the-box patch. It could mean we are missing the setup file, the detection logic, or a silent command line for a myriad of reasons:
It could mean the setup file itself is not publicly available. In some cases, vendors do not make their installers available for download without logging in as a paying customer. In such cases, a traditional patch catalog would omit the information and disqualify it as eligible for inclusion.
It could mean we don’t have sufficient detection logic. In some cases, we may not have a reliable file on which to base applicability rules as required by a WSUS patch. The download and silent command-line information are still very clearly of high value, and so in these cases, we still provide them. Further, if the application is one that SVM can detect, we can leverage assessment data to dynamically offer applicability criteria unique to your environment.
It could mean we don’t have a silent command line. Vendors don’t always provide support for (and sometimes go out of their way to discourage) the silent installation of their applications. In such cases, the awareness that the update exists, the ability to easily obtain it, and how to detect when it is installed are still valuable, so we provide this information. However, it may be necessary to repackage such a product with AdminStudio in order to achieve a silent, customized deployment that is suitable for updating or patching it.
There are a couple of situations where products may be temporarily removed from our patch data. If virus and adware scanning were to fail for a vendor setup, we would not make it available. We are scanning with dozens of different scanners, so there may be an occasional false positive that causes us to omit a product while we investigate. There may also be situations where we have all the data necessary to build a patch, but it has failed to pass our internal testing process for some reason and requires more attention. For example, it may not have run silently as expected, or it may have a dependency not present on our test machines.
Flexera has taken a unique approach to providing an unprecedented volume of patch details by not omitting third-party software titles that do not satisfy all the criteria for an out-of-the-box patch. That is how, on top of over fifteen hundred out-of-the-box patches, we take it further to offer help with over fifteen hundred more. To be precise, 1,614 complete patches and details on 2,035 more. In total (complete and incomplete coverage), the patch data here applies to 1,208 software products across 581 software vendors.
Now that we’ve established what we have, let’s talk about ways to count it.
One title can have a lot of patches. For example, Firefox has dozens of languages and variants for which we offer patches, which essentially patches “Firefox.” Therefore, the number of patches applies to a much smaller number of products.
Some vendors provide a different setup for 32- and 64-bit architectures. And some provide distinct setups both based on language and architecture. For example, Autodesk Inventor has over 50 different setups for this reason.
We also have over 250 Mac patches (267 at this moment). For Mac, the value is all in the awareness of what has been released and the ability to easily obtain it, as the challenge of determining silent command line parameters is not applicable to Mac systems. While SVM provides research and assessment for Mac patches, when it comes to patching, the patches are provided, but cannot be pushed the way they can for Windows systems. However, we have begun to introduce support for patching Mac systems (starting with Intune), so the value of these patches is increasing. Of course, you can always download these patches and distribute using whatever mechanism you have in place for manual Mac management. As a side note, it is possible to publish packages directly to Jamf Pro (formerly Casper) for deployment using AdminStudio.
The number of patches and details provided is impressive, but it is not the most important thing. What is likely of more significance is identifying just what applications we cover that you really care about. We’ve focused on enterprise applications to maximize value, and are not just creating patches for everything under the sun to impress you with big numbers. To provide that insight, we’ve set up a place where those interested in the SVM Vendor Patch Module may verify specific application coverage. Those entries marked with an asterisk are the ones that have an out-of-the-box patch; the others are those I’ve described above as somehow incomplete.
In SVM, you can view the full list of patches (but cannot build/publish them until licensed). They work the same way as SVM handles other patches, so the learning curve is almost nonexistent. For a firsthand look, see the demo in our recorded webinar presentation or watch this very short video below, which offers a much briefer version of the same.
... View more
Sep 05, 2019
08:20 AM
As @RDanailov says, we do provide research on such devices (SVR), we do not have any current plans to assess where these are applicable and require updates the way we do for software on Windows, Mac and RHEL.
... View more
Sep 03, 2019
07:28 AM
1 Kudo
While offering an agent for Suse would not be a significant effort, producing research for the agent to rely upon is. That said, we are weighing which distribution(s) would be highest demand should we expand beyond RHEL, so this feedback is appreciated!
... View more
Aug 22, 2019
02:01 PM
1 Kudo
It appears there is a known issue with upgrading the schema with an earlier version of AdminStudio 2018 as documented here in the Product Knowledge Base. Can you install the latest version of AdminStudio (2019 R2)?
Failing that, there is some help in the documentation you can reference here including a note about required permissions, but I suspect troubleshooting further will require some interaction best handled via a support case. Please open a ticket above, under "Get Support".
... View more
About
Founder of ITNinja (formerly AppDeploy), author, Microsoft MVP and regular speaker on topics related to application and desktop management and security. Check out a portfolio of my work at https://www.bkelly.com
Director, Product Management
Charlotte, NC
Latest posts by bkelly
Subject | Views | Posted |
---|---|---|
123 | Mar 02, 2023 08:48 AM | |
252 | Mar 01, 2023 03:38 PM | |
463 | Feb 28, 2023 08:00 PM | |
223 | Feb 28, 2023 02:21 PM | |
742 | Feb 28, 2023 10:47 AM | |
350 | Feb 15, 2023 07:52 AM | |
348 | Feb 06, 2023 10:44 AM | |
328 | Feb 01, 2023 03:32 PM | |
352 | Jan 26, 2023 08:52 AM | |
712 | Jan 11, 2023 08:32 AM |
Activity Feed
- Got a Kudo for New SBOM Management in Flexera One. Mar 09, 2023 01:01 PM
- Got a Kudo for Re: New SBOM Management in Flexera One. Mar 09, 2023 10:01 AM
- Got a Kudo for New SBOM Management in Flexera One. Mar 09, 2023 09:37 AM
- Got a Kudo for Re: Requesting Additions to the Package Feed Module. Mar 02, 2023 08:49 AM
- Got a Kudo for Re: Requesting Additions to the Package Feed Module. Mar 02, 2023 08:49 AM
- Posted Re: Requesting Additions to the Package Feed Module on AdminStudio Blog. Mar 02, 2023 08:48 AM
- Got a Kudo for Requesting Additions to the Package Feed Module. Mar 01, 2023 11:00 PM
- Posted New Vulnerabilities Menu in IT Flexera One on Flexera One Blog. Mar 01, 2023 03:38 PM
- Got a Kudo for New SBOM Management in Flexera One. Feb 28, 2023 09:46 PM
- Got a Kudo for Re: New SBOM Management in Flexera One. Feb 28, 2023 08:08 PM
- Posted Re: New SBOM Management in Flexera One on Flexera One Blog. Feb 28, 2023 08:00 PM
- Got a Kudo for Re: Package Feed Module - PostgreSQL ODBC (x64) v13.02.0000 source binaries. Feb 28, 2023 07:14 PM
- Posted Re: Package Feed Module - PostgreSQL ODBC (x64) v13.02.0000 source binaries on AdminStudio Forum. Feb 28, 2023 02:21 PM
- Posted New SBOM Management in Flexera One on Flexera One Blog. Feb 28, 2023 10:47 AM
- Got a Kudo for Still Using SVM's Older Web UI?. Feb 21, 2023 04:23 AM
- Got a Kudo for Still Using SVM's Older Web UI?. Feb 15, 2023 07:58 AM
- Posted Still Using SVM's Older Web UI? on Software Vulnerability Management Blog. Feb 15, 2023 07:52 AM
- Got a Kudo for The Critical and Evolving Demands of Software Vulnerability Management. Feb 07, 2023 09:27 AM
- Got a Kudo for The Critical and Evolving Demands of Software Vulnerability Management. Feb 06, 2023 07:09 PM
- Got a Kudo for The Critical and Evolving Demands of Software Vulnerability Management. Feb 06, 2023 11:54 AM