locked
.PKG File Mechanism RRS feed

  • Question

  • Hi all,

    Can anyone here explain the GlblVol_sftfs_v1_<USERSID>.pkg mechanism?

    As per a discussion here (http://www.softgridguru.com/viewtopic.php?t=2783), I too am a little perplexed by the purpose of the GlblVol_sftfs_v1_<USERSID>.pkg files as I'm experiencing similar symptoms to those discussed and was wondering if anyone has a better understanding on what goes in there and why?

     

    Cheers..

     

     

    Wednesday, February 20, 2008 2:38 PM

Answers

  • This is far from intuitive, but the following table should help explain the differences between the four file system volumes that are used to manage virtual application package state.

     

    Package

    Location

    Description

    Per System

    Global Package Volume

    \Users\Public\Documents\SoftGrid Client\AppFS Storage\<Pkg+GUID>\GlblVol_sftfs_v1_S-1-5-20.pkg

     

    Contains any application-specific data that is modified by a system process.  The well-known SID for system is appended to the volume.  In SoftGrid 4.0 and 4.1, this volume was used for all modified application data; in 4.2 and 4.5 modifications are separated into those made by system processes such as the Listener, and those made by user application processes.  User modifications go instead to the Application Data Isolation Volume.  The global package volume also contains the virtual environment configuration for system processes.

    Global User Volume

    \Users\Public\Documents\SoftGrid Client\

    AppFS Storage\<Pkg+GUID>\UsrVol_sftfs_v1.pkg

     

    Contains new or modified user-specific data from a system process that is not associated with a specific user context but is associated with a specific package.

    Per User

    Application Data Isolation Volume

    \Users\Public\Documents\SoftGrid Client\AppFS Storage\<Pkg+GUID>\GlblVol_sftfs_v1_<SID>.pkg

     

    Contains application-specific files that are modified by any user process in the virtual environment.  The SID of the user is appended to the volume name to uniquely identify it.

    User Package Volume

    \Users\<User>\AppData\Roaming\ SoftGrid Client\<Pkg+GUID>\ UsrlVol_sftfs_v1.pkg

     

    Contains user-specific files that are modified—or new files that are created— by any user process in the virtual environment.  This volume also contains the virtual environment configuration as modified by the user.

     

    The state management is different in 4.5 than in prior releases to provide better isolation between users as well as application packages.  If my session is accepted, I'll be covering this and many other 'behind the scenes' Microsoft Application Virtualization topics at TechEd.

     

    /Chris

     

     

    Thursday, February 21, 2008 3:02 AM

All replies

  • This is far from intuitive, but the following table should help explain the differences between the four file system volumes that are used to manage virtual application package state.

     

    Package

    Location

    Description

    Per System

    Global Package Volume

    \Users\Public\Documents\SoftGrid Client\AppFS Storage\<Pkg+GUID>\GlblVol_sftfs_v1_S-1-5-20.pkg

     

    Contains any application-specific data that is modified by a system process.  The well-known SID for system is appended to the volume.  In SoftGrid 4.0 and 4.1, this volume was used for all modified application data; in 4.2 and 4.5 modifications are separated into those made by system processes such as the Listener, and those made by user application processes.  User modifications go instead to the Application Data Isolation Volume.  The global package volume also contains the virtual environment configuration for system processes.

    Global User Volume

    \Users\Public\Documents\SoftGrid Client\

    AppFS Storage\<Pkg+GUID>\UsrVol_sftfs_v1.pkg

     

    Contains new or modified user-specific data from a system process that is not associated with a specific user context but is associated with a specific package.

    Per User

    Application Data Isolation Volume

    \Users\Public\Documents\SoftGrid Client\AppFS Storage\<Pkg+GUID>\GlblVol_sftfs_v1_<SID>.pkg

     

    Contains application-specific files that are modified by any user process in the virtual environment.  The SID of the user is appended to the volume name to uniquely identify it.

    User Package Volume

    \Users\<User>\AppData\Roaming\ SoftGrid Client\<Pkg+GUID>\ UsrlVol_sftfs_v1.pkg

     

    Contains user-specific files that are modified—or new files that are created— by any user process in the virtual environment.  This volume also contains the virtual environment configuration as modified by the user.

     

    The state management is different in 4.5 than in prior releases to provide better isolation between users as well as application packages.  If my session is accepted, I'll be covering this and many other 'behind the scenes' Microsoft Application Virtualization topics at TechEd.

     

    /Chris

     

     

    Thursday, February 21, 2008 3:02 AM
  • Chris,

     

    Thanks, that's very enlightening to know even though the mechanism just got more complex than before :-) Why hasn't this been previously documented in any any KB or release notes?

     

    br,

    Kalle

     

    Thursday, February 21, 2008 8:21 AM
    Moderator
  • Hi Chris,

     

    That's excellent info, thanks! 

     

    What I still don't understand though is why does the 'Per USER Application Data Isolation Volume' file get stored in the GLOBALdatadirectory which is held per MACHINE?

     

    This means that a per user change made by a system process is non persistent across different TS/Citrix Sessions..

     

    Cheers,

    Danny

     

     

     

    Thursday, February 21, 2008 8:27 AM
  • The partitioning of data approximates the behavior of locally installed applications where application data is machine specific and user data roams with the user.

     

    You are correct that a per-user change made by a system process would be machine-specific.  Typically, such activity is intended to be used by those same system processes on behalf the user only on the system, so the result will be as expected.  In practice, this is a rare event: the select system processes given access to package data do not modify it.

     

    /Chris

     

    Thursday, February 21, 2008 12:29 PM
  • Hi Chris,

     

    Thanks for the additional clarification, but given that I've got an app where user info is being recorded into the GLB user pkg file and is therefore not roaming, what (apart from reverting to an earlier version of SoftGrid) are my options?

     

    I've been trying to come up with a way to reproduce the users' changes via pre-launch script, but am not having a lot of luck figuring out where these settings are stored.  What would be really useful at this point would be a nice ".pkg explorer" tool!? 

     

    Cheers,

    Danny

    Monday, February 25, 2008 11:48 AM
  • Chris,

     

    Thanks for the info so far.  In testing this with a custom app built to verify your table, I am finding different results.  Part of the confusion may lay in what is a "system" process, but parts may well be things not clearly explained to us yet.

     

    The test applicaiton I built consists of a user-mode component plus a service component running as a system process.

    When running the application on a client:

    the user-mode component writes to:

    A) an user_data file 

    B) a app_data file 

    C) to the registry. 

    the service writes to :

    D) an user_data file

    E) a app_data file

    F) to the registry.

    (All are different files and registry locations using patterns that can be detected in the pkg files). 

    My results on TS clients are below (Unfortunately I could not find a 4.1.0 TS client to test with)

     

     

    4.0.0.302:

    ...\Shared Documents\SoftGrid Client\AppFS Storage\<Pkg+GUID>\GlblVol_sftfs_v1.pkg                       B E

    ...\Shared Documents\SoftGrid Client\AppFS Storage\<Pkg+GUID>\UsrVol_sftfs_v1.pkg

    ...\User\APP Data\SoftGrid Client\SoftGrid Client\<Pkg+GUID>\UsrVol_sftfs_v1.pkg                              A C D F

     

    4.1.1.302,   4.1.2.21,   4,1,3,15

    ...\Shared Documents\SoftGrid Client\AppFS Storage\<Pkg+GUID>\GlblVol_sftfs_v1_S-1-5-21-....pkg     B E

    ...\Shared Documents\SoftGrid Client\AppFS Storage\<Pkg+GUID>\GlblVol_sftfs_v1_S-1-5-20.pkg

    ...\Shared Documents\SoftGrid Client\AppFS Storage\<Pkg+GUID>\UsrVol_sftfs_v1.pkg

    ...\User\APP Data\SoftGrid Client\SoftGrid Client\<Pkg+GUID>\UsrVol_sftfs_v1.pkg                              A C D F

    [NOTE: A-1-5-20 is the well known sid for "network service".  S-1-5-21-... is a user specific SID)

     

    4.5 Beta Code

    ...\Shared Documents\SoftGrid Client\AppFS Storage\<Pkg+GUID>\GlblVol_sftfs_v1_S-1-5-21-....pkg     B E

    ...\Shared Documents\SoftGrid Client\AppFS Storage\<Pkg+GUID>\GlblVol_sftfs_v1_S-1-5-20.pkg        

    ...\Shared Documents\SoftGrid Client\AppFS Storage\<Pkg+GUID>\UsrVol_sftfs_v1.pkg                        F

    ...\User\APP Data\SoftGrid Client\SoftGrid Client\<Pkg+GUID>\UsrVol_sftfs_v1.pkg                              A C D

     

     

     

    So my first question is what designates a "system" process for these purposes?  My second question is how to rationalize these results against your table? 

     

    The terminaology used is in the table is vague enough that I cannot be sure, but I don't believe these reults match the table.  Files marked as "application" (B&E) continue to be written to a pkg in the shared documents area no matter who wrote them.  The change in 4.5 (again, I didn't test 4.2 as we are only concerned with TS deployements that have multiple users, and that may roam) seems to be with a system process writing to the registry.  I equate this with text in the table talking about the "virtual environment" space and have determined that the user application and the service do indeed (in 4.5) see different virtual registries. 

     

    In reality, I cannot justify moving F into the shared area without also moving C, although my preference would be that all of A-F end up in the user appdata folder!

    Wednesday, April 2, 2008 7:35 PM
    Moderator
  • Tim, hopefully I can bump this thread up and maybe we can both get some answers. 

     

    My question is:  What is the logic SoftGrid uses to decide which files don't go into the PKG volumes at all.  For example; if I were to create a new word document and save it to My Documents that would not go into a PKG volume; correct?  How is that exclusion being determined?  File extension?  Folder?  Drive? 

     

    If my word document is being saved to a PKG volume (which Chris's chart seems to imply) then what happens when I uninstall the agent?  Wouldn't my documents all dissapear?

     

    Using Altiris SVS the packaging engineer must specifically define these exclusions.  In SoftGrid, a little bit more voodoo seems to be involved; because it seems to always magically work even though I haven't manually defined any information.

     

    In short; what stays in the bubble; and what gets kicked out?

     

    Thanks!

    Tuesday, August 26, 2008 11:18 PM
  • This part, I can answer.

     

    The answer lies in the virtual file system, and where you decide to put your document.  If you decide to write your document to a folder not mapped, for example your "My Documents" folder, then it stays outside of the PKG and will be written to the underlying system.  If you write to an area covered, say Program Files\Microsoft\Office\... then it will go into the PKG.

     

    So when you sequence you have tremendous control over this.  Fortunately, for the most part we don't need to worry about it, because the system "does the right thing".  In particular, the sequencer has a large number of excusion paths (you can see these in the sequencer options menu).  These are areas that even if the sequencer detects you writing to, it will not capture inside the package nor ad a VFS mapping.  So your %TEMP% folder is an obvious example, but you can see quite a few in there, including your My Documents folder.  You can add to this list if needed.  You can also manually create mappings in the VFS if you like in the sequence editor.  I say "can", but I have never had to do so for any reason.  Although it isn't always easy to figure out exactly what is going on, the magic is that the sequencer usually does the right thing for us.

     

    Chris's chart assumes that the file is being captured, and if so tries to address where it will be stored.  This detail is not of crucial importance, unless you have users with roaming profiles, either via terminal services or "hot desking".

     

    Tuesday, August 26, 2008 11:48 PM
    Moderator
  • Thanks for providing some clarity, although now I have more questions!

     

    You mentioned a list of mapped folders (is this the VFS tab?) and also a list of excluded folders (found this one, but why isn't the desktop on this list by default?).  What about those that aren't on either list?  Below is my interpretation, but I hope you can validate that I have this right.

    • If I save a document to a folder on the "Mapped" list, then the doc DOES go into the PKG
    • If I save a document to a folder on the "Mapped" list AND on the "exclusion" list, it DOES NOT go into the PKG because the exclusion list exists mainly to override the "Mapped" list
    • If I save a document to any location not mentioned on either list, it DOES NOT go into the PKG.

    For example; I work in software packaging and thus have god rights to my PC.  I also have two hard drives and a total of 4 partitions.  I frequently save documents to E:\MySharedFiles and map this folder on my other testing workstations for sharing files.  If I save a PDF from a virtualized Adobe Acrobat to this folder, it should stay out of the PKG volume because this folder was not described in the sequenced package anywhere.

     

    Correct?

     

    Last follow up question: Is it possible to build exclusions of file extensions instead of folders?  For example; I might want to exclude all .PDF files even if it was saved to C:\program files\Adobe\

     

    Thanks again!

    Wednesday, August 27, 2008 6:10 PM
  • 1. Yes.  mapped folders = VFS tab

    2. Desktop not included because sequencer needs to catch shortcuts planted there.

    3. "What about those that aren't on either list"?  They are not virtualized.  User writes there, it passes through to system. 

     

    On second bullet, if the folder is excluded, it won't show up in the VFS mapped list, but the result is it doesn't go into the pkg.

     

    So ultimately your example paragraph is correct.  Files saved to "normal" places for document oriented programs *should* automatically not get saved in the virtual pkg unless it is a very poorly wriiten application or the person sequencing makes a mistake by trying to override what the sequencer does.

     

    Final question:  No. (Of course, I wouldn't want a user writing to that location anyway).

     

    Wednesday, August 27, 2008 9:28 PM
    Moderator
  • Just my 2c's worth:

     

    Also if you have mapped folder (in VFS) which is semi-virtualized, new files to those locations goes, IIRC, to the real filesystem. Semi-virtualized folders (gray folders in VFS tab) - as opposed to fully virtualized (in yellow in VFS tab) - are ones that gets virtualized on top of real filesystem like full ones but depend on the existence of that same folder on the underlying filesystem.

     

    /Kalle

    Thursday, August 28, 2008 8:35 AM
    Moderator
  • Thanks again, this is helpful.  It's still a little confusing that the sequencing and end user exclusion lists are one and the same.  The desktop is my big concern.  I want Desktop changes to be virtualized during sequencing (such as shortcuts), but I don't want desktop changes made by the end user to go into the PKG file (such as new word documents). 

     

    Note: I see now that the desktop is not added to the Mapped List (VFS tab); which is why it doesn't need to appear on the exclusion list.

     

    I agree that I don't want my users to save to c:\program files\Adobe, but I also don't want my packaging team to be held responsible if an important (but misplaced) document dissapears.

     

    thanks again!

    Friday, August 29, 2008 5:46 PM
  •  KHilker wrote:

    Thanks again, this is helpful.  It's still a little confusing that the sequencing and end user exclusion lists are one and the same.  The desktop is my big concern.  I want Desktop changes to be virtualized during sequencing (such as shortcuts), but I don't want desktop changes made by the end user to go into the PKG file (such as new word documents). 

     

    It indeed is little bit confusing, and actually if you think about it, there even isn't a concept of end user exclusion list at all! It's just VFS information that drives the client's decision..

     

    br,

    Kalle

    Wednesday, September 10, 2008 9:10 AM
    Moderator
  •  ksaunam wrote:

    It indeed is little bit confusing, and actually if you think about it, there even isn't a concept of end user exclusion list at all! It's just VFS information that drives the client's decision..

    Maybe I'm just not taking enough time to re-read all this carefully enough again, but I think that the OSD syntax includes the ability to specify exclusions.  The intent is to cary extra sequencing exclusions to the client, but I guess there is no reason you can't edit the OSD to add/remove items.  Not that I have ever had a case where I needed to do that.

    Wednesday, September 10, 2008 11:39 AM
    Moderator
  • Although this is now quite an old thread, hopefully someone can still pick it up. I do not think that there was a clear enough answer to the original question and in particular to Tim's findings while experimenting with a custom app.
    Has there been more clarity since last September, have MS published some documentation or a kb which would put an end to my agonizing over the question of what exactly is being written to which .PKG file?

    cheers

    Tuesday, December 8, 2009 11:23 AM