Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Program släpper inte filer

Postades av 2008-01-04 00:30:38 - Thomas Roman, i forum vb.net, Tråden har 8 Kommentarer och lästs av 1112 personer

Jag har ett program som kollar upp versionsnumret på andra exe-filer med den här koden:
<code>
Dim Dir As New System.IO.DirectoryInfo(Application.ExecutablePath.Substring(0, Application.ExecutablePath.LastIndexOf("\")))
Dim Files() As System.IO.FileInfo
Dim i As Integer
Files = Dir.GetFiles
For i = 0 To Files.Length - 1
If Files(i).Extension.ToLower = ".exe" Then
Dim ExeAssembly As System.Reflection.Assembly = System.Reflection.Assembly.LoadFile(Files(i).FullName)
Messagebox.Show(ExeAssembly.GetName().Version.Major.ToString)
End If
Next
</code>

Efter det så verkar filerna vara låsta, så jag antar att mitt program inte släpper dom av nån anledning.
Hur löser jag det?


/Thomas


Svara

Sv: Program släpper inte filer

Postades av 2008-01-04 10:14:32 - Pelle Johansson

Testa ExeAssembly.Dispose och se om det hjälper till något.


Svara

Sv:Program släpper inte filer

Postades av 2008-01-04 13:25:28 - Thomas Roman

Jag tänkte på det jag också men Dispose finns inte.


/Thomas


Svara

Sv: Program släpper inte filer

Postades av 2008-01-04 13:55:32 - Oskar Johansson

Problemet är att assemblyt laddas in i appdomainen, och saker kan inte laddas ut ur appdomains, man måste skrota appdomainen för att det ska gå.. Skrota den gör du antingen genom att starta om ditt program, eller att skapa en ny appdomain (så du har två), där du laddar in skumma saker du vill labba på =) När du sedan labbat klart kan du slänga din labbdomän.

Annars går det väl att ta fram version på ett assembly utan att ladda in det..?

En variant, lite fulare dock, är att du läser in ditt assembly i minnet först, stänger filen, och sedan läser in bytearrayen som ett assembly. På så vis låser du inga filer, men du laddar fortfarande in saker i ditt programs minne som du inte kan ladda ur.


Svara

Sv: Program släpper inte filer

Postades av 2008-01-04 15:00:53 - Pelle Johansson

Hittade en gammal kod som du kanske kan använda och konvertera:

**************************************
Name: Get Version Number for EXE, DLL or
OCX files
Description:This function will retrieve 
     the version number, product name, origin
     al program name (like if you right click
     on the EXE file and select properties, t
     hen select Version tab, it shows you all
that information) etc
By: Serge

Returns:FileInfo structure

Assumes:Label (named Label1 and make it 
     wide enough, also increase the height of
     the label to have size of the form), Com
     mon Dilaog Box (CommonDialog1) and a Com
mand Button (Command1)

This code is copyrighted and haslimited warranties.Please see http://www
     .Planet-Source-Code.com/vb/scripts/ShowC
ode.asp?txtCodeId=4976&lngWId=-1for details.**************************************

Public Function GetFileVersionInformatio
     n(ByRef pstrFieName As String, ByRef tFi
     leInfo As FILEINFO) As VerisonReturnValu
e
Dim lBufferLen As Long, lDummy As Long
Dim sBuffer() As Byte
Dim lVerPointer As Long
Dim lRet As Long
Dim Lang_Charset_String As String
Dim HexNumber As Long
Dim i As Integer
Dim strTemp As String
'Clear the Buffer tFileInfo
tFileInfo.CompanyName = ""
tFileInfo.FileDescription = ""
tFileInfo.FileVersion = ""
tFileInfo.InternalName = ""
tFileInfo.LegalCopyright = ""
tFileInfo.OriginalFileName = ""
tFileInfo.ProductName = ""
tFileInfo.ProductVersion = ""
lBufferLen = GetFileVersionInfoSize(pstr
FieName, lDummy)
If lBufferLen < 1 Then
GetFileVersionInformation = eNoVersion
Exit Function
End If
ReDim sBuffer(lBufferLen)
lRet = GetFileVersionInfo(pstrFieName, 0
&, lBufferLen, sBuffer(0))
If lRet = 0 Then
GetFileVersionInformation = eNoVersion
Exit Function
End If
lRet = VerQueryValue(sBuffer(0), "\VarFi
     leInfo\Translation", lVerPointer, lBuffe
rLen)
If lRet = 0 Then
GetFileVersionInformation = eNoVersion
Exit Function
End If
Dim bytebuffer(255) As Byte
MoveMemory bytebuffer(0), lVerPointer, l
BufferLen
HexNumber = bytebuffer(2) + bytebuffer(3
     ) * &H100 + bytebuffer(0) * &H10000 + by
tebuffer(1) * &H1000000
Lang_Charset_String = Hex(HexNumber)
'Pull it all apart:
'04------= SUBLANG_ENGLISH_USA
'--09----= LANG_ENGLISH
' ----04E4 = 1252 = Codepage for Windows
:Multilingual
Do While Len(Lang_Charset_String) < 8

Lang_Charset_String = "0" & Lang_Charset
_String
Loop
Dim strVersionInfo(7) As String
strVersionInfo(0) = "CompanyName"
strVersionInfo(1) = "FileDescription"
strVersionInfo(2) = "FileVersion"
strVersionInfo(3) = "InternalName"
strVersionInfo(4) = "LegalCopyright"
strVersionInfo(5) = "OriginalFileName"
strVersionInfo(6) = "ProductName"
strVersionInfo(7) = "ProductVersion"
Dim buffer As String
For i = 0 To 7
buffer = String(255, 0)
strTemp = "\StringFileInfo\" & Lang_Char
set_String _
& "\" & strVersionInfo(i)
lRet = VerQueryValue(sBuffer(0), strTemp
, _
lVerPointer, lBufferLen)
If lRet = 0 Then
GetFileVersionInformation = eNoVersion
Exit Function
End If
lstrcpy buffer, lVerPointer
buffer = Mid$(buffer, 1, InStr(buffer, v
bNullChar) - 1)
Select Case i
Case 0
tFileInfo.CompanyName = buffer
Case 1
tFileInfo.FileDescription = buffer
Case 2
tFileInfo.FileVersion = buffer
Case 3
tFileInfo.InternalName = buffer
Case 4
tFileInfo.LegalCopyright = buffer
Case 5
tFileInfo.OriginalFileName = buffer
Case 6
tFileInfo.ProductName = buffer
Case 7
tFileInfo.ProductVersion = buffer
End Select
Next i
GetFileVersionInformation = eOK
End Function
'-----------
Private Sub Command1_Click()
Dim strFile As String
Dim udtFileInfo As FILEINFO
On Error Resume Next
With CommonDialog1
.Filter = "All Files (*.*)|*.*"
.ShowOpen
strFile = .FileName
If Err.Number = cdlCancel Or strFile = "
" Then Exit Sub
End With
If GetFileVersionInformation(strFile, ud
tFileInfo) = eNoVersion Then
MsgBox "No version available for this fi
le", vbInformation
Exit Sub
End If
Label1 = "Company Name: " & udtFileInfo.
CompanyName & vbCrLf
Label1 = Label1 & "File Description:" & 
udtFileInfo.FileDescription & vbCrLf
Label1 = Label1 & "File Version:" & udtF
ileInfo.FileVersion & vbCrLf
Label1 = Label1 & "Internal Name: " & ud
tFileInfo.InternalName & vbCrLf
Label1 = Label1 & "Legal Copyright: " & 
udtFileInfo.LegalCopyright & vbCrLf
Label1 = Label1 & "Original FileName:" &
udtFileInfo.OriginalFileName & vbCrLf
Label1 = Label1 & "Product Name:" & udtF
ileInfo.ProductName & vbCrLf
Label1 = Label1 & "Product Version: " & 
udtFileInfo.ProductVersion & vbCrLf
End Sub



Svara

Sv:Program släpper inte filer

Postades av 2008-01-04 19:20:05 - Thomas Roman

<b>Annars går det väl att ta fram version på ett assembly utan att ladda in det..? </b>

Du vet inte hur?


/Thomas


Svara

Sv: Program släpper inte filer

Postades av 2008-01-04 23:05:49 - Oskar Johansson

http://www.aspemporium.com/howto.aspx?hid=12

Klassen FileVersionInfo verkar se intressant ut. Andra träffen på http://www.google.com/search?hl=en&q=get+version+information+about+dll+exe+c%23 ;)

Google ftw =)


Svara

Sv:Program släpper inte filer

Postades av 2008-01-04 23:10:35 - Thomas Roman

Jag har inte testat din kod, men det är AssemblyVersion jag vill ha, inte FileVersion. Antar att den koden plockar fram FileVersion?


/Thomas


Svara

Sv: Program släpper inte filer

Postades av 2008-01-05 00:07:02 - Oskar Johansson

Jepp, stämmer. Ska du ha assemblyversion så måste du nog köra den hårda vägen och skapa en appdomain, eller göra ett fulhack och exekvera en ny process som plockar ut det du ska ha, skickar tillbaka, och sedan stänger av sig självt..


Svara

Nyligen

  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper
  • 16:36 Allt du behöver veta om keramiskt
  • 16:14 Vem anlitar man egentligen när tak

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 726
27 958
271 751
261
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies