Extension Installer V2 (3 Viewers)

dukus

Portal Pro
January 20, 2006
783
748
46
Usa
Home Country
Argentina Argentina
How i see the current extension installer not really used. The some of problems with it, this interface not really help the devs, no possibility customize the setup, depend on a online repository which not exist, impossible to use with MP2 and many more.. So i decide to rewrite from zero.

The base functionality of a installer is to copy a file to a specified location on user system. The new installer based on "providers", (maybe not the right name), with this providers it is easy to extend the system.

  • InstallerType - This provide how the installer handle the files. Like "CopyFile" copy the included file to the specified location or "RegisterFont" register the included font in system.
  • PathProvider - This provider transform path templates in real path in user system.
  • SectionPanel - This are forms included in install wizard, like "Welcome Screen" or "Component Selector"
  • ActionType - This are actions attached to the panels like ("Install files", "Kill process")

For updates the extension dev should provide a url were is a version descriptor xml file. This file may be hosted in google code, or in Mediaportal server. The available extensions will be browsed on mediaportal site. The installer manage (UnInstall, Update) only the installed extension. Every extension have a unique GUID so can be identified after name change too.

The installer use groups to made install option. If a group is checked the all files belong to this group will be installed.
The install wizard have sections, every section visibility may depend on a group check.
Try to make the installer with same functionality like a NSIS or a MSI installer, but with a dev friendly user interface to make this install package.

The installer have 3 parts :
MpeMaker - utility to create extension packages (this should used by the devs) and
MpeInstaller - utility to manage the extensions (Install, UnInstall)
MPEIPlugin - window plugin to manage extensions

A small To-Do list :
  • Installer type
    • Font installer - done
    • Generic Skin installer - done
  • Actions
    • Shortcut creation on a specified location done
    • Included package installer done
    • Register DirectShow filter
    • Add registry key to windows registry
    • Lunch separated application - done
    • Add settings to MP
    • Create folder - done
    • Kill running task - done
    • Clear skin cache - done
    • Show message box - done
  • Wizard sections
    • Wizard section with radio buttons
    • Wizard section with check boxes - done
    • More customizable Wizard sections (Title, log, etc) - done
    • Script capabilities CSScriptLibrary - done
  • Misc
    • Version checking - done
    • Compatibility with Vista and W7 - done
    • Support for tv server plugins - done
    • Uninstall - done
    • Update checking - done
    • Plugin for The Installer
    • List for installed extensions done


Links to older discussion :

This installer file format isn't compatible with older mpi format
For testing use latest SVN. To make a extension Use MPEMaker.exe and for install it use MPEInstaller.exe

So i need feedback especially from plugin devs and from skinners.
 

Attachments

  • Installer1.png
    Installer1.png
    24.9 KB
  • Installer2.png
    Installer2.png
    17.1 KB
  • maker1.png
    maker1.png
    29.5 KB
  • maker2.png
    maker2.png
    28.7 KB
  • maker3.png
    maker3.png
    22.1 KB
  • plugin.png
    plugin.png
    313.6 KB
  • mpeInstaller.zip
    30.6 KB

Harley

Retired Team Member
  • Premium Supporter
  • May 7, 2004
    2,053
    1,993
    Germany
    Home Country
    Germany Germany
    Hi dukus,

    can you please give us a instruction manual, how we should use the mpi maker.

    I have do some test´s with it, but i absolute not know how i should use it.

    Would be good if you can make a instruktion manual, what shows all steps what is needed todo a skin.mpi with it.
    - How can i load my skin inside
    - how can i set customscreens like different epg´s or else with preview pictures
    - how can i set loading of fonts
    and so on and so on.

    A step by step instruction would be a helpfull thing, perhaps with some screenshots.

    Greetings Harley :)
     

    dukus

    Portal Pro
    January 20, 2006
    783
    748
    46
    Usa
    Home Country
    Argentina Argentina
    Yes Harley you are right, without manual (or a small tutorial) this is useless...., but i'm a very beginning of this project , so may the interface will be have major changes.
    In a first post i try to make a todo list ...
     

    dukus

    Portal Pro
    January 20, 2006
    783
    748
    46
    Usa
    Home Country
    Argentina Argentina
    I try to make a first tutorial, for creating skin installer, for testing reason and to know if i'm in the right way (maybe some operation are to complicated it is let me know to find a simple way for it)

    For this tutorial use a real example the XFace skin, you can get the skin files from svn https://mediaportal.svn.sourceforge.net/svnroot/mediaportal/trunk/MediaPortal Skins/Xface and all files are located in "XFACE_SVN" folder.

    1. Execute MpeMaker.exe
    2. In "Extension information" section define some information like name, version, etc
    3. In "Group&Files" section are defined the skin files, grouped in more Groups :
    First group named "Default", in this group are all generic skin files, to add files: Select the group then click "Add folder", in folder select : "XFACE_SVN\xface", and in template : "%Skin%\Xface", and check the recurse subdirectories, "Add"
    Second group add "Epg 11 row", the "add files" from "XFACE_SVN\Customize\EPG\11rows" and the in right part set the install location "%Skin%\Xface" and hit "Set"
    Same operation for "Epg 9 row"
    4. In "Install section" define the install wizard screens:
    Add a "Welcome" , "ImageRadioSelector" , "InstallSection" , and a another "Welcome", Select the "ImageRadioSelector" and in "Included file group" check the "Epg 11 row" and "Epg 9 row", with "Edit params " , define the used pictures for radio selections .
    5. Build the project.

    I try to extend this small tutorial wit progress....

    If i miss something and not working the tutorial, i attach the project file in zip extract in XFACE_SVN to use it .. And don't forget to download from the first post the new exe's
     

    Attachments

    • xface-1.9.0.xmp.zip
      30.6 KB

    1stdead

    Portal Pro
    February 1, 2008
    1,089
    139
    Copenhagen
    Home Country
    Denmark Denmark
    Hi.

    Bugs:
    1) Each time you delete a file the group collapses.
    2) Cannot folder etc a skin folder Blue3/Media with underlying files.
     

    1stdead

    Portal Pro
    February 1, 2008
    1,089
    139
    Copenhagen
    Home Country
    Denmark Denmark
    Cannot folder etc a skin folder Blue3/Media with underlying files.
    Can you explain ?
    And thx for testing !

    Step 3. I having difficulties with adding a folder to a group.

    Bugs:
    1) In setup>install selections> add install selection > mark install selection and "just" press edit params. Throws an exception

    Additional:
    [collapse]
    Se slutningen af denne meddelelse, hvis du vil have detaljer om,
    hvordan du starter JIT-fejlfinding i stedet for denne dialogboks.

    ************** Undtagelsestekst **************
    System.ArgumentOutOfRangeException: InvalidArgument=Værdi '0' er ugyldig for 'SelectedIndex'.
    Parameternavn: SelectedIndex
    ved System.Windows.Forms.ComboBox.set_SelectedIndex(Int32 value)
    ved MpeMaker.Dialogs.ParamEdit.Set(SectionParamCollection paramCollection) i F:\devel\vs2005\mp\mediaportal\MPE\MpeMaker\Dialogs\ParamEdit.cs:linje 34
    ved MpeMaker.Sections.InstallSections.btn_params_Click(Object sender, EventArgs e) i F:\devel\vs2005\mp\mediaportal\MPE\MpeMaker\Sections\InstallSections.cs:linje 154
    ved System.Windows.Forms.Control.OnClick(EventArgs e)
    ved System.Windows.Forms.Button.OnClick(EventArgs e)
    ved System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
    ved System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
    ved System.Windows.Forms.Control.WndProc(Message& m)
    ved System.Windows.Forms.ButtonBase.WndProc(Message& m)
    ved System.Windows.Forms.Button.WndProc(Message& m)
    ved System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
    ved System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
    ved System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


    ************** Indlæste assemblies **************
    mscorlib
    Assemblyversion: 2.0.0.0
    Win32-version: 2.0.50727.3082 (QFE.050727-3000)
    CodeBase: file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
    ----------------------------------------
    MpeMaker
    Assemblyversion: 1.0.0.0
    Win32-version: 1.0.0.0
    CodeBase: file:///C:/Programmer/Team%20MediaPortal/MediaPortal/MpeMaker.exe
    ----------------------------------------
    System.Windows.Forms
    Assemblyversion: 2.0.0.0
    Win32-version: 2.0.50727.3053 (netfxsp.050727-3000)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
    ----------------------------------------
    System
    Assemblyversion: 2.0.0.0
    Win32-version: 2.0.50727.3053 (netfxsp.050727-3000)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
    ----------------------------------------
    System.Drawing
    Assemblyversion: 2.0.0.0
    Win32-version: 2.0.50727.3053 (netfxsp.050727-3000)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
    ----------------------------------------
    MpeCore
    Assemblyversion: 1.0.0.0
    Win32-version: 1.0.0.0
    CodeBase: file:///C:/Programmer/Team%20MediaPortal/MediaPortal/MpeCore.DLL
    ----------------------------------------
    System.Configuration
    Assemblyversion: 2.0.0.0
    Win32-version: 2.0.50727.3053 (netfxsp.050727-3000)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Configuration/2.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
    ----------------------------------------
    System.Xml
    Assemblyversion: 2.0.0.0
    Win32-version: 2.0.50727.3082 (QFE.050727-3000)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll
    ----------------------------------------
    Utils
    Assemblyversion: 2.2.7.33102
    Win32-version: 2.2.7.23831
    CodeBase: file:///C:/Programmer/Team%20MediaPortal/MediaPortal/Utils.DLL
    ----------------------------------------
    Ionic.Zip
    Assemblyversion: 1.7.2.18
    Win32-version: 1.7.2.18
    CodeBase: file:///C:/Programmer/Team%20MediaPortal/MediaPortal/Ionic.Zip.DLL
    ----------------------------------------
    mscorlib.resources
    Assemblyversion: 2.0.0.0
    Win32-version: 2.0.50727.3082 (QFE.050727-3000)
    CodeBase: file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
    ----------------------------------------
    System.Windows.Forms.resources
    Assemblyversion: 2.0.0.0
    Win32-version: 2.0.50727.3053 (netfxsp.050727-3000)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms.resources/2.0.0.0_da_b77a5c561934e089/System.Windows.Forms.resources.dll
    ----------------------------------------
    hdbi4x4y
    Assemblyversion: 1.0.0.0
    Win32-version: 2.0.50727.3053 (netfxsp.050727-3000)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
    ----------------------------------------

    ************** JIT-fejlfinding **************
    Hvis du vil aktivere JIT-fejlfinding, skal værdien jitDebugging indstilles
    i afsnittet system.windows.forms i konfigurationsfilen
    for programmet eller computeren.
    Programmet skal desuden kompileres med fejlfinding
    aktiveret.

    Eksempel:

    <configuration>
    <system.windows.forms jitDebugging="true" />
    </configuration>

    Når JIT-fejlfinding er aktiveret, bliver alle ikke-afviklede
    undtagelser sendt til den JIT-fejlfindingsfunktion, der er registreret på computeren, i stedet for
    at blive afviklet af denne dialogboks.
    [/collapse]


    2) same as above but just press "preview".
    3) Change display name in setup>groups and files. Doesn't change name in list.
    4) Likewise as 3 install loction doesn't update.
    5) Append file extension automatically.
    6) Trying to install, fails while copying files:
    [collapse]Se slutningen af denne meddelelse, hvis du vil have detaljer om,
    hvordan du starter JIT-fejlfinding i stedet for denne dialogboks.

    ************** Undtagelsestekst **************
    System.IO.DirectoryNotFoundException: En del af stien 'C:\Documents and Settings\All Users\Application Data\Team MediaPortal\MediaPortal\Installer\V2\7ddae5e4-c755-4fca-a110-c392bed0b22d\0.0.7.0\UninstallInfo.xml' blev ikke fundet.
    ved System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
    ved System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy)
    ved System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options)
    ved System.IO.StreamWriter.CreateFile(String path, Boolean append)
    ved System.IO.StreamWriter..ctor(String path, Boolean append, Encoding encoding, Int32 bufferSize)
    ved System.IO.StreamWriter..ctor(String path)
    ved MpeCore.Classes.UnInstallInfoCollection.Save(String fileName) i F:\devel\vs2005\mp\mediaportal\MPE\MpeCore\Classes\UnInstallInfoCollection.cs:linje 86
    ved MpeCore.Classes.UnInstallInfoCollection.Save() i F:\devel\vs2005\mp\mediaportal\MPE\MpeCore\Classes\UnInstallInfoCollection.cs:linje 80
    ved MpeCore.PackageClass.Install() i F:\devel\vs2005\mp\mediaportal\MPE\MpeCore\PackageClass.cs:linje 60
    ved MpeCore.Classes.SectionPanel.InstallSection.InstallSection_Shown(Object sender, EventArgs e) i F:\devel\vs2005\mp\mediaportal\MPE\MpeCore\Classes\SectionPanel\InstallSection.cs:linje 124
    ved System.Windows.Forms.Form.OnShown(EventArgs e)
    ved System.Windows.Forms.Form.CallShownEvent()
    ved System.Windows.Forms.Control.InvokeMarshaledCallbackDo(ThreadMethodEntry tme)
    ved System.Windows.Forms.Control.InvokeMarshaledCallbackHelper(Object obj)
    ved System.Threading.ExecutionContext.runTryCode(Object userData)
    ved System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData)
    ved System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
    ved System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
    ved System.Windows.Forms.Control.InvokeMarshaledCallback(ThreadMethodEntry tme)
    ved System.Windows.Forms.Control.InvokeMarshaledCallbacks()


    ************** Indlæste assemblies **************
    mscorlib
    Assemblyversion: 2.0.0.0
    Win32-version: 2.0.50727.3082 (QFE.050727-3000)
    CodeBase: file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
    ----------------------------------------
    MpeInstaller
    Assemblyversion: 1.0.0.0
    Win32-version: 1.0.0.0
    CodeBase: file:///C:/Programmer/Team%20MediaPortal/MediaPortal/MpeInstaller.exe
    ----------------------------------------
    System.Windows.Forms
    Assemblyversion: 2.0.0.0
    Win32-version: 2.0.50727.3053 (netfxsp.050727-3000)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
    ----------------------------------------
    System
    Assemblyversion: 2.0.0.0
    Win32-version: 2.0.50727.3053 (netfxsp.050727-3000)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
    ----------------------------------------
    System.Drawing
    Assemblyversion: 2.0.0.0
    Win32-version: 2.0.50727.3053 (netfxsp.050727-3000)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
    ----------------------------------------
    MpeCore
    Assemblyversion: 1.0.0.0
    Win32-version: 1.0.0.0
    CodeBase: file:///C:/Programmer/Team%20MediaPortal/MediaPortal/MpeCore.DLL
    ----------------------------------------
    System.Configuration
    Assemblyversion: 2.0.0.0
    Win32-version: 2.0.50727.3053 (netfxsp.050727-3000)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Configuration/2.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
    ----------------------------------------
    System.Xml
    Assemblyversion: 2.0.0.0
    Win32-version: 2.0.50727.3082 (QFE.050727-3000)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll
    ----------------------------------------
    Utils
    Assemblyversion: 2.2.7.33102
    Win32-version: 2.2.7.23831
    CodeBase: file:///C:/Programmer/Team%20MediaPortal/MediaPortal/Utils.DLL
    ----------------------------------------
    Ionic.Zip
    Assemblyversion: 1.7.2.18
    Win32-version: 1.7.2.18
    CodeBase: file:///C:/Programmer/Team%20MediaPortal/MediaPortal/Ionic.Zip.DLL
    ----------------------------------------
    mscorlib.resources
    Assemblyversion: 2.0.0.0
    Win32-version: 2.0.50727.3082 (QFE.050727-3000)
    CodeBase: file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
    ----------------------------------------
    araa7ump
    Assemblyversion: 1.0.0.0
    Win32-version: 2.0.50727.3053 (netfxsp.050727-3000)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
    ----------------------------------------
    mc8qzxsp
    Assemblyversion: 1.0.0.0
    Win32-version: 2.0.50727.3053 (netfxsp.050727-3000)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
    ----------------------------------------
    System.Windows.Forms.resources
    Assemblyversion: 2.0.0.0
    Win32-version: 2.0.50727.3053 (netfxsp.050727-3000)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms.resources/2.0.0.0_da_b77a5c561934e089/System.Windows.Forms.resources.dll
    ----------------------------------------

    ************** JIT-fejlfinding **************
    Hvis du vil aktivere JIT-fejlfinding, skal værdien jitDebugging indstilles
    i afsnittet system.windows.forms i konfigurationsfilen
    for programmet eller computeren.
    Programmet skal desuden kompileres med fejlfinding
    aktiveret.

    Eksempel:

    <configuration>
    <system.windows.forms jitDebugging="true" />
    </configuration>

    Når JIT-fejlfinding er aktiveret, bliver alle ikke-afviklede
    undtagelser sendt til den JIT-fejlfindingsfunktion, der er registreret på computeren, i stedet for
    at blive afviklet af denne dialogboks.


    [/collapse]


    Improvement suggestions:
    1) I'm missing something like: %Plugins\Windows (and the other ones) in install location.
    2) Some sort of logo like in the old MPi maker(dunno if you plan to make this online or not)
    3)
     

    Users who are viewing this thread

    Top Bottom