AdkNet4Wrapper koppling till 2017.1 Administration

  • 0
  • 1
  • Fråga
  • Uppdaterades för 1 år sedan
  • Besvarad
  • (Redigerad)
Har haft en fungerande integrationslösning med tidigare versioner av Admin 2000, men efter uppdatering till 2017.1 så slutade det att fungera.

Får följande felmeddelande:
Unable to load DLL 'adk.dll': The specified module could not be found.

Jag har flyttat adk.dll och AdkNet4Wrapper till min BIN mapp som jag alltid har gjort vid versionsuppdateringar.

Det är en egenbygd webbintegration byggd i C# asp.net
Foto på henrik108

henrik108

  • 312 poäng 250 badge 2x thumb

Publicerades för 1 år sedan

  • 0
  • 1
Foto på Benny Olsson

Benny Olsson

  • 1,130 poäng 1k badge 2x thumb
Hej Henrik, 

Att kopiera adk.dll och AdkNet4Wrapper.dll till din egen bin-mapp är fel sätt att använda Vismas API och riskerar att leda till att adk.dll inte kan hitta alla sina beroenden när den laddas. 

I tidigare versioner av Visma Administration har detta inte varit något problem. Iom version 2017.1 så har adk.dll nu ytterligare beroenden vilket nu skapar problemet du stött på. 

Korrekt sätt att använda adk.dll är att låta den laddas från den platsen som Vismas installationsprogram placerar den i, d.v.s. Gemensamma Filer-mappen. Det finns två olika sätt att upp nå det.

Alternativ 1: Lägg in sökvägen till Gemensamma Filer-mappen i PATH-miljövariabeln i Windows. 

Alternativ 2: Innan du i din kod gör första anropet till en metod i adk.dll så anropar du Directory.SetCurrentDirectory med sökvägen till Gemensamma Filer-mappen. Genom att göra det så instruerar du .Net att söka i den katalogen efter dll-filer och den kommer då att hitta adk.dll när du gör ditt anrop. 

Mer information om Directory.SetCurrentDirectory hittar du på https://msdn.microsoft.com/en-us/library/system.io.directory.setcurrentdirectory(v=vs.110).aspx

Mvh,
Benny Olsson
Infostep AB
Foto på henrik108

henrik108

  • 312 poäng 250 badge 2x thumb
Hej och tack för svar.

Enda stället som jag hittar adk.dll är i C:\Program Files (x86)\SPCS\SPCS Administration

Det är ju dock ingen mapp som är utdelad.

Visma är installerad på en server och min webbapp på en annan. 
Är det på webbservern som jag ska skapa en path sökväg till adk.dll som ligger på den andra servern?
Foto på Benny Olsson

Benny Olsson

  • 1,130 poäng 1k badge 2x thumb
Hej,

När du anropar AdkOpen så skickar du in två sökvägar, dels till Gemensamma Filer och dels till det som tidigare var företags databasmapp. 

Om Adk.dll saknas i Gemensamma Filer-mappen så finns det en stor risk att din installation av Visma Administration är felaktig och bör då göras om. 

Sökvägen till platsen där Adk.dll finns ska läggas i Path-miljövariabeln på den server/dator där din integrationsapplikation körs. Om adk.dll finns i en utdelad mapp så är det den kompletta UNC-sökvägen som ska läggas in som miljövariabel.
Foto på henrik108

henrik108

  • 312 poäng 250 badge 2x thumb
Stort tack Benny...

Jag hade inte adk.dll i min mapp "gemensamma filer"
Provade att reparera installationen men fick aldrig dit den ändå.
Avinstallerade 2017.1 och installerade 2017 och då hamnade adk.dll i "gemensamma filer"

Kör nu med Version 2017 igen, och har lagt till sökvägen i PATH-miljövariabeln.
Nu kan jag köra min applikation utan att placera adk.dll i min Bin mapp, vilket jag inte tidigare har kunna göra.

Nu borde jag ju kunna installera 2017.1 igen och få det att fungera, men jag avvaktar nog lite innan det släpps en ny version
Foto på Martin

Martin

  • 60 poäng
Fick du det att fungera?
Foto på henrik108

henrik108

  • 312 poäng 250 badge 2x thumb
Jag har inte fått det till att fungera än.
Just problemet med adk.dll har jag löst.
Det smidigaste är helt enkelt att installera integrationsklienten på webservern så ordnar den med alla registernycklar och PATH inställningar.

Mitt problem nu är att när jag försöker öppna databasen så får jag "Felaktig sökordning" 

Hur går det för dig?
Foto på henrik108

henrik108

  • 312 poäng 250 badge 2x thumb
Hej!

Jag har inte testat 2017.1 efter att jag modifierat i PATH-inställningarna.


Avvaktar en uppdatering till innan jag installerar.

Jag har dock löst mitt grundproblem med 

Unable to load DLL 'adk.dll': The specified module could not be found.
Foto på Thomas

Thomas

  • 3,216 poäng 3k badge 2x thumb
Läs dokumentationen!
Korrekt sätt är att läsa ut sökvägen till dll:erna är via registret. Nycklar finns i dokumentationen och det är dessa man ska följa.
Från v2017.1 så ligger adk.dll i programmappen och inte i gemensamma filer. Det är inte ett problem om man följer riktlinjerna för hur apiet ska användas.
Använder man apiet från annan maskin som inte ska köra programmet annars så gör man en integrationsinstallation på den maskinen. Då har man rätt filer installerade och registernycklar att läsa ut.

Registerinformation
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\SpcsAdm.exe innehåller sökvägen till programfilen för Visma Administration.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\SpcsFor.exe innehåller sökvägen till programfilen för Visma Förening.
De nycklar som kan vara av intresse för Visma Integration är:
• AdkDll – innehåller sökvägen till katalogen där adk.dll ligger
• CommonFiles – innehåller sökvägen till mappen Gemensamma filer
• AdmIni – innehåller sökvägen till katalogen som innehåller spcsadm.ini respektive spcsfor.ini
Nycklarna heter på ett 64-bitars windows HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\App Paths\SpcsAdm.Exe resp HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\App Paths\SpcsFor.Exe.
Foto på henrik108

henrik108

  • 312 poäng 250 badge 2x thumb
Har nu vågat att testa att uppdatera till senast versionen av visma 2017.12

dock får jag inte ordning på min integration ändå.

Öppnar min koppling på nedanstående vis

error = AdkNet4Wrapper.Api.AdkOpen2(ref sys, ref ftg, ref name, ref pwd);
    if (error.lRc != AdkNet4Wrapper.Api.ADKE_OK)
    {
        String errortext = new String(' ', 200);
        int errtype = (int)AdkNet4Wrapper.Api.ADK_ERROR_TEXT_TYPE.elRc;
        AdkNet4Wrapper.Api.AdkGetErrorText(ref error, errtype,
        ref errortext, 200);
    
        //alert(errortext);
        <script type="text/javascript">
            alert("@errortext");
        </script>
    }

Här får jag felkoden "Felaktig sökordning" Vad kan detta bero på.
Foto på Helena Andersson

Helena Andersson, Application Specialist Administration/Tid/Autocollect/AutoInvoice

  • 7,092 poäng 5k badge 2x thumb
Hej henrik108
Har du installerat en integrationsklient på den datorn som du får felet på? 
Foto på henrik108

henrik108

  • 312 poäng 250 badge 2x thumb
Hej!

Detta är en webbapp så jag har inte installerat integrationsklienten på den dator som jag sitter med webbläsaren.

Jag har dock installerat integrationsklienten på webbservern och det avhjälpte felet som jag hade fört med att hitta adk.dll.

Min koppling fungerar utmärkt med admin 2017.0 och när jag ska testa med 2017.12 så har jag justerat så att jag använder adkOpen2 för att skicka med användare och lösenord.

Men jag får som sagt "Felaktig sökordning" bara genom att försöka koppla företaget.

Felet kommer ju genom error variabeln så man tycker att det borde finnas någon typ av koppling

Mycket tacksam för fler tips

Mvh
Henrik
Foto på Adamtj

Adamtj

  • 424 poäng 250 badge 2x thumb
Hej Henrik!

Nu är jag inte insatt i Vismas API, men blir felet vid tilldelningen av error variablen eller går den in i IF-satsen och felet blir när man läser ur error variablen?
Foto på henrik108

henrik108

  • 312 poäng 250 badge 2x thumb
Hej!

Felet "Felaktigt sökordning" läser jag ut från variabeln inne i if-satsen

Mvh
Henrik


Kan tillägga att jag har högerklickat användaren som jag försöker connecta med, inne i visma och angivit att den ska tillåtas integration
(Redigerad)
Foto på Helena Andersson

Helena Andersson, Application Specialist Administration/Tid/Autocollect/AutoInvoice

  • 7,092 poäng 5k badge 2x thumb
Hej henrik108
Jag har sett något tidigare fall där det hjälpt att installera en klientinstallation av Administration på den datorn. I ditt fall kan det då räcka att du installerar 
Microsoft ODBC driver 11 for SQL Server   Denna hittar du under C:\ProgramData\SPCS\SPCS Administration\Gemensamma filer\Klientsetup\ISSetupPrerequisites
Har du annan sökväg hit så får du ju så klart kolla där.
Foto på henrik108

henrik108

  • 312 poäng 250 badge 2x thumb
Hej och tack för svar.

Är det på webservern du menar att jag skall installera ODBC driver?

För klienterna kan ju vara både desktop och mobiler

MVH
Henrik
Foto på Helena Andersson

Helena Andersson, Application Specialist Administration/Tid/Autocollect/AutoInvoice

  • 7,092 poäng 5k badge 2x thumb
Hej henrik108

Ja på webservern. 
Foto på henrik108

henrik108

  • 312 poäng 250 badge 2x thumb
Ville bara meddela att det fungerar för mig nu.
Jag tror mitt problem berodde på att jag Uppgraderat till nya sql databasen och sedan gått tillbaka till dbase då det inte fungerat.

När jag sedan igen har provat att uppdatera till sql igen en andra gång så har gamla sql databaser legat kvar.

Men om jag raderade alla sqldatabaser innan jag uppdaterade så fungerade det bra