Add-IN programmieren, kein Tab sichtbar

Alles zu den verschiedenen Add-Ins
Antworten
jaegermeister
Foren-Einsteiger
Beiträge: 11
Registriert: 17. Sep 2007, 19:52

Add-IN programmieren, kein Tab sichtbar

Beitrag von jaegermeister »

Hi,

ich bastel zur Zeit auch gerade an einem Add-In, jedoch habe ich die letzten 2 Tage vergeblich versucht lediglich einen Tab anzuzeigen.

Hab auch schon überall gesucht, aber noch keine Lösung gefunden.

Hier mal mein C#-Code:

Code: Alles auswählen

using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using System.Drawing;
using Microsoft.HomeServer.Extensibility;

namespace Microsoft.HomeServer.HomeServerConsoleTab.InfoTab
{
    public class HomeServerTabExtender : Microsoft.HomeServer.Extensibility.IConsoleTab 
    {
        private InfoTabControl ctrlMain;
        private IConsoleServices services;
        public HomeServerTabExtender(int width, int height, IConsoleServices consoleServices)
        {
            ctrlMain = new InfoTabControl(width, height);
            this.services = consoleServices;
        }

        public Bitmap TabImage
        {
            get
            {
                return Properties.Resources.InfoTabImg;
            }
        }

        public Control TabControl
        {
            get
            {
                return ctrlMain;
            }
        }

        public string TabText
        {
            get
            {
                return "Zusatzinfos";
            }
        }

        public bool GetHelp()
        {
            return false;
        }

        public Guid SettingsGuid 
        { 
            get 
            { 
                return new Guid("010F9EE4-7C90-4ebd-812D-20B6639E844D"); 
            } 
        }

        //public bool Commit()
        //{
        //    return false;
        //}
    }

    internal class InfoTabControl : Panel 
    {
        public InfoTabControl(int width, int heigth)
        {
            Panel pnlMain = new Panel();
            pnlMain.BorderStyle = BorderStyle.FixedSingle;
            pnlMain.SetBounds(0, 0, width, heigth);
            pnlMain.Parent = this;

            Button btnStandby = new Button();
            btnStandby.Name = "btnStandby";
            btnStandby.Text = "Stand-By";
            //btnStandby.Parent = pnlMain;
            btnStandby.Location = new Point(10, 10);
            btnStandby.Size = new Size(250, 25);
            pnlMain.Controls.Add(btnStandby);

        }
    }
}
Assembly-Name: HomeServerConsoleTab.InfoTab
Default-Namespace: Microsoft.HomeServer.HomeServerConsoleTab.InfoTab

Das MSI-Paket erzeuge ich mit einem WiX-Template, was folgendermaßen aussieht:

Code: Alles auswählen

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2003/01/wi">
  <Product 
	  Id="65786B2F-7A82-4b2f-BDE8-198FF1A9870F" 
	  UpgradeCode="5C070202-9631-4a31-AF5A-98A8D932D61C"
	  Name="Windows Home Server InfoTab" 
	  Language="1033" 
	  Codepage="1252" 
	  Version="0.0.2" 
	  Manufacturer="Max Jaeger">
    <Package 
		Id="70D77374-2A34-4acd-BB17-ED4117D78971" 
		Manufacturer="Max Jaeger"
		Description="Erweiterung der Einstellungen um ein zusätzlichen InfoTab" 
		Comments="Testapplikation" 
		InstallerVersion="200" 
		Compressed="yes" />

    <Media 
		Id="1" 
		Cabinet="HomeServerConsoleTab_InfoTab_cab" 
		EmbedCab="yes" />

	<Property Id="WHSLogo">1</Property>
	<Condition Message="[ProductName] requires Windows Home Server. For more information, please refer to the User Guide.">VersionNT = 502</Condition>

	  <Directory Id="TARGETDIR" Name="SourceDir">
		<Directory Id="ProgramFilesFolder" Name="PFiles">
			<Directory Id="WHS" Name="WHSgrp" LongName="Windows Home Server">

				<Component Id="HomeServerConsoleTab.InfoTab.dll" Guid="296FFF20-A561-45c0-AD6F-EFE69444E553">
					<File Id="HomeServerConsoleTab.InfoTab.dll" Name="InfoTab.dll" LongName="HomeServerConsoleTab.InfoTab.dll" src="D:\Programmierung\C#\Projects\HS_InfoTab\HS_InfoTab\bin\Release\HomeServerConsoleTab.InfoTab.dll" Vital="yes" KeyPath="yes" DiskId="1" />
				</Component>

			</Directory>
		</Directory>
	  </Directory>

    <Feature Id="DefaultFeature" Level="1">
      <ComponentRef Id="HomeServerConsoleTab.InfoTab.dll" />
    </Feature>
  </Product>
</Wix>
GUIDs hab ich immer neue erzeugen lassen.

Ich hab echt keine Ahnung mehr wo ein Fehler sein könnte. Vielleicht sieht ja jemand direkt den Fehler, ich verzweifel langsam hier.

Die Beispiel-DLL von der Hauptseite (HomeServerConsoleTab.HomeServerBlogTest.dll) funktioniert bei mir jedoch auch nicht. Andere Add-Ins gehen aber.

Wär nett wenn mir jemand helfen könnte.
Falls ich Infos vergessen habe die ihr braucht dann kurz melden.

Gruß
Max
Benutzeravatar
AliG
Moderator
Beiträge: 3727
Registriert: 6. Jun 2007, 17:33
Wohnort: Salzburg, Österreich

Re: Add-IN programmieren, kein Tab sichtbar

Beitrag von AliG »

Hi!
Also so auf Anhieb sehe ich keinen Fehler.
Zuerst solltest du das MSI File mal weglassen, und schauen, dass das Tab mal geht (also die DLL einfach nach C:\Programme\Windows Home Server\ kopieren).
Ich könnte mir vorstellen, dass beim instanzieren deines Controls was schiefgeht, am besten schließt du den Konstruktor in einen try-catch Block ein:

Code: Alles auswählen

public HomeServerTabExtender(int width, int height, IConsoleServices consoleServices)
        {
            try
            {
            ctrlMain = new InfoTabControl(width, height);
            this.services = consoleServices;
            } 
            catch(Exception ex)
            {
            MessageBox.Show(ex.Message);
            }
        }
So wird dir die Fehlermeldung angezeigt, das hilft dir sicher!
Ansonsten hab ich auch ein Beispieltemplate gepostet (viewtopic.php?f=12&t=72#p1880), da kannst du dir anschauen wies ich mach :)
lg Alex
Mache ich etwas richtig, merkt es keiner. Mache ich etwas falsch, vergisst es keiner. :D

Mein WHS
jaegermeister
Foren-Einsteiger
Beiträge: 11
Registriert: 17. Sep 2007, 19:52

Re: Add-IN programmieren, kein Tab sichtbar

Beitrag von jaegermeister »

Hi,
hab mir jetzt mal alle möglichen Messageboxen eingebaut (Konstruktor HomeServerTabExtender, Konstruktor InfoTabControl etc.), aber er gibt mir keine einzige aus. Aber die DLL ist bei geöffneter Konsole gesperrt, sodass er sie ja doch findet und darauf zugreift. Ich kann mir das echt nicht erklären. Falls noch jemand eine Idee hat, immer her damit.

Und wie gesagt: das Beispiel was in den News gepostet war geht auch nicht, liegt vielleicht also an was anderem als an meiner DLL.

Gruß
Max
Benutzeravatar
AliG
Moderator
Beiträge: 3727
Registriert: 6. Jun 2007, 17:33
Wohnort: Salzburg, Österreich

Re: Add-IN programmieren, kein Tab sichtbar

Beitrag von AliG »

Also wenn die DLL gesperrt ist, findet er sie, richtig.
Zu dem Beispiel, du sprichst von einer HomeServerBlogTest.dll (die glaub ich noch unter der CTP erstellt wurde :) ), ich mein aber das komplette Visual Studio Project das ich als Beispiel hier (viewtopic.php?f=12&t=72#p1880) gepostet hab, wenn du da mal nur das erste Projekt erstellst (also ohne Service und Setup), dann kannst du mal schauen ob das geht.

Ansonsten würde ich Schritt für Schritt beginnen, zuerst den Konstruktor leer lassen, sodass er nichts instanziert etc, dann müsste er zumindest das Tab anzeigen....

lg Alex
Mache ich etwas richtig, merkt es keiner. Mache ich etwas falsch, vergisst es keiner. :D

Mein WHS
jaegermeister
Foren-Einsteiger
Beiträge: 11
Registriert: 17. Sep 2007, 19:52

Re: Add-IN programmieren, kein Tab sichtbar

Beitrag von jaegermeister »

Hi!

Das ist doch echt Mist.

Ich hab jetzt dein Projekt mal kompiliert und in den entsprechenden Ordner kopiert, wird aber nix angezeigt.
Dann hab ich mein Projekt noch mal kompiliert, vorher aber alles unnötige rausgeschmissen, und es wird auch nix angezeigt.
Ich bin echt am verzweifeln.
Aber dass es irgendwie gehen muss steht auch fest, da ich z. B. das AutoExit-Add-In installieren kann und der Tab wird angezeigt. Ein anderes Add-In kann ich auch erfolgreich installieren. Das ist doch echt *grrrrrrr*

Edit: Das Wake up Computer Add-In geht, da wird alles angezeigt. Was ist also unterschiedlich zu den anderen Projekten bzw. DLLs?

Falls noch jemand eine Idee hat, immer her damit, mir sind sie ausgegangen.

Gruß
Max
Benutzeravatar
AliG
Moderator
Beiträge: 3727
Registriert: 6. Jun 2007, 17:33
Wohnort: Salzburg, Österreich

Re: Add-IN programmieren, kein Tab sichtbar

Beitrag von AliG »

Hmm, interessant.
Du arbeitest auf er finalen WHS Version, oder?
Ich weiß ehrlich gesagt nicht, was da noch sein könnte....
Du hast echt alles andere rausgehaut, und es wird immer noch nicht angezeigt?

lg Alex
Mache ich etwas richtig, merkt es keiner. Mache ich etwas falsch, vergisst es keiner. :D

Mein WHS
jaegermeister
Foren-Einsteiger
Beiträge: 11
Registriert: 17. Sep 2007, 19:52

Re: Add-IN programmieren, kein Tab sichtbar

Beitrag von jaegermeister »

Ja, finale Version.
Hab mal meine DLL hochgeladen, vielleicht könntest du sie mal bei dir einspielen und schauen ob der Tab bei dir angezeigt wird.
Da ist jetzt echt nur das nötigste drin damit es überhaupt läuft, sprich alle zu implementierenden Funktionen bzw. properties.

Gruß
Max
Dateianhänge
HomeServerConsoleTab.InfoTab.zip
(4.21 KiB) 154-mal heruntergeladen
Benutzeravatar
AliG
Moderator
Beiträge: 3727
Registriert: 6. Jun 2007, 17:33
Wohnort: Salzburg, Österreich

Re: Add-IN programmieren, kein Tab sichtbar

Beitrag von AliG »

Code: Alles auswählen

 public Control TabControl
    {
        get
        {
            return null;
        }
    }
Hmm, also zumindest ein Tabcontrol muss hier hinein, null übergeben wird er nicht schlucken, bei mir wirds auch nicht angezeigt ;)

Probiers mal hiermit:

Code: Alles auswählen

        private int width;
        private int height;
        private IConsoleServices services;
        private Panel tabControl;

        public HomeServerTabExtender(int width, int height, IConsoleServices consoleServices) //Konstruktor
        {
            this.width = width;
            this.height = height;
            this.services = consoleServices;

            tabControl = new Panel();
            tabControl.Width = width;
            tabControl.Height = height;
          }
          public Control TabControl { get { return tabControl; } }
..und der Rest natürlich

lg Alex
Mache ich etwas richtig, merkt es keiner. Mache ich etwas falsch, vergisst es keiner. :D

Mein WHS
jaegermeister
Foren-Einsteiger
Beiträge: 11
Registriert: 17. Sep 2007, 19:52

Re: Add-IN programmieren, kein Tab sichtbar

Beitrag von jaegermeister »

Hmmm,

geht leider immer noch nicht.
Bei dir reicht das soweit?
Du hast doch auch die WOLComputers programmiert, oder?

Noch mal meine DLL, die es aber immer noch nicht zu nem angezeigten Tab bringt.

lg
Max
Dateianhänge
HomeServerConsoleTab.InfoTab.zip
(4.3 KiB) 164-mal heruntergeladen
Benutzeravatar
AliG
Moderator
Beiträge: 3727
Registriert: 6. Jun 2007, 17:33
Wohnort: Salzburg, Österreich

Re: Add-IN programmieren, kein Tab sichtbar

Beitrag von AliG »

Hmm, ne geht bei mir auch nicht.
Hab mal die kompilierte Version von meinem Sample Addin angehängt, die geht bei mir.
Ich könnt mir noch vorstellen, dass es an der GUID liegt, hast du schon mal eine neue erstellt?

lg Alex
HomeServerConsoleTab.SampleAddin.zip
(76.55 KiB) 172-mal heruntergeladen
Mache ich etwas richtig, merkt es keiner. Mache ich etwas falsch, vergisst es keiner. :D

Mein WHS
jaegermeister
Foren-Einsteiger
Beiträge: 11
Registriert: 17. Sep 2007, 19:52

Re: Add-IN programmieren, kein Tab sichtbar

Beitrag von jaegermeister »

Also deins geht, meins nicht. ich hab auch mal deine GUID genommen, geht aber auch nicht.

Als Entwicklungsumgebung hab ich VS C# Express. Gibts da irgendwie noch Einstellungen die man vornehmen muss?
Aber an sich sollte es damit ja auch gehen, oder?

Gruß
Max
Benutzeravatar
AliG
Moderator
Beiträge: 3727
Registriert: 6. Jun 2007, 17:33
Wohnort: Salzburg, Österreich

Re: Add-IN programmieren, kein Tab sichtbar

Beitrag von AliG »

Du musst mit den GUIDs aufpassen, kein Addin darf die selbe GUID haben wie ein anderes!
Mach einfach mal über Extras->GUID erstellen eine neue...
Meines wissens muss man nichts extra einstellen..

Achja, wie du mein Projekt kompiliert hast, hast du da die GUID ausgewechselt?
lg Alex
Mache ich etwas richtig, merkt es keiner. Mache ich etwas falsch, vergisst es keiner. :D

Mein WHS
jaegermeister
Foren-Einsteiger
Beiträge: 11
Registriert: 17. Sep 2007, 19:52

Re: Add-IN programmieren, kein Tab sichtbar

Beitrag von jaegermeister »

Ja, hab ne neue gemacht.
Habs gerade eben noch mal versucht mit ner neuen GUID und deinem Projekt, aber will nicht.
Ich hab das Gefühl dass noch irgend eine Einstellung im Eimer ist von meinem Visual Studio.
Ich werd mal weiter suchen.
Danke schon mal für deine Hilfe und fürs Testen.

Gruß
Max
Antworten