Outlook Add-In ohne ClickOnce installieren

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von Nofear23m.

    Outlook Add-In ohne ClickOnce installieren

    Hallo Leute

    Ich habe die Tage für meinen Arbeitgeber ein Add-In für Outlook erstellt. Dieses kann ich auch wunderbar einfach mittels ClickOnce verteilen. Visual Studio bringt hier ja automatisch eine Vorlage mit und verpackt alles korrekt.
    Auch die Installation selbst funktioniert tadellos.

    Wie aber muss ich bei Add-Ins vorgehen wenn diese "manuell" also mit einem eigenen Installer wie z.b. InnoSetup installiert werden sollen.
    Problem ist nämlich: ClickOnce unterstützt nur lokale Pfade, UNC Pfade oder FTP. WebDav Pfade werden nicht unterstützt. Es wurde aber notwendig (leider im nachhinein) das auch externe Personen ausserhalb des AD dieses Add-In installieren können.

    Ich habe versucht einfach das Setup per ZIP zu versenden, der jenige kann es allerdings dann nicht installieren da es nicht für diesen Pfad erstellt wurde, das klappt leider nicht mit ClickOnce (ich vermute wegen dem Zertifikat).
    Das ist der Grund warum ich die DLL selbst in Outlook "verpflanzen" will. Mal abgesehen davon das ich kein Freund von ClickOnce bin.

    Habe zwar einige nachgelesen zu diesem Thema, aber da mein Englisch nicht das beste ist und es hier soooo viele verschiedene Ansätze gibt sehe ich gerade den Wald vor lauter Bäumen nicht mehr.

    Schöne Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    @Dksksm
    Was meinst du damit? HTML ist kein Protokoll.

    Wie gesagt, Upload über FTP geht nicht. Server habe ich zur verfügung, das ist nicht das problem. Aber FTP Ports sind bei uns gesperrt.
    Mir ginge es wirklcih um die Installation eines Add-Ins ohne ClickOnce.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Nene, hab ja auch nicht explizit geschrieben das ich kein FTP nutzen kann. Nur das WebDav nicht geht.

    Aber es muss doch möglich sein das auch manuell zu "installieren".

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Danke @MichaHo

    VS 2019 hat die funktion zwar nicht mehr, aber ich versuche es trotzdem zu rekonstruieren, sollte ja egal sein welcher Installer verwendet wird.
    Ich schau mir das mal in ruhe an und melde mich wieder.

    Danke dir und schöne Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Nach erstellen des Add-Ins hast du mehrere Dateien in deinem "build" Ordner, unter anderem die Library und eine VSTO (VSTO Deyploment Manifest - die enthält u.a. die digitale Signatur) Datei.
    Für dein Setup musst du herausfinden welche Version von Office installiert ist und in der Registry, am entsprechenden Ort, verschiedene Werte speichern.

    Registry entries for VSTO Add-ins

    Beispiel für den Pfad im Wert Manifest: file:///D:/workspace/foobar/bin/Debug/foobar.vsto|vstolocal

    Nachtrag:
    Die Info bezüglich 32/64bit ist leicht verkehrt, müsste eigentlich wie folgt sein:

    Quellcode

    1. 32bit OS + 32bit Office = Root\Software\Microsoft\Office\Outlook\Addins\add-in-name
    2. 64bit OS + 32bit Office = Root\Software\Wow6432Node\Microsoft\Office\Outlook\Addins\add-in-name
    3. 64bit OS + 64bit Office = Root\Software\Microsoft\Office\Outlook\Addins\add-in-name

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „slice“ ()

    Danke @slice
    Ich denke das bringt mich weiter. Ich versuche das mal mittels InnoSetup hinzubekommen damit auch Leute ausserhalb unserer Organisation zum genuss des Add-Ins kommen können.

    Mal sehen obs klappt. Besten Dank!!

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Hallo Leute

    Mit dem Tipp von @slice bin ich super voran gekommen.

    Ich musste nur die richtigen Registryeinträge schreiben und schon hat Outlook beim nächsten Start das AddIn geladen.

    Hier mein Inno-Script:
    Spoiler anzeigen

    Quellcode

    1. ; Script generated by the Inno Script Studio Wizard.
    2. ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
    3. #define MyAppName "OutlookAttachmentHandler"
    4. #define MyAppVersion "1.1.4.23"
    5. #define MyAppPublisher "Porsche Wiener Neustadt - Sascha Patschka"
    6. #define MyAppURL "http://www.porschewrneustadt.at"
    7. [Setup]
    8. ; NOTE: The value of AppId uniquely identifies this application.
    9. ; Do not use the same AppId value in installers for other applications.
    10. ; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
    11. AppId={{ACD3861C-6C06-4D23-8FF3-BA688E6C13AE}
    12. AppName={#MyAppName}
    13. AppVersion={#MyAppVersion}
    14. ;AppVerName={#MyAppName} {#MyAppVersion}
    15. AppPublisher={#MyAppPublisher}
    16. AppPublisherURL={#MyAppURL}
    17. AppSupportURL={#MyAppURL}
    18. AppUpdatesURL={#MyAppURL}
    19. DefaultDirName={commonappdata}\{#MyAppName}
    20. DisableDirPage=yes
    21. DefaultGroupName={#MyAppName}
    22. AllowNoIcons=yes
    23. OutputBaseFilename=setup
    24. Compression=lzma
    25. SolidCompression=yes
    26. UsePreviousAppDir=False
    27. AllowUNCPath=False
    28. AppendDefaultDirName=False
    29. DisableWelcomePage=False
    30. [Languages]
    31. Name: "german"; MessagesFile: "compiler:Languages\German.isl"
    32. [Files]
    33. Source: "bin\Release\Microsoft.Office.Tools.Common.v4.0.Utilities.dll"; DestDir: "{commonappdata}\{#MyAppName}"; Flags: ignoreversion replacesameversion
    34. Source: "bin\Release\Microsoft.Office.Tools.Outlook.v4.0.Utilities.dll"; DestDir: "{commonappdata}\{#MyAppName}"; Flags: ignoreversion replacesameversion
    35. Source: "bin\Release\OutlookAppleAttachmentHandler.dll"; DestDir: "{commonappdata}\{#MyAppName}"; Flags: ignoreversion replacesameversion
    36. Source: "bin\Release\OutlookAppleAttachmentHandler.dll.config"; DestDir: "{commonappdata}\{#MyAppName}"; Flags: ignoreversion replacesameversion
    37. Source: "bin\Release\OutlookAppleAttachmentHandler.dll.manifest"; DestDir: "{commonappdata}\{#MyAppName}"; Flags: ignoreversion replacesameversion
    38. Source: "bin\Release\OutlookAppleAttachmentHandler.pdb"; DestDir: "{commonappdata}\{#MyAppName}"; Flags: ignoreversion replacesameversion
    39. Source: "bin\Release\OutlookAppleAttachmentHandler.vsto"; DestDir: "{commonappdata}\{#MyAppName}"; Flags: ignoreversion replacesameversion
    40. Source: "bin\Release\OutlookAppleAttachmentHandler.xml"; DestDir: "{commonappdata}\{#MyAppName}"; Flags: ignoreversion replacesameversion
    41. ; NOTE: Don't use "Flags: ignoreversion" on any shared system files
    42. [Icons]
    43. Name: "{group}\{cm:ProgramOnTheWeb,{#MyAppName}}"; Filename: "{#MyAppURL}"
    44. Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"
    45. [Registry]
    46. Root: "HKLM"; Subkey: "SOFTWARE\WOW6432Node\Microsoft\Office\Outlook\Addins\OutlookAppleAttachmentHandler"; ValueType: string; ValueName: "Description"; ValueData: "Speichert Anhänge und unterstützt das Drucken von Bildern"; Flags: createvalueifdoesntexist uninsdeletekey
    47. Root: "HKLM"; Subkey: "SOFTWARE\WOW6432Node\Microsoft\Office\Outlook\Addins\OutlookAppleAttachmentHandler"; ValueType: string; ValueName: "FriendlyName"; ValueData: "OutlookAttachmentHelper"; Flags: createvalueifdoesntexist uninsdeletekey
    48. Root: "HKLM"; Subkey: "SOFTWARE\WOW6432Node\Microsoft\Office\Outlook\Addins\OutlookAppleAttachmentHandler"; ValueType: dword; ValueName: "LoadBehavior"; ValueData: "3"; Flags: createvalueifdoesntexist uninsdeletekey
    49. Root: "HKLM"; Subkey: "SOFTWARE\WOW6432Node\Microsoft\Office\Outlook\Addins\OutlookAppleAttachmentHandler"; ValueType: string; ValueName: "Manifest"; ValueData: "{commonappdata}\{#MyAppName}\OutlookAppleAttachmentHandler.vsto|vstolocal"; Flags: createvalueifdoesntexist uninsdeletekey


    Danke nochmals.
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Doch, Porsche Service.

    Verkauf haben wir abgegeben, zu mühsam. 8|
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##