To Documentation Index

TMEdit  The Ultimate App-V Package Editor

 


AutoUpdatePackage Utility

In addition to the TMEdit GUI interface, the product also includes a command-line utility called AutoUpdatePackage.exe that can make many basic package changes without a GUI.

This is useful in scripting bulk or common changes to packages.

The command takes up to three parameters:

  • /File        A required parameter for the App-V file to be updated, followed by the path to the .AppV file. 
    • /Fixups   Optional for the controlling policy file. If specified it is followed by a path to the fixups.xml file.  If you do not specify the /Fixups parameter it will default to using the fixups.xml located in the current working directory.
  • /Rename An optional flag to indicate the package is to be renamed rather than updated as a new version. If specified, this parameter must be followed by the new PackageName (without any path or .appv).

This policy file allows you to define the types of fixes that you would like to apply. There is a template Fixups.xml file in the install folder to work from.  This file contains documentation on the currently available fixups, but with them all disabled.  Edit and save off a copy of this file for your scenario.  Some common scenarios include:

  • Removing unwanted OS tags which cause the package to not be allowed on Windows 10
  • Removing all Shortcuts, FTAs, and Shell Extensions from packages published via Citrix Storefront, Microsoft Remote App, or other application portal launchers. 
  • RES/Ivanti users that create their own shortcuts are also interested in disabling the shortcut publishing by App-V.
  • Connection Groups require matching package settings for COM and others.
  •  Various forms of package cleanup.

Even using the provided fixups.xml file with all of the fixes disabled, you still get the following:

  • Improved compression of your package.
  • If /Rename is not specified, an updated package version GUIDand string and file is saved in a parallel folder with the _# syntax.  If Rename is specified, the package name is internally updated along with all GUIDs and the version is reset to 0.0.0.1, and the file is saved in a parallel folder using the rename value.

The syntax has been updated in version 1.6 as follows:

AutoUpdatePackage.exe /File \\server\share\apporiginal\apporiginal.appv [/Fixes fixups.xml] [/Rename apprenamed]

 

Here is a quick video that shows how this all works (before the /Rename option was added):

9-minute video showing you all this!

 

Fixups.Xml

The fixups.xml file is shown below (before addition FixShortNames was added). A full sample file is added when the product is installed.  By default, all entries are disabled, so you need to edit this file!

<Fixups>
  <!-- The Fixups file is used as input to AutoUpdatePackage that controls the kinds of changes that should automatically be made
       to the requested App-V package.
      
       Each child element under this element controls one type of possible fixup. Some of these elements support a parameter called DoFix,
       and some a parameter called Remove. This sample file has an element for each, so you'll know which elements need which parameter.
      
       To enable a fixup, set the value of the Remove or DoFix parameter on the element to true.  Setting it to false disables the item. 
       These values are case insensitive.
      
       If a Fixup element is not present in the file, the fixup is disabled by default.
      
       To use this file:
            AutoUpdatePackage -File appvfilename -Fixes fixupfilename
  -->
 
  <!-- FixOSTags: 
          When Remove=true, the fixup will search for any OS deployment restriction tags and remove them from the xml.
          This will allow the package to be deployed to any OS supported by the App-V client (except that packages
          sequenced on a 64-bit OS cannot be deployed to a 32-bit OS).
  -->
 <FixOSTags Remove="false"/>
 
  <!-- FixShortcuts:
          When Remove=true, all shortcuts will be removed from being published. This is often used on packages that are
          deployed using another mechanism to give the user a launch point, such as StoreFrone Published Applications under Citrix,
          or Remote App, or RES/Ivanti.
  -->
  <FixShortcuts Remove="false"/>
 
  <!-- FixFTAs:
          Just like FixShortcuts, but for FTAs.  Note that if the FTA has a Shell Extension, this fix doesn't clear out the Shell Extension
          publishing, so you probably want that fix too.
  -->
 <FixFTAs Remove="false"/>
 
  <!-- FixURLs:
          Just like Shortcuts and FTAs.
  -->
 <FixURLs Remove="false"/>
 
  <!-- FixShellExtensions:
          When Remove=true, all Shell Extensions will be removed from being published.  Often used in conjunction with FixFTAs,
          but some companies use only this and keep the rest of the FTA.
         
          Note that a Shell Extension points to an in-process COM object that, in-spite of your COM settings, always is published
          externally to the package. Unless COM Mode is Integrated with InProcess set to true, this fix will remove the publishing
          of the underlying COM object when the Shell Extension is removed.
  -->
 <FixShellExtensions Remove="false"/>
 
  <!-- FixPolicies:
          Apps may include registry entries under the Policies branches of the registry, which could override GPOs natively deployed.
          Setting Remove=true will search for these entries and remove them frm the virtual registry of the package.
  -->
  <FixPolicies Remove="false"/>
 
  <!-- FixBHOs:
      When Remove=true, BHOs are removed from publishing.  Other forms of browser plug-ins and ActiveX components are not touched.
  -->
  <FixBHOs Remove="false"/>
 
  <!-- FixSxSs
          App-V will, by default, deploy certain VC++ runtime redistributables externally to the package, if the feature wasn't disabled
          when sequencing. 
         
          When Remove=true, the publishing entry for this deployment will be removed.  The actual dlls inside the package are left in the
          package, although they don't work.  You'll need to make sure an appropriate VC++ runtime is deployed externally.
  -->
  <FixSXSs Remove="false"/>
 
  <!-- FixObjects
          The sequencer has a check-box to enable object integration.  When checked, it creates a list of exclusions to
          object name spoofing.  This list is merged with the default list that lives in the App-V client registry.
         
          When that check-box is used in the sequencer, it only creates a list consisting of a single item, a string containing just the
          wild-card ("*") character.  But in the XML we can add specific entries.  This is necessary when the application has several named
          objects, some of which need the spoofing enabled, and some needing it disabled.  In this situation you would skip the wild-card
          entries and just add the ones that can't be spoofed.
         
          To enable this fix add one or more exclusions, you set DoFix to true, and then provide one or more Exclusion sub-entries as shown in the comments below.
          To enable this fix to remove exclusions and go back to the unchecked state, you set DoFix to true, and then do not add any exclusions to the list.
   -->
  <FixObjects DoFix="false">
          <!-- Child nodes form a list of names to exclude from spoofing when DoFix=true
                <Exclusion Value="*"/>
                <Exclusion Value="MyMutex"/>
                <Exclusion Value="MySharedMemory*"/>
          -->
                <Exclusion Value="FreddyKruger"/>
                <Exclusion Value="MyMutex"/>
                <Exclusion Value="MySharedMemory*"/>
      </FixObjects>
 
  <!-- FixCOM:
          Set DoFix=true to make changes to the current package settings. Otherwise the remainder of the parameters are ignored.
         
          Mode may be None, Isolated, or Integrated. 
          If Mode=Integrated, the InProcess/OutofProcess are checked, true means publish, false means don't.
  -->
  <FixCOM DoFix="false" Mode="Integrated" InProcess="false" OutOfProcess="true"/>

  <!-- FixVFS:
          Set DoFix=true to make changes to the current package settings.  Otherwise the allow parameter is ignored.
         
          Allow may be true or false.
  -->
  <FixVFS DoFix="false" Allow="true"/>


  <!-- FixCleanupInstallerCache:
          Set DoFix=true to make changes to the current package settings.  Otherwise the allow parameter is ignored.
          Cleans up files in the Windows Installer Cache as long as they are not referenced.
          Allow may be true or false.
  -->
  <FixCleanupInstallerCache DoFix="false"/>


  <!-- FixCleanupLogs:
          Set DoFix=true to make changes to the current package settings.  Otherwise the allow parameter is ignored.
          Removes certain log files, such as NGEN logs.
          Allow may be true or false.
  -->
  <FixCleanupLogs DoFix="false"/>


  <!-- FixCleanupWMI:
          Set DoFix=true to make changes to the current package settings.  Otherwise the allow parameter is ignored.
          Removes WMI flotsam.
          Allow may be true or false.
  -->
  <FixCleanupWMI DoFix="false"/>

 
  <!-- FixCleanupFiles:
          Set DoFix=true to make changes to the current package settings.  Otherwise the allow parameter is ignored.
          Removes commonly unwanted files.  The standard list to look for is in the HKCU registry for TMEdit. You may enhance that list if desired.
          Allow may be true or false.
  -->
  <FixCleanupFiles DoFix="false"/>


  <!-- FixCleanupRegistry:
          Set DoFix=true to make changes to the current package settings.  Otherwise the allow parameter is ignored.
          Removes commonly unwanted Registry items.  The standard list to look for is in the HKCU registry for TMEdit. You may enhance that list if desired.
          Allow may be true or false.
  -->
  <FixCleanupRegistry DoFix="false"/>

</Fixups>