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.
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
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.
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.
Copy link to clipboard
Copied
Hello,
we have noted the feedback and we will be updating the documentation.
Regards
Tarini
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
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.
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.
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
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
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?
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
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?
Copy link to clipboard
Copied
Hello forestw42669276,
Did you get a resolution to the problem you were talking about, including the registry key issue?
I hope you did, or someone else did, we are facing the same issue with async client connection.
Thanks in advance.