The Kinetic Jump site navigation header requires JavaScript to be enabled and the latest version of the Macromedia Flash Player. If you are you using a browser with JavaScript disabled please enable it now. Otherwise, please update your version of the free Flash Player by downloading here.

Welcome Guest Search | Active Topics | Log In | Register

Global Assembly Cache Actions Options
brianh
#1 Posted : Thursday, June 28, 2007 9:24:56 AM
Rank: Administration
Groups: Member, Administration

Joined: 5/24/2007
Posts: 362
Location: Minnesota
Attached is an action assembly that you can use to add and remove assemblies from the global assembly cache from within an AppLife Update action list update.

If you use these actions along with an MSI to manage assemblies in the Gac, then reference counting will not be propertly maintained. We recommend that you use one method or the other.

To add the actions to your project, place both assemblies in a folder and add the action assembly to your project.

UPDATE
The actions have been modified to support the expansion features of AppLife Update version 1.1. Download the new version here

Kjs.AppLife.Update.GacActions.1.1.zip
File Attachment(s):
Kjs.AppLife.Update.GacActions.zip (48kb) downloaded 24 time(s).
Brian Haas
Kinetic Jump Software
jorgerubio
#2 Posted : Tuesday, September 18, 2007 2:53:23 PM
Rank: Advanced Member
Groups: Member

Joined: 9/18/2007
Posts: 31
When the update is about to apply the uninstalling in the GAC i get this error:

System.InvalidOperationException was unhandled
Message="Error trying to reflect the type 'Kjs.AppLife.Update.GacActions.UninstallGacAssemblyAction'."
Source="System.Xml"
StackTrace:
en System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping(TypeModel model, String ns, ImportContext context, String dataType, XmlAttributes a, Boolean repeats, Boolean openModel)
en System.Xml.Serialization.XmlReflectionImporter.ImportElement(TypeModel model, XmlRootAttribute root, String defaultNamespace)
en System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping(Type type, XmlRootAttribute root, String defaultNamespace)
en System.Xml.Serialization.XmlSerializer..ctor(Type type, XmlAttributeOverrides overrides, Type[] extraTypes, XmlRootAttribute root, String defaultNamespace, String location, Evidence evidence)
en System.Xml.Serialization.XmlSerializer..ctor(Type type, XmlAttributeOverrides overrides, Type[] extraTypes, XmlRootAttribute root, String defaultNamespace)
en Kjs.AppLife.Update.Engine.j.a(Type A_0)
en Kjs.AppLife.Update.Engine.j.a(XmlReader A_0, Type A_1, String A_2)
en Kjs.AppLife.Update.Engine.j.a(XmlReader A_0, Boolean A_1, String& A_2)
en Kjs.AppLife.Update.Engine.j.a(XmlReader A_0)
en Kjs.AppLife.Update.Engine.k.a(Byte[] A_0)
en Kjs.AppLife.Update.Engine.k.k()
en Kjs.AppLife.Update.Engine.UI.l.a(Object A_0)
en System.Threading._ThreadPoolWaitCallback.WaitCallback_Context(Object state)
en System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
en System.Threading._ThreadPoolWaitCallback.PerformWaitCallback(Object state)


Could it be that i've installed wrong the DLL, i just add the 'Kjs.AppLife.Update.GacActions.dll' to Custom action in my proyect. But i don't know what to do with Kjs.AppLife.Update.GacActions.Design.dll

Regards
jorgerubio
#3 Posted : Tuesday, September 18, 2007 7:34:39 PM
Rank: Advanced Member
Groups: Member

Joined: 9/18/2007
Posts: 31
Do you have any information on this issue?

best regards
brianh
#4 Posted : Wednesday, September 19, 2007 7:53:44 AM
Rank: Administration
Groups: Member, Administration

Joined: 5/24/2007
Posts: 362
Location: Minnesota
GAC ACTIONS UPDATE

The GAC actions previously posted had a referenced dependency on version 1.0.0.13 of the AppLife Update Engine. Because of this, they did not work with released version 1.0.0.14. We have removed this dependency and have reposted the actions. These new actions will work properly with all released versions of AppLife Update.
Brian Haas
Kinetic Jump Software
brianh
#5 Posted : Wednesday, September 19, 2007 8:00:41 AM
Rank: Administration
Groups: Member, Administration

Joined: 5/24/2007
Posts: 362
Location: Minnesota
jorgerubio,

The Kjs.AppLife.Update.GacActions.Design.dll assembly provides the Make Update editor user interface and validation rules for the Gac actions. This assembly should be placed in the same directory as the GacActions assembly. It is needed only for defining and building the update and is not included with the built update package.
Brian Haas
Kinetic Jump Software
jorgerubio
#6 Posted : Wednesday, September 26, 2007 8:18:15 AM
Rank: Advanced Member
Groups: Member

Joined: 9/18/2007
Posts: 31
This GAC actions DLLs seems to behave a little erractic, or maybe i'm doing something wrong.

i put these actions:

Add and replace File (The new DLL)
Uninstall from GAC (The old DLL)
Install from GAC (The already downloaded new DLL)

I'm working with the same Version DLL (the version is handle in the surrogate program) and same name.

At last i check and the last two are not made; in the log i see just the Action of
Uninstalling (Eventho it does not uninstall) but i don't see the actions where installs the new one and no errors.

Do i need to put in GAC "Kjs.AppLife.Update.GacActions.dll" on installation?

Could you explain the options in "reference type" in the Gac action


Regards

adamh
#7 Posted : Thursday, September 27, 2007 4:44:52 AM
Rank: Administration
Groups: Member, Administration

Joined: 7/12/2007
Posts: 17
Location: Michigan
Each assembly in the global assembly cache can have multiple references associated with it. When the assembly is uninstalled, a reference is provided and matched against the existing references for the assembly. The assembly will not be removed from the GAC until it has been uninstalled by all of its references.

If you specified a reference in the Install GAC Assembly action, you will need to specify the same reference in the Uninstall GAC Assembly action, or the assembly will not be removed from the GAC because it will still have a reference.

The reference types work as follows:

  • Installed Program Key - The reference is the registry key used for an application that appears in Add/Remove Programs. The application will generally be the one that requires the GAC assembly.
  • Program File Path - The reference is the path to a program (EXE) on the client machine. The program will generally be the one that requires the GAC assembly.
  • Text Value - The reference is simply some text.
  • None - No reference is associated with the assembly.

    If an assembly is referenced using the Installed Program Key or Program File Path reference types, the GAC will check to see that the program or registry key still exists when another reference is removed; if the program or registry key is gone, that reference will automatically be removed.

    For example:

    1. Assembly Bar.dll is installed in the GAC using the Program File Path reference <Application Directory>\Foo.exe.
    2. Assembly Bar.dll is installed again in the GAC using the Program File Path reference <Application Directory>\Baz.exe.
    3. Assembly Bar.dll is uninstalled using the Program File Path reference <Application Directory>\Baz.exe.
    3a. If Foo.exe still exists, Bar.dll remains in the GAC, because the original reference to Foo.exe still exists.
    3b. If Foo.exe has been deleted or renamed, the reference to Foo.exe is removed Bar.dll is removed from the GAC.
    Either way, the reference to Baz.exe is removed from the GAC.

    There is one additional reference type that is used by Windows Installer. The GAC actions do not support this reference type. If the assembly was placed in the GAC by Windows Installer, it cannot be removed using the Uninstall GAC Assembly action; you must use an MSI to update the assembly.
    If you used an Install GAC Assembly action to install the assembly, make sure your Uninstall GAC Assembly action is using the same reference that was used to install the assembly.
    Adam Hill
    Kinetic Jump Software
  • jorgerubio
    #8 Posted : Tuesday, October 02, 2007 7:05:43 AM
    Rank: Advanced Member
    Groups: Member

    Joined: 9/18/2007
    Posts: 31
    Thanks very much for you explanation mr Adam, it helped a lot.

    Now i would like to ask if your new build of Applife is available, i was told that in october first you will release a new version where you can perform Silent updates, which is exacly what i want to implement in my proyect and is not implemented in the release of 26 of june.

    Regards

    Jorge
    brianh
    #9 Posted : Tuesday, October 02, 2007 8:05:10 AM
    Rank: Administration
    Groups: Member, Administration

    Joined: 5/24/2007
    Posts: 362
    Location: Minnesota
    The AppLife Update 1.1 build has been delayed slightly to ensure that we have adequetly addressed an issue that a small number of users have experienced with the AppLife Update service. We should be able to release AppLife Update 1.1 in the next week. We appreciate your interest in AppLife Update and apologize for the delay in releasing the new version.
    Brian Haas
    Kinetic Jump Software
    brianh
    #10 Posted : Wednesday, October 10, 2007 2:05:53 PM
    Rank: Administration
    Groups: Member, Administration

    Joined: 5/24/2007
    Posts: 362
    Location: Minnesota
    AppLife Update 1.1 has been released. Get the new version here.
    Brian Haas
    Kinetic Jump Software
    adamh
    #11 Posted : Thursday, October 11, 2007 9:37:45 AM
    Rank: Administration
    Groups: Member, Administration

    Joined: 7/12/2007
    Posts: 17
    Location: Michigan
    We have updated the global assembly cache actions to support the new features introduced in AppLife Update version 1.1. You can download the new assemblies here:
    File Attachment(s):
    Kjs.AppLife.Update.GacActions.1.1.zip (47kb) downloaded 41 time(s).
    Adam Hill
    Kinetic Jump Software
    Users browsing this topic
    Guest
    You cannot post new topics in this forum.
    You cannot reply to topics in this forum.
    You cannot delete your posts in this forum.
    You cannot edit your posts in this forum.
    You cannot create polls in this forum.
    You cannot vote in polls in this forum.