Announcement

Collapse
No announcement yet.

Mit BuildEvents_OnBuildDone die neue .exe zippen und per email versenden

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Mit BuildEvents_OnBuildDone die neue .exe zippen und per email versenden

    Hallo zusammen,
    ich weiß leider nicht wohin das Thema gehört, aber da es in VB(a?) geschrieben ist, hab ich es mal hierhin gepackt.
    Ich möchte, wenn ich ein Release erstelle, das die dadurch enstehende .exe in ein Zip-File gepackt und diese dann als Anhang an eine neue Email gehängt wird.
    An sich funktioniert mein Makro, nur hab ich beim erstellen eines Release immer die alte (vom vorhergehenden Release) .exe in meinem Zip-File.

    bsp. die alte exe ist von 10 Uhr. Um 11 Uhr mach ich eine neue. Das neue Zip-File ist von 11 Uhr, die exe im Zip-File ist die von 10 Uhr.

    Was mach ich falsch?

    [highlight=vb.net]
    Private Sub BuildEvents_OnBuildDone(ByVal Scope As EnvDTE.vsBuildScope, ByVal Action As EnvDTE.vsBuildAction) Handles BuildEvents.OnBuildDone
    Dim dte As DTE2
    Dim soln As Solution2
    On Error GoTo ErrHandler

    dte = System.Runtime.InteropServices.Marshal.GetActiveOb ject("VisualStudio.DTE.9.0")
    soln = dte.Solution
    If (soln.FullName.EndsWith("MyProject.sln")) Then
    If (soln.SolutionBuild.ActiveConfiguration.Name = "Release") Then
    'Stop
    Dim sourceName As String = "Y:\Projekte\SourceDEV\MyProject\src\bin\x86\Relea se\MyProject.exe"
    Dim fVI As System.Diagnostics.FileVersionInfo = fVI.GetVersionInfo(sourceName)
    Dim targetName As String = "Y:\Projekte\SourceDEV\MyProject\src\bin\x86\Relea se\MyProject_" & fVI.FileMajorPart & "_" & fVI.FileMinorPart & ".zip"
    Dim p As ProcessStartInfo = New ProcessStartInfo()
    p.FileName = "7z.exe"
    p.WorkingDirectory = "C:\Programme\7-Zip"
    p.Arguments = "a -tzip " + targetName + " " + sourceName
    p.WindowStyle = ProcessWindowStyle.Hidden
    System.Diagnostics.Process.Start(p)

    p = New ProcessStartInfo()
    p.FileName = "OUTLOOK.EXE"
    p.WorkingDirectory = "C:\Program Files\Microsoft Office\OFFICE12"
    p.Arguments = "/a " + targetName
    'Stop
    System.Diagnostics.Process.Start(p)
    End If
    End If
    Exit Sub
    ErrHandler:
    MsgBox(Err.Description)
    End Sub
    [/highlight]

  • #2
    Fehler erkannt und verbannt

    Das zippen benötigt seine Zeit, weshalb mir nicht die falsche exe ins Zip, sondern das falsche Zip in die Email gepackt wird.
    Zwischen zippen und in email verpacken hab ich jetzt ein Sleep gesetzt, damit das Zip-programm genug Zeit hat, meine exe zu verpacken.

    [highlight=vb.net]
    Threading.Thread.Sleep(10000) ' 10 Sek. warten
    [/highlight]

    Comment


    • #3
      Du solltest den Prozess(-status) überwachen und solange warten bis er sich beended und dann weiterlaufen.

      Comment


      • #4
        gute Idee, danke

        habs jetzt so umgebaut:

        [highlight=vb.net]
        Private Sub BuildEvents_OnBuildDone(ByVal Scope As EnvDTE.vsBuildScope, ByVal Action As EnvDTE.vsBuildAction) Handles BuildEvents.OnBuildDone
        Dim dte As DTE2
        Dim soln As Solution2
        On Error GoTo ErrHandler

        dte = System.Runtime.InteropServices.Marshal.GetActiveOb ject("VisualStudio.DTE.9.0")
        soln = dte.Solution
        If (soln.FullName.EndsWith("MyProject.sln")) Then
        If (soln.SolutionBuild.ActiveConfiguration.Name = "Release") Then
        Dim sourceName As String = "Y:\Projekte\SourceDEV\MyProject\src\bin\x86\Relea se\MyProject.exe"
        Dim fVI As System.Diagnostics.FileVersionInfo = fVI.GetVersionInfo(sourceName)
        Dim targetName As String = "Y:\Projekte\SourceDEV\MyProject\src\bin\x86\Relea se\MyProject_" & fVI.FileMajorPart & "_" & fVI.FileMinorPart & ".zip"
        Dim p As New System.Diagnostics.Process
        Dim pInfo As ProcessStartInfo = New ProcessStartInfo()
        pInfo.FileName = "7z.exe"
        pInfo.WorkingDirectory = "C:\Programme\7-Zip"
        pInfo.Arguments = "a -tzip " + targetName + " " + sourceName
        pInfo.WindowStyle = ProcessWindowStyle.Hidden
        p.StartInfo = pInfo
        p.Start()
        p.WaitForExit()

        p = New System.Diagnostics.Process
        pInfo = New ProcessStartInfo()
        pInfo.FileName = "OUTLOOK.EXE"
        pInfo.WorkingDirectory = "C:\Program Files\Microsoft Office\OFFICE12"
        pInfo.Arguments = "/a " + targetName
        p.StartInfo = pInfo
        p.Start()
        End If
        End If
        Exit Sub
        ErrHandler:
        MsgBox(Err.Description)
        End Sub
        [/highlight]

        funktioniert 1a

        Comment

        Working...
        X