Just nu i M3-nätverket
Jump to content

Problem med filen MSFLXGRD.OCX


Kalle Dator1

Recommended Posts

Kalle Dator1

Hej !

 

Ska försöka att göra en lång och konstig fråga så kort som möjligt, vilket inte blir lätt:

 

En applikation, som jag gjort, i Visual Basic fordrar filen msflxgrd.ocx, för att köra grid (det excelliknande rutmönstret) i programformuläret. För att inte skriva över eller ändra några filer i andra datorers \Windows\System32, samlar jag vid installationen alla programmet tillhörande filer i samma skapade katalog som min applikation ligger i.

En bekant som intresserade sig för programmet försökte att installera detta på sin dator, men fick vid start ett besked om en för gammal msflxgrd.ocx, vilket var förbryllande. Tydligen brydde sig programmet inte om den fil som medskickades, utan letade ändå i System32. Detta bevisades när vi avlägsnade den sistnämnda.

 

Nu till mystiken, som tätnade när jag gjorde samma sak på min egen dator för att kontrollera. När jag startade Visual Basic, eller applikationen, satte systemet igång med att förbereda för en installation av en hårdvara, som jag i och för sig hade installerat nyligen. Den hårdvaran har ingenting med mina applikationer eller Visual Basic att göra....

Frågan är varför detta långsökta beteende ?

 

Tillbaka till principen med att skona ett system från mina hjälpfiler av kanske andra versioner, vilket kan bli till men för andra program som är beroende av dessa filer.

Resonerar jag fel som styr installationen med FileCopy till en separat programkatalog innehållande alla filer som har med 'References' och/eller 'Components' att göra när jag utvecklar min VB-applikation ? Jag gjorde tidigare mina tappra försök att använda mig av Installation Pack för att skapa en klassisk installation, men råkade just ut för att ersätta - jag tror det var Oleaut32.dll - med en nyare version på en dator, vilket fick påföljden att vederbörandes andra program inte längre var körbara..

 

Kan jag kanske skapa en separat katalog under Windows för mina filer och sedan skriva in sökvägen till denna katalog under Project/Components resp Project/References i VB-editorn ?

 

Någon som har några bra förslag och svar på mitt 'korta' inlägg ?

 

/Kalle

 

ingen kan göra allting, men alla kan göra någonting, och om alla gör någonting så blir snart allting gjort...

 

Link to comment
Share on other sites

Anjuna Moon
Resonerar jag fel som styr installationen med FileCopy till en separat programkatalog innehållande alla filer som har med 'References' och/eller 'Components' att göra

Ja, du resonerar fel. Activex-komponenter och bibliotek kan det bara registreras en kopia av. Det spelar ingen roll var den ligger i filsystemet, bara en version kan vara registrerad åt gången. Det du måste göra är att i installationsfasen kontrollera om en äldre version redan är registrerad och om så är fallet fråga användaren om den nyare versionen skall ersätta den gamla. Om detta är fallet avregistrerar du och raderar den gamla samt kopierar in den nya och registrerar den.

 

Vill du komma runt detta så får du skapa en egen activex-komponent som baseras på msflexgrid och ge den ett annat namn.

 

Link to comment
Share on other sites

Kalle Dator1

Tack för info !

 

Men hur går man tillväga rent praktiskt för att registrera resp avregistrera ?

 

/Kalle

 

Link to comment
Share on other sites

Anjuna Moon

Registreringarna sköter du enklast med följande shell-kommandon:

 

Avregistrering

regsvr32 /u dinkomponent.ocx

 

Registrering

regsvr32 dinkomponent.ocx

 

Om du har lagt filen någonannanstans än i system32-mappen så måste du ange hela sökvägen till filen

 

 

[inlägget ändrat 2007-05-19 17:16:10 av Anjuna Moon]

Link to comment
Share on other sites

Kalle Dator1

Nyttig information ! Den tackar jag för !

 

Känner dock att frågan om eventuell skadlighet för andra program med utbyte av t ex den omtalade filen eller andra, t ex DLL-filer, fortfarande svävar i luften obesvarad. Hur kan jag, eller ens ägaren av PC:n, som ska installeras med min applikation, veta om filen kan bytas ut mot en senare version utan att menligt inverka på andra program.

Detta har inträffat en gång för mig, vilket är en gång för mycket, när jag använde mig av VB:s P & DW för att skapa en installation, vilket jag beskrev i mitt inledande inlägg.....

 

/Kalle

 

Link to comment
Share on other sites

Anjuna Moon
Hur kan jag, eller ens ägaren av PC:n, som ska installeras med min applikation, veta om filen kan bytas ut mot en senare version utan att menligt inverka på andra program.

Det kan man ju förstås inte veta generellt. Därför bör man, hos leverantörerna av de komponenter man använder, studera versionshistoriken och bakåtkompatibiliteten. En välutvecklad komponent skall naturligtvis ha en ganska solid bakåtkompatibilitet, men så är ju förstås inte alltid fallet. Vad som gäller för just flexgrid vet jag inte.

 

Vad du kan göra är att spara undan den eventuellt avregistrerade, äldre, versionen och i avinstallationspaketet återinstallera det. Nu var det säkert tio år sedan jag använde VB6 och dess deploymentwizard, så jag minns inte hur mycket man kan konfigurera de olika faserna. Men det finns ju fristående installationspaketsleverantörer som är klart bättre med sina produkter, t.ex InstallShield (som jag tror är uppköpta av Macrovision numer)

 

Själv sitter jag med VS.Net 2005 idag och där är möjligheterna mer eller mindre kompletta som tur är, fast detta hjälper förstås inte dig.

 

Link to comment
Share on other sites

Kalle Dator1

Har ju gjort ett eget installationsprogram, där jag kan implementera just dessa faciliteter som du nämner.

Har haft just detta på tanke att spara filer, eventuellt uppdaterade, i en separat katalog, för att de sedan ska kunna återtas vid en eventuell avinstallation.

 

Men detta löser ju inte ett problem orsakat av en icke bakåtkompatibel dll-fil...

 

/Kalle

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...