If you are like us, using Microsoft AppV servers doesn't work in your environment because the software is deployed per user and not per computer. At our school district, our teachers sometimes use 6 or more machines again and our licensing does not allow for you to install a piece of software on all 6 computers. Plus, we have lab environments where the software must for class and don't want it following a student to the library computers.
Purely offline mode using the msi installers
To install from msi file, the msi file needs to be on the local C drive. Microsoft's msi installer tries to use the system account to actually load the package and that account will not have access to your network share. If you use Altiris packages to deploy, this is done for you. If you use a UNC path, you'll have to write a small cmd script to copy first then install. Make sure you have the "online" registry set to 0 so that the client doesn't try to check for updates when the application is launched. If it does, it will fail with an access denied error unless you leave the source files on the C drive and the currently logged on user has read access to them.
Other registry keys for offline mode on the client. Note that you have to restart the "Application Virtualization Client" service after making changes or reboot your computer.
- hklm\software\microsoft\softgrid\4.5\client\network\AllowDisconnectedOperation -> 1
- hklm\software\microsoft\softgrid\4.5\client\network\DOTimeoutMinutes -> 999999999
- hklm\software\microsoft\softgrid\4.5\client\network\LimitDisconnectedOperation -> 0
- hklm\software\microsoft\softgrid\4.5\client\network\Online -> 0
- hklm\software\microsoft\softgrid\4.5\client\configuration\AllowIndependentFileStreaming -> 1
- hklm\software\microsoft\softgrid\4.5\client\
The msi file is the only way to add a package to a machine if the "Online" registry key is set to 0. Both sftmime.exe and sfttray.exe will error out saying that they cannot import when in the client is offline.
The up side to this method is that it lends itself to the Altirs package deployment method.
The down side is that you have to copy the entire installation source to the C drive before installing, increasing install time as well as forging any streaming or "load it later" options.
Installing using msi using an Altiris Package
Should you be using Altiris packages for deployment, your package should look like this.

Since Altiris packages automatically copies the entire package to the local C drive before running the install command, everything should be in place for the package to install. The install command should look like this and would go directly in the "command line" field in the Altiris software package.
msiexec /i "EMS Enterprise 6.msi" /q
If all goes well, it should publish shortcuts and automatically load the AppV package. It's up to you if you want Altiris to delete the local copy of the installation package immediately after installation.
Installing using msi using an UNC Path
In this version, your installation source should look like this.

Note that there are two command line scripts added to the path. They are handy if you are on site and just want to double click to install rather than using the Altiris console. They are also required because you need multple lines of code to accomplish the install. This is the contents of "Publish EMS 6.cmd"
xcopy /y /i /e "\\ccpxe\content\EMS Enterprise 6" "%temp%\EMS Enterprise 6"
if ERRORLEVEL 1 exit %ERRORLVEL%
msiexec /i "%temp%\EMS Enterprise 6\EMS Enterprise 6.msi" /q
if ERRORLEVEL 1 exit %ERRORLVEL%
rd /s /q "%temp%\EMS Enterprise 6"
The Altiris command line should be \\ccpxe\content\EMS Enterprise 6\Publish EMS 6.cmd
Note that you do not need to put quotes around this command line as Altiris will account for the spaces. Be sure to run this command with an account that has access to the UNC path. This is set either in the advanced section of the task that does the software install or inside the managed software delivery policy.
Removal of AppV application using MSI
While it's possible to remove a package using sfttray.exe,sftmime.exe or the console, this will leave registry keys left over in HKLM\software\microsoft\windows\currentversion\uninstall. If you then try to reinstall the application, it will ask if you want to repair or remove the application since the msi bits are still there.
So if you install using msi, make sure you remove using msi as well. This command is the same for both Altiris packages and UNC installation. You do not need a cmd script since there is only one line of code, but I like to make one anyway for ease of removal if I'm at a computer and not at the console.
msiexec /x {6238BB22-D63E-4C9C-8F7F-8CEA22BC1BD8} /q
Online mode via UNC path (preferably DFS)
In this model, you don't need any AppV servers (streaming or management). If you do it this way, You can leave the client in online mode and it can check for updates as any user that needs to run the application. In addition, you don't have to load the software, you can choose to just add the package which makes shortcuts but doesn't download the app till someone actually tries to run it. They get a nice progress bar and they won't have to wait for this to happen next time. If you have machines with only 80GB drives like we do, this can be a space saver as it won't load programs that nobody has clicked on. It should also install packages a little faster as it can install while downloading unlike the msi method where you have to download first, then install.
The trick is to make yourself a UNC path that has read only rights for "authenticated users". I also chose to make the share path hidden by adding a $ to the end of the share name. \\ccpxe\content$ You cannot accomplish this by having your content share on an "administrator only" share because the app will fail on checking for updates when run as a user that cannot access the UNC path.
Adding packages
Below is a command script that will install a package and load it immediately. The load part is optional as the add package part will add shortcuts and the AppV agent will load the package at the time a users clicks the shortcut. I recommend that you place this command script inside the source folder for the package. "\\ccpxe\content\EMS Enterprise 6\Install EMS Enterprise 6.cmd" and have the Altiris install command line point to it and run with credentials that can access the share. See my other article of using Deployment Solution with DFS instead of the built in package system. https://www-secure.symantec.com/connect/articles/altiris-deployment-solution-71-microsoft-dfs-distributed-file-system
sftmime add package:"EMS Enterprise 6" /manifest "\\\\ccpxe\\content$\\EMS Enterprise 6\\EMS Enterprise 6_manifest.xml" /global /console
if ERRORLEVEL 1 exit %ERRORLEVEL%
sftmime load package:"EMS Enterprise 6" /console
Note that the manifest path needs to to be escaped so the number of backslashes needs to be doubled.
Altiris Detection Rules and AppV
There is a registry key hklm\software\microsoft\softgrid\4.5\client\applications that is created when you add a package which works great for a detection rule.
The smart rule "Registry Key Exists" is one of the simplest you can use for this.

Note that if you use the stand alone msi method it will add an entry in HKLM\software\microsoft\windows\currentversion\uninstall which you can also use with detection rules. The MSI method will also create the aformetioned keys as well so I'd recommand using that for your detection rules.
Remove AppV Package
Like with the install command, make an uninstall command script file in the package directory and link that in Altiris as the uninstall command. Since it is only one line of code, you could put it directly in Altiris and tell it that no package is required. I simply like to have it available if I'm at the computer and do not have access to the Altiris console.
I would like to mention that if the program is in use when you try to remove it, AppV will error out. There is no known way to get around this short of adding some taskkill.exe commands to kill the running application.
\\ccpxe\content\EMS Enterprise 6\Uninstall EMS Enterprise 6.cmd
Above is what you enter into the Altiris command line. You do not need quotes as Altiris will account for the spaces. Below is the contents of "Remove EMS 6.cmd" although it could be used directly as the Altiris command line.
sftmime delete package:"EMS Enterprise 6"
Streaming packages using AppV Streaming Server but not Management Server
Perhaps someday we'll upgrade to using streaming servers. In the future, since we are using our site servers as DFS servers, it might be possible to write a registry key that uses the Altiris token %PACKAGESERVER% to direct the client to the correct streaming server. Too bad it won't have an automatic redirect if that server goes down like DFS does.