locked
Dll sequencing not working RRS feed

  • Question

  • Hi,

    I am trying to create two seperate package for exe and dll's (so that one set of dlls can serve all the dependant executables). My test application is notepad++ and I did the following things step by step :

    1. create 2 msi, one for executable file alone and another one for dlls alone.

    2. Sequenced both msi and I got two bubbles.

    3. Use app-v dynamic suite composition tool to link both bubles. (the exe being the main app of course)

    Now here is my problem:

    The application is running on the client but it's not finding the dll's. The dependant package path is ok. If I change the folder name of the dependent bubble I am getting path not found error.

    This is the first time that I am trying to seperate exe and dlls. Any help would be greatly appricated.

     

    regards,

    Ashraf706

    Tuesday, July 6, 2010 3:35 PM

Answers

  • Hi,

    We have managed to figure out a solution and it is working fine (but I am not sure whether it is the right solution or not!!). Step by step the procedures and the solution is :

    1. Create 2 seperate bubbles (1 for exe(notepadExe) and one for dlls(notepadDll))

    2. Use DSC to show the dependency. Then the important section :

    3. In exe OSD file create a new element ("Environment"). So the path will be like Implementation->VirtualEnv->EnvList->Environment.

    4. Set the "Environment" variable value to "Path".

    5. Add "%PATH%;%SFT_MNT%\\notepadDlll "Element Text" 

    Now the application is ready to run.

    Our deployment protocol is "File" and path is "c:\virtual\notepadExe" and "c:\virtual\notepadDll"

    regards,

    ashraf706

     

     

    Wednesday, July 14, 2010 10:05 AM

All replies

  • Hello,

    Dynamic Suite Composition is intended to ease the management of plugins - not seperating applications.

    Since you are having issues I would advise to use a single package.

    /Znack
    Tuesday, July 6, 2010 3:41 PM
  • Hi,

    The problem is we have large amount applications and a lot of them share common dlls. So we are trying to create seperate bubbles for these dll's so that that the dependant applications all have access to them. This is essential and if it is not possible then the company will not be able to use App-V.

    If  I want to seperate the application and dlls then what will be the way to seperate them?I have already infromed in my previous post what I have tried so far!. Seems I need guidence for the following things:

     

    1. Seperate application and dlls.

    2. Define dependency and run the application

    Do you have any suggestion?

     

    regards,

    ashraf706

     

     

    Tuesday, July 6, 2010 3:54 PM
  • Hello,

    I would simply sequence dll+executable within the same package - but then again I do not know why you are doing so.

    Since application virtualization is working in the opposite direction of "sharing" DLLs it would be an odd route to take to achieve those things...

    /znack

    Tuesday, July 6, 2010 4:04 PM
  • The problem might be that by seperating the exe from the DLL you have split the default search path for the exe to find the dll. If the DLL's can be registered then you could consider running a pre launch script in the exe package OSD files to "REGSVR32" all the dll's and the exe will then be able to locate the dll in it's dependent location. Otherwise you could consider adding the dll locations into the PATH statement in the EXE OSD file...

    If neither of these are possible it might be worth finding out from the developer if there is a way to achieve splitting the DLLs physically on a normal desktop and what you would need to do to make the EXE work if the dlls were in a different location on the Harddrive. You could then replicate this solution in the App-V environment using Dynamic Suite with the work around in the individual EXE OSD files.

    Hope this helps

    Regards.

    Tuesday, July 6, 2010 8:51 PM
  • Die you verify that DSC is working correctly?

     

    After starting the EXE, also your DLL-Package should be "In use" (but not "Running") in the App-V Client MMC. Use F5 to refresh the status..

     


    Falko
    Wednesday, July 7, 2010 12:53 PM
    Moderator
  • Hi,

    End of the day here is my current status :(

    1. The dll's can not be registered using regsvr32 command.

    2. DSC is working properly. I tried with jare 1.6 and jre dependent application. It works fine.

    @Duncan: you wrote "adding the dll locations into the PATH statement in the EXE OSD file..."

    Can you give me any idea or link so that I can add path location. I have modified the osd file adding path locaion but it didn't work.

    The dll dependent application is loading fine and I am getting "dll loading fail" msg.

    Another important point, in log file it says "invalid package configuration, unable to start background streaming"

     

    regards,

    ashraf706

     

     

    Wednesday, July 7, 2010 3:01 PM
  • Have you been able to confirm that when the main package loads, the DLLs are available? You can confirm by following these steps:

    Launch Command Prompt inside the application bubble:

    1. Find the primary App-V application name from the application shortcut or using: SFTMIME QUERY OBJ:APP /SHORT

    2. Launch Command Prompt inside the application bubble via: SFTTRAY /EXE CMD.EXE /LAUNCH "<Application name>"

    3. Confirm that both the EXE and DLL files can be seen.

    Wednesday, July 7, 2010 4:20 PM
    Moderator
  • ashraf706,

    Normally applications like to have DLLs in the same directory as main executable as they are most likely dynamically loaded without any path references, or if PATH environment variable is set, finding them through that. In "normal" DSC each package has different subdirectory structure in Q: drive which means that main executable would have to know somehow to load DLLs from wholly separate directory structure, thing you cannot just force on application as generic way of doing things.

    Packaging fully to VFS could perhaps achieve this goal in some situations (say, AppA is VFS'd from "C:\Program Files\Application\bin" and Dll package also contains DLLs in VFS'd "C:\Program Files\Application\bin"), but even that is not guranteed.

    All in all, trying to use DSC for separating arbitraty executables from arbitraty DLLs is wasted effort. If application used known, shared DLLs, then you might be able to do it.

    /Kalle

    Monday, July 12, 2010 2:10 PM
    Moderator
  • Hi,

    We have managed to figure out a solution and it is working fine (but I am not sure whether it is the right solution or not!!). Step by step the procedures and the solution is :

    1. Create 2 seperate bubbles (1 for exe(notepadExe) and one for dlls(notepadDll))

    2. Use DSC to show the dependency. Then the important section :

    3. In exe OSD file create a new element ("Environment"). So the path will be like Implementation->VirtualEnv->EnvList->Environment.

    4. Set the "Environment" variable value to "Path".

    5. Add "%PATH%;%SFT_MNT%\\notepadDlll "Element Text" 

    Now the application is ready to run.

    Our deployment protocol is "File" and path is "c:\virtual\notepadExe" and "c:\virtual\notepadDll"

    regards,

    ashraf706

     

     

    Wednesday, July 14, 2010 10:05 AM