Highlighted

Connecting an FDK asynchronous client to the running default FrameMaker service

New Here ,
Jan 25, 2019

Copy link to clipboard

Copied

Good afternoon,

I've been over and over the asynchronous client instructions in the FDK Programmer's Guide, and besides options that are not available in Visual Studio 2013, I've built my client on the same machine as one installation of FrameMaker 2019, with only 32-bit libraries from all sources. I verified that the console application works in most ways; I can perform c++ functions without fail, and I do not get any build errors when using the functions in FDK libraries, such as fapi.h. However, neither F_ApiWinConnectSession() nor F_ApiStartUp() with NULL parameters connects me to the FrameMaker process, as the IntT or ConStringT responses confirm. I've added a VersionInfo file. Registered my client in the maker.ini file. The sample client in the guide doesn't work (I built mine with most of the code commented out, and several fixes for 32-bit Windows apps that were omitted - obviously not tested). I could not find any asynchonous client examples in FDK2019 (32 Bit)\samples.

So, where are the working instructions for connecting to FrameMaker from an asynchronous client?

Thank you

P.S. There is no 64-bit version of Visual Studio 2013, so one cannot use the 64-bit FDK because of 32/64-bit incompatibility. Later versions of Visual Studio do offer 64-bit libraries, but only include multithreaded compilers, so are incompabitible with the FDK compiled libraries and their aliases. You may wish to stop distributing the unusable 64-bit version of your windows FDK, or choose a different compiler.

TOPICS
Scripting

Views

1.2K

Likes

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more

Connecting an FDK asynchronous client to the running default FrameMaker service

New Here ,
Jan 25, 2019

Copy link to clipboard

Copied

Good afternoon,

I've been over and over the asynchronous client instructions in the FDK Programmer's Guide, and besides options that are not available in Visual Studio 2013, I've built my client on the same machine as one installation of FrameMaker 2019, with only 32-bit libraries from all sources. I verified that the console application works in most ways; I can perform c++ functions without fail, and I do not get any build errors when using the functions in FDK libraries, such as fapi.h. However, neither F_ApiWinConnectSession() nor F_ApiStartUp() with NULL parameters connects me to the FrameMaker process, as the IntT or ConStringT responses confirm. I've added a VersionInfo file. Registered my client in the maker.ini file. The sample client in the guide doesn't work (I built mine with most of the code commented out, and several fixes for 32-bit Windows apps that were omitted - obviously not tested). I could not find any asynchonous client examples in FDK2019 (32 Bit)\samples.

So, where are the working instructions for connecting to FrameMaker from an asynchronous client?

Thank you

P.S. There is no 64-bit version of Visual Studio 2013, so one cannot use the 64-bit FDK because of 32/64-bit incompatibility. Later versions of Visual Studio do offer 64-bit libraries, but only include multithreaded compilers, so are incompabitible with the FDK compiled libraries and their aliases. You may wish to stop distributing the unusable 64-bit version of your windows FDK, or choose a different compiler.

TOPICS
Scripting

Views

1.2K

Likes

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
Jan 25, 2019 0
Adobe Employee ,
Jan 25, 2019

Copy link to clipboard

Copied

hello,

My apologies that you are have trouble with the Async client with FDK 2019. I have made a  sample async client for reference which i am sharing.Adobe Document Cloud

It has both 32 and 64 bit clients which can be selcted by selecting the targets in VS 2013

Whenever we want to build an async client we build an .exe which needs to be registered with FM and also since it needs it needs extra dll's it is placed in $FMHOME i.e C:\Program Files\Adobe\Adobe FrameMaker 2019 for a  default win10 64 bit FM installation.

The command for registering a client is

"C:\Program Files\Adobe\Adobe FrameMaker 2019\FrameMaker.exe" /progid:FrameMaker.SAMPASYNPRG.1 /auto

and then we can run the async client.

If ever we want to run the register command again

we clean

All registry with values containing FrameMaker.SAMPASYNPRG.1. For safety we can take a backup.

and then re register.

Please can you try the sample(64 bit) with 64 bit FM and see if it resolves the issue? Let us know if you run into issues.

Regards

Tarini

Likes

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
Reply
Loading...
Jan 25, 2019 1
New Here ,
Jan 28, 2019

Copy link to clipboard

Copied

Indeed, your client loads the proper libraries to function (the example in the doc does not).

You name your FrameMaker process, "FrameMaker.SAMPASYNPRG.1", but the documentation explicitly instructs users to use NULL to access the default local FrameMaker process. Do the following instructions not work?

"Connecting to the default process on a local host

You use F_ApiStartUp() when the desired FrameMaker process is running on the

local machine. For example, a DLL that is a FrameMaker plugin calls

F_ApiStartUp(). In that case, the FrameMaker process that invokes the DLL

identifies itself by passing a globally unique identifier (GUID) via the FMGUID

environment variable. Likewise, if you want an EXE to connect locally to the currently

active FrameMaker process, use F_ApiStartUp().

The following call makes this connection:

F_ApiStartUp(NULL);

...

Note that F_ApiWinConnectSession() takes three parameters. In the first

parameter you can pass a list of properties that correspond to the entries you provide

when registering a FrameMaker client.

The second parameter is for the address of a remote host, when making a connection to

a remote host. If this parameter is NULL or 0, F_ApiWinConnectSession()

connects to the local host."

--FDK Programmer's  Guide, Adobe Framemaker (2019 release)

As I mentioned, several options in VS2013 indicated in the documentation aren't available in my install. Microsoft doesn't support VS2013, so I have no way of knowing why you have options I do not. I had to get an installer from a third party.

That you distribute libraries compiled with discontinued compilers is not a problem that I can fix, unless you share the source and I compile the libraries myself using a supported compiler.

Likes

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
Reply
Loading...
Jan 28, 2019 0
New Here ,
Jan 28, 2019

Copy link to clipboard

Copied

No luck.

I get the error and exit every time, though I started a named process and used the same process name in my code. My client cannot find the process. I do not know why. I could start at the beginning of the doc and do everything over again, but even getting one successful console application run is taking too much of my time. There are applications that are cheaper that can run batch output without all this thrashing.

Likes

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
Reply
Loading...
Jan 28, 2019 0
Adobe Employee ,
Jan 28, 2019

Copy link to clipboard

Copied

Hello,

we have noted the feedback and we will be updating the documentation.


Regards

Tarini

Likes

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
Reply
Loading...
Jan 28, 2019 1
Adobe Employee ,
Jan 29, 2019

Copy link to clipboard

Copied

Hello,

I have created a video for this Adobe Document Cloud which can be used for async client. For the sake of debugging in case the user does not have access of running files from Program Files try copying the dll's to where the exe is created as in the video.

Tarini

Likes

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
Reply
Loading...
Jan 29, 2019 1
New Here ,
Jan 30, 2019

Copy link to clipboard

Copied

As I have already pointed out, there isn't a 64-bit option in VS2013. If you can give me a link to download the version that has that, it would help immensely.

VS2013_32bitONLY.png

Likes

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
Reply
Loading...
Jan 30, 2019 0
Adobe Employee ,
Jan 30, 2019

Copy link to clipboard

Copied

Hello ,

It seems that the project has been newly setup and is not an existing FDK sample project.

Because VS 2013 by default creates a 32 bit config only.

To configure a project to target a 64-bit platform

  1. On the menu bar, choose Build, Configuration Manager.
  2. In the Active solution platform list, choose a 64-bit platform for the solution to target, and then choose the Close button.
    1. If the platform that you want doesn’t appear in the Active solution platform list, choose New.The New Solution Platform dialog box appears.
    2. In the Type or select the new platform list, choose x64. NoteIf you give your configuration a new name, you may have to modify the settings in the Project Designer to target the correct platform.
    3. If you want to copy the settings from a current platform configuration, choose it, and then choose the OK button.
    The properties for all projects that target the 64-bit platform are updated, and the next build of the project will be optimized for 64-bit platforms.

How to: Configure Visual C++ Projects to Target 64-Bit, x64 Platforms | Microsoft Docs

And then the drop down with both 32 bit and 64 bit will appear.

Tarini

Likes

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
Reply
Loading...
Jan 30, 2019 1
Mentor ,
Jan 31, 2019

Copy link to clipboard

Copied

Hi forestw42669276,

I have been following this thread with interest and thought I would jump in to back up what Tarini said. VS2013 can build a 64-bit client without issues... you just have to set up your build configuration correctly. It took me a few minutes to figure it out when I made the switch to 64-bit, so it is understandable that you didn't immediately see how to do it. Just like Tarini said, you have to go into the Configuration Manager and create a new "x64" Active Solution Platform. Then just select it and build. The setup methodology seems obscure and convoluted to me, but then again I am not a developer by trade. Perhaps it all makes sense to the experts.

I have never built an asynchronous client before, but I'm told it is totally possible and works well. I'd like to see you do it successfully, because one day I might find a need for it. So, I will continue to follow this thread. Stay patient... I think you are fortunate to have good help here and it will be worth it.

Russ

Likes

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
Reply
Loading...
Jan 31, 2019 0
New Here ,
Feb 01, 2019

Copy link to clipboard

Copied

I've reinstalled 64-bit verions of Frame and the FDK. I created a new x64 build configuration in Visual Studio. I checked all the c++ and linker settings in the sampleasync project, built it, started Framemaker from the command line with a progid, and ran the .exe  in the debugger.

What could be preventing the client from accessing the FrameMaker process?

Likes

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
Reply
Loading...
Feb 01, 2019 0
Adobe Employee ,
Feb 01, 2019

Copy link to clipboard

Copied

Hello,

So,

We tried this command for registering the client

"C:\Program Files\Adobe\Adobe FrameMaker 2019\FrameMaker.exe" /progid:FrameMaker.SAMPASYNPRG.1 /auto

?

Has this command been tried before? If yes this would have created a new registry entry

Please use RegScanner or Regedit

https://www.thewindowsclub.com/search-windows-registry-find

How many entries of FrameMaker.SAMPASYNPRG can you find?

Are there more than one prog id Values? 1,2 etc?

if you find more than one means we have registered the client more than once.

But for safety take a backup of all the registries, Backup and Restore the Registry – Guide for Windows XP, 7, 8, 8.1, 10

Remove all registries where value is FrameMaker.SAMPASYNPRG

Search again and your result should not find any value with FrameMaker.SAMPASYNPRG.

Means no client is registered with progid FrameMaker.SAMPASYNPRG and the registry is clean.

Re-register and only one prog id FrameMaker.SAMPASYNPRG.1 should be there.

Retry.

Regards

Tarini

Likes

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
Reply
Loading...
Feb 01, 2019 1
New Here ,
Mar 06, 2019

Copy link to clipboard

Copied

Deleting registry entries is a bad idea. Frame now wont launch, even after a reinstall. After a registry restore, it would not launch. After a system restore, I got Fatal Error (00000001) - reinstalling again. The email address in the error (fmhelp@adobe.com)isn't active. I sent a message to support, and didn't hear back - my support package is current.

The registry keys that contain this data (not value - that is a different artifact in Microsoft terminology) are:

1. Computer\HKEY_CLASSES_ROOT\WOW6432Node\CLSID\{E49A4A58-AE16-400C-9296-AAFD8FC01193}\ProgID

2. Computer\HKEY_CLASSES_ROOT\WOW6432Node\CLSID\{E49A4A58-AE16-400C-9296-AAFD8FC01193}\VersionIndependentProgID

3. Computer\HKEY_CURRENT_USER\Software\Classes\CLSID\{E49A4A58-AE16-400C-9296-AAFD8FC01193}\LocalServer32

4. Computer\HKEY_CURRENT_USER\Software\Classes\CLSID\{E49A4A58-AE16-400C-9296-AAFD8FC01193}\ProgID

5. Computer\HKEY_CURRENT_USER\Software\Classes\CLSID\{E49A4A58-AE16-400C-9296-AAFD8FC01193}\VersionIndependentProgID

6. Computer\HKEY_CURRENT_USER\Software\Classes\FrameMaker.SAMPASYNPRG

7. Computer\HKEY_CURRENT_USER\Software\Classes\FrameMaker.SAMPASYNPRG\CurVer

8. Computer\HKEY_CURRENT_USER\Software\Classes\FrameMaker.SAMPASYNPRG.1

9. Computer\HKEY_CURRENT_USER\Software\Classes\WOW6432Node\CLSID\{E49A4A58-AE16-400C-9296-AAFD8FC01193}\LocalServer32

10. Computer\HKEY_CURRENT_USER\Software\Classes\WOW6432Node\CLSID\{E49A4A58-AE16-400C-9296-AAFD8FC01193}\ProgID

11. Computer\HKEY_CURRENT_USER\Software\Classes\WOW6432Node\CLSID\{E49A4A58-AE16-400C-9296-AAFD8FC01193}\VersionIndependentProgID

12. Computer\HKEY_USERS\S-1-5-21-667767988-1587426212-11539462-26092\Software\Classes\CLSID\{E49A4A58-AE16-400C-9296-AAFD8FC01193}\LocalServer32

13. Computer\HKEY_USERS\S-1-5-21-667767988-1587426212-11539462-26092\Software\Classes\CLSID\{E49A4A58-AE16-400C-9296-AAFD8FC01193}\ProgID

14. Computer\HKEY_USERS\S-1-5-21-667767988-1587426212-11539462-26092\Software\Classes\CLSID\{E49A4A58-AE16-400C-9296-AAFD8FC01193}\VersionIndependentProgID

15.Computer\HKEY_USERS\S-1-5-21-667767988-1587426212-11539462-26092\Software\Classes\FrameMaker.SAMPASYNPRG

16. Computer\HKEY_USERS\S-1-5-21-667767988-1587426212-11539462-26092\Software\Classes\FrameMaker.SAMPASYNPRG\CurVer

17. Computer\HKEY_USERS\S-1-5-21-667767988-1587426212-11539462-26092\Software\Classes\FrameMaker.SAMPASYNPRG.1

18. Computer\HKEY_USERS\S-1-5-21-667767988-1587426212-11539462-26092\Software\Classes\WOW6432Node\CLSID\{E49A4A58-AE16-400C-9296-AAFD8FC01193}\LocalServer32

19. Computer\HKEY_USERS\S-1-5-21-667767988-1587426212-11539462-26092\Software\Classes\WOW6432Node\CLSID\{E49A4A58-AE16-400C-9296-AAFD8FC01193}\ProgID

20. Computer\HKEY_USERS\S-1-5-21-667767988-1587426212-11539462-26092\Software\Classes\WOW6432Node\CLSID\{E49A4A58-AE16-400C-9296-AAFD8FC01193}\VersionIndependentProgID

21. Computer\HKEY_USERS\S-1-5-21-667767988-1587426212-11539462-26092_Classes\CLSID\{E49A4A58-AE16-400C-9296-AAFD8FC01193}\LocalServer32

22. Computer\HKEY_USERS\S-1-5-21-667767988-1587426212-11539462-26092_Classes\CLSID\{E49A4A58-AE16-400C-9296-AAFD8FC01193}\ProgID

23. Computer\HKEY_USERS\S-1-5-21-667767988-1587426212-11539462-26092_Classes\CLSID\{E49A4A58-AE16-400C-9296-AAFD8FC01193}\VersionIndependentProgID

24. Computer\HKEY_USERS\S-1-5-21-667767988-1587426212-11539462-26092_Classes\FrameMaker.SAMPASYNPRG

25. Computer\HKEY_USERS\S-1-5-21-667767988-1587426212-11539462-26092_Classes\FrameMaker.SAMPASYNPRG\CurVer

26. Computer\HKEY_USERS\S-1-5-21-667767988-1587426212-11539462-26092_Classes\FrameMaker.SAMPASYNPRG.1

Which of these cause framemaker to stop working when I delete them?

Likes

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
Reply
Loading...
Mar 06, 2019 0