{"id":3737,"date":"2024-04-07T17:19:00","date_gmt":"2024-04-07T21:19:00","guid":{"rendered":"https:\/\/www.tmurgent.com\/TmBlog\/?p=3737"},"modified":"2024-04-08T08:44:41","modified_gmt":"2024-04-08T12:44:41","slug":"a-deep-look-at-application-deployment-with-appventix","status":"publish","type":"post","link":"https:\/\/www.tmurgent.com\/TmBlog\/?p=3737","title":{"rendered":"A deep look at Application Deployment with AppVentiX"},"content":{"rendered":"\n<p>AppVentiX is an alternative third-party product that can be used for Software Distribution in a corporate environment.&nbsp; Known originally as a simple replacement for the App-V Server, it has grown in capabilities, both in the types of packages supported and in different kinds of infrastructures it may be placed into, including both on-prem and in the cloud.&nbsp; &nbsp;In this article, I take a look at the newest version of AppVentiX, version 3.7.25.<\/p>\n\n\n\n<p>AppVentiX takes a simpler approach to application package management than you might be used to.\u2002The typical architecture of most of these systems consists of three tiers: Server, Database, and Client Agents.\u2002AppVentiX simplifies this by eliminating the Database, and allowing their &#8220;server&#8221; software to deployed on either a server or desktop OS.\u2002This makes the solution ideal for smaller organizations, and yet can scale up to larger organizations with Enterprise needs.<\/p>\n\n\n\n<p>The equivalent to the database are a small number of XML files that contains the necessary mappings between packages, users, and\/or machines.\u2002We really do not need a complicated relational database to do this.\u2002The configuration files may be stored on any kind of file storage device, allowing for redundancy or backup as needed.<\/p>\n\n\n\n<p>The &#8220;server&#8221; software is a GUI console called <strong>AppVentiX Central View<\/strong>. This software understands App-V, AppX, MSIX, and AppAttach formatted application packages.\u2002It supports both deployment to both persistent clients as well as non-persistent (pooled VDI) and semi-persistent (RDS and Multi-User OS) scenarios.\u2002Deployment assignments may be to Active Directory OUs or Security Groups, or using Azure AD (Entra).\u2002And both user or machine based assignments are supported.<\/p>\n\n\n\n<p>There is a client agent that is needed on the end-points.\u2002This may be made available as part of the client image, delivered via traditional deployment software, or delivered from Central View itself.\u2002This agent consists of a Windows Service and a GUI for troubleshooting.<\/p>\n\n\n\n<p>AppVentiX uses a &#8220;pull&#8221; methodology rather an a &#8220;push&#8221; one like Configuration Manager or Intune.\u2002This means that the server side does not include a service of any kind.\u2002Upon login, the client will read the configuration share and know what to do.  There is also a cache on the client to handle network disruptions.\u2002<\/p>\n\n\n\n<p>Once packages are initially assigned in Central View, new users are typically assigned to packages by modifying the backing group in AD or Entra Id.<\/p>\n\n\n\n<h2>Storage Setup<\/h2>\n\n\n\n<p>You will need a place for central storage of the packages and for the AppVentiX Central View configuration.<\/p>\n<p>These storages may be in simple file shares, or cloud storage like Azure Files.&nbsp; &nbsp;For this walk-through, I used what the AppVentiX documentation refers to as &#8220;Integrated Authentication&#8221; in a traditional AD environment.<\/p>\n<p>I first created two shares on a file server, one for configuration and another holding the packages.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-3746 aligncenter\" src=\"https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/Folders.png\" alt=\"\" width=\"879\" height=\"353\" srcset=\"https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/Folders.png 879w, https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/Folders-300x120.png 300w, https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/Folders-768x308.png 768w\" sizes=\"auto, (max-width: 879px) 100vw, 879px\" \/><\/p>\n<p>These folders were shared as SMB shares, and certain permissions are needed on the shares (and folders\/files). Central View uses the user login account to access the shares, but the agent service will be using its computer account. While existing OUs or Security Groups could be used, I created new security groups for this purpose:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-3750 aligncenter\" src=\"https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/AD-SecurityGroups3-1024x231.png\" alt=\"\" width=\"750\" height=\"169\" srcset=\"https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/AD-SecurityGroups3-1024x231.png 1024w, https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/AD-SecurityGroups3-300x68.png 300w, https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/AD-SecurityGroups3-768x173.png 768w, https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/AD-SecurityGroups3.png 1266w\" sizes=\"auto, (max-width: 750px) 100vw, 750px\" \/><\/p>\n<p>In addition to these two shared folders, Central View also creates and uses a folder in the local C:\\ProgramData area of the machine it is installed on.&nbsp; You will want to put both that folder, and the two shared folders in your backup plans.<\/p>\n<p>For the configuration share, the computer account for the Central Server, and the computer accounts for any computers that will have the AppVentiX client need write-access. End-user accounts require only read access.&nbsp; Similar permissions for the Package share(s) should also be applied.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-3799 aligncenter\" src=\"https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/Redo_SharePermissions.png\" alt=\"\" width=\"614\" height=\"454\" srcset=\"https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/Redo_SharePermissions.png 614w, https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/Redo_SharePermissions-300x222.png 300w\" sizes=\"auto, (max-width: 614px) 100vw, 614px\" \/><\/p>\n<p>For my setup, I wanted to show a typical scenario of a customer that has an existing App-V package repository that is moving to MSIX for static clients and AppAttach for the dynamic ones, so I have different shared folders for each package type as the packages get migrated over.&nbsp; I also wanted to try out the three different AppAttach formats, VHD, VHDX, and CimFS. (See <a href=\"https:\/\/www.tmurgent.com\/appv\/en\/resources\/report-cards\/129-reportcards\/619-report-card-appattach-2024\">App Attach Report Card for 2024 (tmurgent.com)<\/a> for information on these formats and the performance impacts on this choice), so I decided to use separate folders per package technology. This isn&#8217;t a requirement, just a personal choice.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-3740 aligncenter\" src=\"https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/Folder-Packages.png\" alt=\"\" width=\"967\" height=\"376\" srcset=\"https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/Folder-Packages.png 967w, https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/Folder-Packages-300x117.png 300w, https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/Folder-Packages-768x299.png 768w\" sizes=\"auto, (max-width: 967px) 100vw, 967px\" \/><\/p>\n<p>Although AppVentiX isn&#8217;t specifically designed for multi-site deployments, using DFS replication for both the packages and configuration is possible, assuming that all configuration\/assignment changes would be made at the master site.<\/p>\n\n\n<h2>Installing And Setting up Central View<\/h2>\n<p>The AppVentiX MSI installer is straight-forward.\u00a0 Once installed, you will start Central View.<\/p>\n<h4>Establishing the Base Configuration<\/h4>\n<p>Once you start Central View, it will determine that it hasn&#8217;t yet been configured and take you directly to the place where you set the server share location:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-3800 aligncenter\" src=\"https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/Redo_Configuration.png\" alt=\"\" width=\"973\" height=\"758\" srcset=\"https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/Redo_Configuration.png 973w, https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/Redo_Configuration-300x234.png 300w, https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/Redo_Configuration-768x598.png 768w\" sizes=\"auto, (max-width: 973px) 100vw, 973px\" \/><\/p>\n<p>After saving the configuration, the Central View console will appear.\u00a0\u00a0In the dialog window, you should return to the Configuration Settings to complete some tasks.\u00a0 In the menu above the ribbon, click <em>Configuration and Activity<\/em>, then in the ribbon, click the Settings button.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-3765 aligncenter\" src=\"https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/CongigActivity_1.png\" alt=\"\" width=\"1000\" height=\"511\" srcset=\"https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/CongigActivity_1.png 1000w, https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/CongigActivity_1-300x153.png 300w, https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/CongigActivity_1-768x392.png 768w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/p>\n<p>In the settings dialog you can return to the Configuration Share setting that you previously set, but you should go through the S<em>ettings, Advanced, and License<\/em> menus for potential changes.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-3801 aligncenter\" src=\"https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/Redo_Configuration2-1024x614.png\" alt=\"\" width=\"750\" height=\"450\" srcset=\"https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/Redo_Configuration2-1024x614.png 1024w, https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/Redo_Configuration2-300x180.png 300w, https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/Redo_Configuration2-768x461.png 768w, https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/Redo_Configuration2.png 1294w\" sizes=\"auto, (max-width: 750px) 100vw, 750px\" \/><\/p>\n<p>Here, for example is where you would enable Entra ID and AVD integrations. Click the Save button when done.<\/p>\n<h4>Managing Client Machines<\/h4>\n<p>In the main dialog, return to the <em>Manage Machines<\/em> menu, and in the ribbon click the\u00a0<em>Manage Groups<\/em> button.\u00a0<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-3768 aligncenter\" src=\"https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/MachineGroup1.png\" alt=\"\" width=\"935\" height=\"561\" srcset=\"https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/MachineGroup1.png 935w, https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/MachineGroup1-300x180.png 300w, https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/MachineGroup1-768x461.png 768w\" sizes=\"auto, (max-width: 935px) 100vw, 935px\" \/><\/p>\n<p>Machine groups are how you specify groups of computers that will have the AppVentiX agent installed.\u00a0 You probably want multiple groups that match your package deployment strategies.\u00a0 The configuration settings for a machine group dictate the kinds of packages supported, and shares where the packages will be found.\u00a0 You might also create these groups based on how you intend to assign packages, but publishing is separate if you desire that level of separation for user-based package assignments.<\/p>\n<p>When you add a group, you can choose the machine members from an AD OU or AD Security Group, or from Entra ID.\u00a0 I selected the AD Security Group that is where I&#8217;ve added the computer accounts to any machines that will get the AppVentiX client. You will need to specify the content share (warning, it will &#8220;guess&#8221; that the share is named &#8220;Content&#8221;, so make sure you specify the correct share name! There is also an option to identify the group for fast publishing called pre-cache, but probably don&#8217;t worry about that yet &#8211; get the basics working and you can come back and edit this later.\u00a0 You should specify the share locations for your packages.\u00a0 While I would probably use a subset of the share folders we created earlier for different package types, for this demo I&#8217;m just going to specify the top level share for now, and use assignments to users to pick out the packages and types that are appropriate.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-3802 aligncenter\" src=\"https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/Redo_MachineGroup.png\" alt=\"\" width=\"943\" height=\"567\" srcset=\"https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/Redo_MachineGroup.png 943w, https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/Redo_MachineGroup-300x180.png 300w, https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/Redo_MachineGroup-768x462.png 768w\" sizes=\"auto, (max-width: 943px) 100vw, 943px\" \/><\/p>\n<p>Before saving this new group, you want to also click on the Configure Agent for the selected machine group.\u00a0 Here is an example of how I set the general settings so that I could use a combination of App-V, MSIX, and App Attach. I&#8217;m not using FS Logix in this lab so I left that off and selected the Local profile option on the MSIX tab.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-3769 aligncenter\" src=\"https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/MachineGroup3.png\" alt=\"\" width=\"1024\" height=\"514\" srcset=\"https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/MachineGroup3.png 1024w, https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/MachineGroup3-300x151.png 300w, https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/MachineGroup3-768x386.png 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>On the left are menus for access to additional actions and settings that might be appropriate for your environment.\u00a0 These should be reviewed and possibly changed before clicking on the <em>Done<\/em> button to save all changes.\u00a0 These settings will be passed on to the AppVentix agent on the client machines to implement these policies.\u00a0 The Enable-App-V management, for example, will enable the App-V client service on the device automatically for you.\u00a0 Keep in mind that other App-V settings specified here may be overridden by an GPO configuring the App-V client, but with these settings you might no longer need that GPO.<\/p>\n<p>For this simple test I did not need to make any additional changes other than enabling the management and disabling FsLogix profile management.\u00a0 After clicking the <em>Done<\/em> button, you must click the <em>Save machine group<\/em> button to save your changes. Then you can add additional machine groups or close the <em>Manage Machine Group<\/em>s window.<\/p>\n<h4>Pushing Agents to the Client Machines<\/h4>\n<p>Defining the group does not add the agent to machines in the group automatically.\u00a0 Some organizations will add the agent to the OS image of clients, but here we will use Central View to push the agent to our test changes.<\/p>\n<p>In the main dialog <em>Manage Machines<\/em> view, use the pulldown to select a machine group.\u00a0 If you selected the group to work with both App-V and MSIX, there will be a prompt to select which technology you want to manage right now.\u00a0 In the image below I selected App-V, but that isn&#8217;t important right now as I just want to get the AppVentiX agent pushed to members of the group right now.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-3804 aligncenter\" src=\"https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/Redo_MachineGroupList-1.png\" alt=\"\" width=\"996\" height=\"720\" srcset=\"https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/Redo_MachineGroupList-1.png 996w, https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/Redo_MachineGroupList-1-300x217.png 300w, https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/Redo_MachineGroupList-1-768x555.png 768w\" sizes=\"auto, (max-width: 996px) 100vw, 996px\" \/><\/p>\n<p>On the left side of the dialog, first select the machines in the machine group that you want to push the agent to.\u00a0 You might need to drag the right edge of the list to make the machine names visible.\u00a0 Then, on the right of the ribbon menu, there is a button to push the agent.\u00a0 There is also a button to take you to the folder where you can find the agent installer and additional silent installation information for the agent if you want to use another way to distribute the agent.<\/p>\n<p>Select machines and then click the Push Agent button.\u00a0 If you see the dialog below, the installations were successful.\u00a0 Pushing the agent install does require requisite permissions for PsExec to perform the installation, not unlike Configuration Manager pushing out the SCCM agent.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-3771 aligncenter\" src=\"https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/MachineGroup5.png\" alt=\"\" width=\"614\" height=\"411\" srcset=\"https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/MachineGroup5.png 614w, https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/MachineGroup5-300x201.png 300w\" sizes=\"auto, (max-width: 614px) 100vw, 614px\" \/><\/p>\n<p>When you want to push the agent out, you must click the button at the top that says\u00a0<em>Done<\/em>.\u00a0 It doesn&#8217;t seem obvious to me that this is a button and not a statement!<\/p>\n<p>The display will take you to the Configuration and Activity menu display, where you monitor the agents getting pushed, and troubleshoot if necessary. For example, my initial attempt failed as shown here:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-3783 aligncenter\" src=\"https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/Push1-1024x462.png\" alt=\"\" width=\"750\" height=\"338\" srcset=\"https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/Push1-1024x462.png 1024w, https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/Push1-300x135.png 300w, https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/Push1-768x346.png 768w, https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/Push1.png 1213w\" sizes=\"auto, (max-width: 750px) 100vw, 750px\" \/><\/p>\n<p>Clicking on the Show Errors button provides additional detail:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-3784 aligncenter\" src=\"https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/Push2.png\" alt=\"\" width=\"820\" height=\"349\" srcset=\"https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/Push2.png 820w, https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/Push2-300x128.png 300w, https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/Push2-768x327.png 768w\" sizes=\"auto, (max-width: 820px) 100vw, 820px\" \/><\/p>\n<p>Pushing the agent involves using PsExec to perform a remote command using the admin$ share on the remote device.\u00a0 PsExec has several requirements that might not be present, so you&#8217;ll need to google it and try a few things.\u00a0 This might involve the windows firewall port 445 on the remote device, and also adding the domain account of the Central View user to the local administrator group on the end device.\u00a0 But in my case, it was just an old-fashioned DNS issue, and I couldn&#8217;t ping the client machine by name.<\/p>\n<p>Fixing these things solved this issue for me, but if you are desperate to just get testing you can manually install the agent from the msi that you can now find in the configuration share.<\/p>\n<p>Even though we are working with both App-V and MSIX, there is still only one agent being pushed out.\u00a0 The remote agent will reach out to the configuration share we set up (in Configuration and Activity) to read configuration files to know what to do.<\/p>\n<p><span style=\"font-size: revert; background-color: var(--global--color-background); color: var(--global--color-primary); font-family: var(--global--font-secondary);\">Let&#8217;s look at that share as it stands currently:<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-3772 aligncenter\" src=\"https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/CongigActivity_3.png\" alt=\"\" width=\"840\" height=\"280\" srcset=\"https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/CongigActivity_3.png 840w, https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/CongigActivity_3-300x100.png 300w, https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/CongigActivity_3-768x256.png 768w\" sizes=\"auto, (max-width: 840px) 100vw, 840px\" \/><\/p>\n<p>Here you can see the Agent folder (which is where the agent installer lives), the license file for AppVentiX, and the three xml files that form the &#8220;database&#8221; used by Central View and the agents.\u00a0 Below is a portion of that MachinesGroups file where you can see what we have done so far.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-3806 aligncenter\" src=\"https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/Redo_MachineGroupsXml.png\" alt=\"\" width=\"659\" height=\"634\" srcset=\"https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/Redo_MachineGroupsXml.png 659w, https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/Redo_MachineGroupsXml-300x289.png 300w\" sizes=\"auto, (max-width: 659px) 100vw, 659px\" \/><\/p>\n<p>I would guess that AppVentiX doesn&#8217;t want you manually editing these files!<\/p>\n<h4>Managing and Assigning Content (Packages)<\/h4>\n<p>Now we are ready to assign (publish) packages.\u00a0 Click on the\u00a0<em>Manage Content<\/em> menu on the dialog.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-3775 aligncenter\" src=\"https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/Content1-1024x571.png\" alt=\"\" width=\"750\" height=\"418\" srcset=\"https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/Content1-1024x571.png 1024w, https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/Content1-300x167.png 300w, https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/Content1-768x428.png 768w, https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/Content1.png 1250w\" sizes=\"auto, (max-width: 750px) 100vw, 750px\" \/><\/p>\n<p>In the <em>Actions column <\/em>next to the share, click on the <i>inventory <\/i>(eye) icon to take the initial inventory of packages available for publishing.<\/p>\n<p>Because I have some App Attach packages in the share, I was presented with this dialog:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-3777 aligncenter\" src=\"https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/Content3.png\" alt=\"\" width=\"778\" height=\"358\" srcset=\"https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/Content3.png 778w, https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/Content3-300x138.png 300w, https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/Content3-768x353.png 768w\" sizes=\"auto, (max-width: 778px) 100vw, 778px\" \/><\/p>\n<p>As I am not ready to publish these, I just clicked on the Skip button for now to ignore these.\u00a0 I can always bring them in by clicking the button to refresh the inventory when I need them. The inventory is shown, and from here I can create publishing tasks for the packages.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-3779 aligncenter\" src=\"https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/Content5-1024x536.png\" alt=\"\" width=\"750\" height=\"393\" srcset=\"https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/Content5-1024x536.png 1024w, https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/Content5-300x157.png 300w, https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/Content5-768x402.png 768w, https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/Content5.png 1332w\" sizes=\"auto, (max-width: 750px) 100vw, 750px\" \/><\/p>\n<p>To start with, I just want to create the publishing rule for a single App-V package. I clear the selection list, click that ActivePython package I want to work with and then click the <em>Create<\/em> button for that package in the <em>Publishing Tasks<\/em> column.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-3780 aligncenter\" src=\"https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/Content6.png\" alt=\"\" width=\"605\" height=\"685\" srcset=\"https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/Content6.png 605w, https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/Content6-265x300.png 265w\" sizes=\"auto, (max-width: 605px) 100vw, 605px\" \/><\/p>\n<p>In the dialog I select the AD group for a set of either machines or users that will receive the package.\u00a0 My security group here is a set of users, which is how most organizations want to do application publishing. I also specified the machine group (even though I only have one machine group currently).\u00a0 This allows me to create a different machine group in the future, and publishing is essentially and AND operation between the members of the user and machine groups listed.\u00a0 \u00a0 There are options that you might want for certain environments, but I am OK with the defaults. Be sure to hit that <em>Save publishing Task&#8221;<\/em> at the top of that dialog when done!<\/p>\n<p>I also published the AdobeReader MSIX package, and as you can see the dialog is really the same:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-3781 aligncenter\" src=\"https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/Content7.png\" alt=\"\" width=\"605\" height=\"685\" srcset=\"https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/Content7.png 605w, https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/Content7-265x300.png 265w\" sizes=\"auto, (max-width: 605px) 100vw, 605px\" \/><\/p>\n<h4>Testing As an End-User<\/h4>\n<p>At this point I can log into one of the member computers of my test machine group using one of the logons associated with the user groups.\u00a0 I&#8217;ll select a user that is part of both of those user groups that I used for publishing first.<\/p>\n<p>The agent was configured to perform any publishing tasks upon logon.\u00a0 This means that it checks with the configuration share xml files to determine what needs to be published.<\/p>\n<p>After logging in the publishing occurs, and I can see both the App-V app (Active Python) and MSIX app (Acrobat Reader) present in the start menu.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-3789 aligncenter\" src=\"https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/BothApps-1.png\" alt=\"\" width=\"547\" height=\"441\" srcset=\"https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/BothApps-1.png 547w, https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/BothApps-1-300x242.png 300w\" sizes=\"auto, (max-width: 547px) 100vw, 547px\" \/><\/p>\n<p>Logging in (even on the same computer) using the user account that is only a member of the office users group shows that only the one app was published.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-3788 aligncenter\" src=\"https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/OneApp.png\" alt=\"\" width=\"575\" height=\"207\" srcset=\"https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/OneApp.png 575w, https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/OneApp-300x108.png 300w\" sizes=\"auto, (max-width: 575px) 100vw, 575px\" \/><\/p>\n<h4>More Management<\/h4>\n<p>Returning to the Central View console, you can now look at the additional management capabilities.\u00a0 To do this you first select the Manage Machines menu, then select a machine group to work with.<\/p>\n<p>AppVentiX produces a very low overhead.\u00a0 It never automatically polls clients for information, so you&#8217;ll need to request an inventory, which can be done against a particular client or the entire group.<\/p>\n<p>In the image below, I have requested an inventory of users against our test machine by clicking on the users icon (second icon in the <em>Machine Actions<\/em> column on the left).\u00a0 Because the <em>Active Feature\u00a0<\/em>in the ribbon is set for MSIX, I only see MSIX packages published to those users.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-3808 aligncenter\" src=\"https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/03\/Redo_Deployed_MSIX_Apps-1024x373.png\" alt=\"\" width=\"750\" height=\"273\" srcset=\"https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/03\/Redo_Deployed_MSIX_Apps-1024x373.png 1024w, https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/03\/Redo_Deployed_MSIX_Apps-300x109.png 300w, https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/03\/Redo_Deployed_MSIX_Apps-768x280.png 768w, https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/03\/Redo_Deployed_MSIX_Apps-1536x560.png 1536w, https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/03\/Redo_Deployed_MSIX_Apps.png 1563w\" sizes=\"auto, (max-width: 750px) 100vw, 750px\" \/><\/p>\n<p>If I select App-V for the active features, then I can see the App-V packages.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-3809 aligncenter\" src=\"https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/03\/Redo_Deployed_AppV_Apps-1024x373.png\" alt=\"\" width=\"750\" height=\"273\" srcset=\"https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/03\/Redo_Deployed_AppV_Apps-1024x373.png 1024w, https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/03\/Redo_Deployed_AppV_Apps-300x109.png 300w, https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/03\/Redo_Deployed_AppV_Apps-768x280.png 768w, https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/03\/Redo_Deployed_AppV_Apps-1536x560.png 1536w, https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/03\/Redo_Deployed_AppV_Apps.png 1563w\" sizes=\"auto, (max-width: 750px) 100vw, 750px\" \/><\/p>\n<p>For troubleshooting inventory problems, Click <em>Events<\/em> inventory icon (4th icon in the list) in the <em>Machine Actions<\/em> column.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-3810 aligncenter\" src=\"https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/03\/Redo_ClientEvents-1024x633.png\" alt=\"\" width=\"750\" height=\"464\" srcset=\"https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/03\/Redo_ClientEvents-1024x633.png 1024w, https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/03\/Redo_ClientEvents-300x185.png 300w, https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/03\/Redo_ClientEvents-768x475.png 768w, https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/03\/Redo_ClientEvents-1536x949.png 1536w, https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/03\/Redo_ClientEvents-1568x969.png 1568w, https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/03\/Redo_ClientEvents.png 1579w\" sizes=\"auto, (max-width: 750px) 100vw, 750px\" \/><\/p>\n<h4>Out of the box<\/h4>\n<p>Straight out of the box AppVentix is easy to set up and use.\u00a0 You&#8217;ll need to keep in mind that while you can have multiple administrators if you are careful, it isn&#8217;t built with roll-based administration or backup features to avoid conflict between administrators.<\/p>\n<h4>App Attach<\/h4>\n<p>You remember that I had those App Attach packages? If there are any packages that are CimFs, to import those into the console, you have to start Central View using the Run As Administrator option.\u00a0 Going to the <em>Manage Content<\/em> menu, I clicked the <em>Refresh Inventory<\/em> button in the\u00a0<em>Actions<\/em> column of the content share.\u00a0 It detected all three types of App Attach files that I had in the share (VHD, VHDX, and CIM) and I asked to import them. The VHD and VHDX forms imported just find but there was an issue importing the CIMfs packages.\u00a0<\/p>\n<p>I checked with their support and there was an issue with how those CimFs packages were built; an issue they have a fix for and will be in the next release.\u00a0 So for now I recreated the CimFs packages by converting the original MSIX packages using the feature in AppVentiX Central View (not shown here).\u00a0 Note that if you use the <em>Convert to AppAttach feature\u00a0<\/em>to convert an MSIX package make sure that you convert a non-production copy as they will back-up the MSIX package after converting, taking it away from any users!<\/p>\n<p>I published a few AppAttach packages from all three AppAttach formats. The packages may be shown in the content inventory as seen here after I created a publishing task for the Microsoft-PowerBI-Desktop VHD package to the Python group and Project-Libre to the Office Worker group.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-3812 aligncenter\" src=\"https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/03\/Redo_UpPackages-1024x650.png\" alt=\"\" width=\"750\" height=\"476\" srcset=\"https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/03\/Redo_UpPackages-1024x650.png 1024w, https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/03\/Redo_UpPackages-300x190.png 300w, https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/03\/Redo_UpPackages-768x487.png 768w, https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/03\/Redo_UpPackages-1536x975.png 1536w, https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/03\/Redo_UpPackages-1568x995.png 1568w, https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/03\/Redo_UpPackages.png 1587w\" sizes=\"auto, (max-width: 750px) 100vw, 750px\" \/><\/p>\n<p>Logging back in as User001 (member of both groups), I quickly see that the new apps have both been added to the start menu.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-3794 aligncenter\" src=\"https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/AA_UserMenu.png\" alt=\"\" width=\"567\" height=\"271\" srcset=\"https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/AA_UserMenu.png 567w, https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/02\/AA_UserMenu-300x143.png 300w\" sizes=\"auto, (max-width: 567px) 100vw, 567px\" \/><\/p>\n<p>After also logging in as User002, the user that is not in the Python users group, I returned to the console to look at the published packages from the Central View.\u00a0 Here you can see that User001 has 14 MSIX\/AppAttach packages published while User002 has only 9.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-3813 aligncenter\" src=\"https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/03\/Redo_UpPublished-1024x650.png\" alt=\"\" width=\"750\" height=\"476\" srcset=\"https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/03\/Redo_UpPublished-1024x650.png 1024w, https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/03\/Redo_UpPublished-300x190.png 300w, https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/03\/Redo_UpPublished-768x487.png 768w, https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/03\/Redo_UpPublished-1536x975.png 1536w, https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/03\/Redo_UpPublished-1568x995.png 1568w, https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2024\/03\/Redo_UpPublished.png 1587w\" sizes=\"auto, (max-width: 750px) 100vw, 750px\" \/><\/p>\n<h2>Conclusions<\/h2>\n<p>AppVentiX is designed for simplicity.\u00a0 The features were designed to meet the needs of any organization that wants to deliver applications with minimal administrative requirements.\u00a0 This focus on simplicity means that it doesn&#8217;t come with complex infrastructure requirements.\u00a0 It has great use for smaller organizations, but also for targeted portions of a larger organization such as for managing the apps on Azure Virtual Desktops. The product works on both cloud and on-premises scenarios equally well, which makes it suitable for many organizations.<\/p>\n<p>Once I had the first app published, publishing additional packages is as simple as it would be in any application management system.<\/p>\n<p>The tool has many features built in that I don&#8217;t have time to explore here, but it is clear that this is a vendor that listens to their customer needs and adapts features that allow them to do what they need.\u00a0 Whether you are running up in Azure, where they have features that nobody else has, or just a traditional RDS or VDI implementation in-house, this is a pretty neat tool.<\/p>","protected":false},"excerpt":{"rendered":"<p>AppVentiX is an alternative third-party product that can be used for Software Distribution in a corporate environment.&nbsp; Known originally as a simple replacement for the App-V Server, it has grown in capabilities, both in the types of packages supported and in different kinds of infrastructures it may be placed into, including both on-prem and in&hellip; <a class=\"more-link\" href=\"https:\/\/www.tmurgent.com\/TmBlog\/?p=3737\">Continue reading <span class=\"screen-reader-text\">A deep look at Application Deployment with AppVentiX<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"footnotes":""},"categories":[50],"tags":[7],"class_list":["post-3737","post","type-post","status-publish","format-standard","hentry","category-tools","tag-tools","entry"],"_links":{"self":[{"href":"https:\/\/www.tmurgent.com\/TmBlog\/index.php?rest_route=\/wp\/v2\/posts\/3737","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tmurgent.com\/TmBlog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tmurgent.com\/TmBlog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tmurgent.com\/TmBlog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tmurgent.com\/TmBlog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3737"}],"version-history":[{"count":21,"href":"https:\/\/www.tmurgent.com\/TmBlog\/index.php?rest_route=\/wp\/v2\/posts\/3737\/revisions"}],"predecessor-version":[{"id":3829,"href":"https:\/\/www.tmurgent.com\/TmBlog\/index.php?rest_route=\/wp\/v2\/posts\/3737\/revisions\/3829"}],"wp:attachment":[{"href":"https:\/\/www.tmurgent.com\/TmBlog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3737"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tmurgent.com\/TmBlog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3737"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tmurgent.com\/TmBlog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3737"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}