diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
new file mode 100644
index 0000000..482daca
--- /dev/null
+++ b/.github/CODEOWNERS
@@ -0,0 +1 @@
+* @Mediaportal-Plugin-Team/plugin-developers
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
new file mode 100644
index 0000000..56fcc54
--- /dev/null
+++ b/.github/dependabot.yml
@@ -0,0 +1,15 @@
+version: 2
+
+updates:
+ - package-ecosystem: "github-actions"
+ directories:
+ - "*"
+ schedule:
+ interval: weekly
+ day: monday
+ time: "12:00"
+ labels:
+ - dependencies
+ commit-message:
+ prefix: "DEP"
+ open-pull-requests-limit: 10
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
new file mode 100644
index 0000000..fa1fda0
--- /dev/null
+++ b/.github/workflows/build.yml
@@ -0,0 +1,334 @@
+name: Build / MPSync Plugin
+
+on:
+ push:
+ # On Push to Master branch
+ branches:
+ - master
+ # Ignore all Tags / Release
+ tags-ignore:
+ - '**'
+
+ workflow_call:
+ inputs:
+ retention-build:
+ description: "Retention Period for Setup files. Default is 90"
+ default: 90
+ required: false
+ type: number
+ outputs:
+ version:
+ description: "MPE1 Version"
+ value: ${{ jobs.mpe.outputs.version }}
+
+jobs:
+ build:
+ name: MPSync Plugin / Build
+ runs-on: windows-2022
+ steps:
+ - name: Setup Visual Studio 2022
+ uses: microsoft/setup-msbuild@v2
+ with:
+ vs-version: 16.11
+
+ - name: Git Checkout
+ uses: actions/checkout@v6
+ with:
+ fetch-depth: 0
+
+ - name: Nuget
+ run: |
+ nuget restore
+ working-directory: ${{ github.workspace }}\MPSync
+ shell: cmd
+
+ - name: Git Checkout / MPE / XPath
+ uses: actions/checkout@v6
+ with:
+ repository: Mediaportal-Plugin-Team/Mediaportal-Tools
+ path: Tools
+
+ - name: Build (x86)
+ run: |
+ build.cmd x86 < nul
+ working-directory: ${{ github.workspace }}\build
+ shell: cmd
+
+ - name: Build (x64)
+ run: |
+ build.cmd x64 < nul
+ working-directory: ${{ github.workspace }}\build
+ shell: cmd
+
+ - name: Upload Artifact / Plugin
+ uses: actions/upload-artifact@v7
+ if: ${{ success() }}
+ with:
+ name: MPSync
+ path: |
+ ${{ github.workspace }}\MPSync\MPSync\bin\Release\MPSync.dll
+ retention-days: ${{ inputs.retention-build || 90 }}
+ if-no-files-found: error
+
+ - name: Save cache
+ uses: actions/cache/save@v5
+ with:
+ path: ${{ github.workspace }}
+ key: plugin
+
+ changes:
+ name: XMP2 / Changed
+ runs-on: ubuntu-latest
+ outputs:
+ changes: ${{ steps.changes.outputs.xmp }}
+ steps:
+ - uses: actions/checkout@v6
+ - uses: dorny/paths-filter@v3
+ id: changes
+ with:
+ filters: |
+ xmp:
+ - '**.xmp2'
+
+ codeql:
+ name: CodeQL
+ if: ${{ needs.changes.outputs.changes == 'true' }}
+ uses: Mediaportal-Plugin-Team/Mediaportal-Tools/.github/workflows/codeql.yml@master
+ with:
+ nuget-restore: true
+ nuget-path: MPSync
+ needs:
+ - build
+ - changes
+ permissions:
+ security-events: write
+ secrets: inherit
+
+ mpe:
+ name: MPSync Plugin / MPE
+ runs-on: windows-2022
+ needs:
+ - build
+ - changes
+ outputs:
+ version: ${{ steps.version.outputs.version }}
+ changes: ${{ needs.changes.outputs.changes }}
+ steps:
+ - name: Restore cache
+ uses: actions/cache/restore@v5
+ with:
+ path: ${{ github.workspace }}
+ key: plugin
+
+ - name: Git Checkout / MPE / XPath
+ uses: actions/checkout@v6
+ with:
+ repository: Mediaportal-Plugin-Team/Mediaportal-Tools
+ path: Tools
+
+ - name: MP folder for MPEMaker
+ run: |
+ mkdir "C:\Team MediaPortal"
+ shell: cmd
+
+ - name: Link to MPEMaker
+ run: |
+ mklink /J "C:\Team MediaPortal\MediaPortal" "${{ github.workspace }}\Tools\MPEMaker"
+ shell: cmd
+
+ - name: Get MPE1 Version
+ id: version
+ run: |
+ FOR /F "tokens=*" %%i IN ('..\Tools\Tools\sigcheck.exe -accepteula -nobanner -n "..\MPSync\MPSync\bin\Release\MPSync.dll"') DO (ECHO version=%%i >> %GITHUB_OUTPUT%)
+ working-directory: ${{ github.workspace }}\build
+ shell: cmd
+
+ - name: Update Known Extensions
+ run: |
+ MPEUpdater.exe
+ working-directory: ${{ github.workspace }}\Tools\MPEMaker
+ shell: cmd
+
+ - name: Build MPE1
+ run: |
+ installer.cmd
+ working-directory: ${{ github.workspace }}\build
+ shell: cmd
+
+ - name: Upload Artifact / MPE1
+ uses: actions/upload-artifact@v7
+ if: ${{ success() }}
+ with:
+ name: MPSync MPE1
+ path: |
+ ${{ github.workspace }}\MPEI\MPSync-*.mpe1
+ retention-days: ${{ inputs.retention-build || 90 }}
+ if-no-files-found: error
+
+ - name: Upload Artifact / MPE XML
+ uses: actions/upload-artifact@v7
+ if: ${{ success() && needs.changes.outputs.changes == 'true' }}
+ with:
+ name: MPSync XML
+ path: |
+ ${{ github.workspace }}\MPEI\MPSync_update.xml
+ retention-days: ${{ inputs.retention-build || 90 }}
+ if-no-files-found: error
+
+ - name: Get Release Version Description
+ if: ${{ success() && needs.changes.outputs.changes == 'true' }}
+ run: |
+ call ..\Tools\XPath\xpath.cmd "MPSync_update.xml" "//Items/PackageClass/GeneralInfo/VersionDescription" last > description.txt
+ working-directory: ${{ github.workspace }}\MPEI
+ shell: cmd
+
+ - name: Add Badges to Release Version Description
+ if: ${{ success() && needs.changes.outputs.changes == 'true' }}
+ run: |
+ ECHO. >> description.txt
+ ECHO [](https://github.com/Mediaportal-Plugin-Team/MPSync/releases/tag/v${{steps.version.outputs.version}}) [](https://github.com/vshymanskyy/StandWithUkraine/blob/main/docs/README.md) >> description.txt
+ working-directory: ${{ github.workspace }}\MPEI
+ shell: cmd
+
+ - name: Clean Release Version Description
+ if: ${{ success() && needs.changes.outputs.changes == 'true' }}
+ run: |
+ ..\Tools\Tools\sed.exe -i "s/ \//\//g" description.txt
+ working-directory: ${{ github.workspace }}\MPEI
+ shell: cmd
+
+ - name: Upload Artifact / Version Description
+ uses: actions/upload-artifact@v7
+ if: ${{ success() && needs.changes.outputs.changes == 'true' }}
+ with:
+ name: MPSync Version Description
+ path: |
+ ${{ github.workspace }}\MPEI\description.txt
+ retention-days: ${{ inputs.retention-build || 90 }}
+ if-no-files-found: error
+
+ xml:
+ name: MPSync Plugin / XML
+ runs-on: ubuntu-latest
+ if: ${{ needs.mpe.outputs.changes == 'true' }}
+ needs:
+ - mpe
+ permissions:
+ contents: write
+ outputs:
+ changes: ${{ needs.mpe.outputs.changes }}
+ steps:
+ - name: Git Checkout
+ uses: actions/checkout@v6
+ with:
+ fetch-depth: 0
+
+ - name: Download Artifacts
+ uses: actions/download-artifact@v8
+ with:
+ name: MPSync XML
+ path: ${{ github.workspace }}/MPEI/
+
+ - name: Update / MPE1 XML
+ uses: EndBug/add-and-commit@v9
+ with:
+ message: 'MPSync ${{needs.mpe.outputs.version}} / Release'
+ add: '${{ github.workspace }}/MPEI/MPSync_update.xml'
+
+ - name: Delete XML Artifact
+ uses: geekyeggo/delete-artifact@v5
+ with:
+ name: MPSync XML
+ failOnError: false
+
+ release:
+ name: MPSync Plugin / Release
+ if: ${{ needs.mpe.outputs.changes == 'true' }}
+ needs:
+ - mpe
+ - xml
+ permissions:
+ contents: write
+ outputs:
+ changes: ${{ needs.mpe.outputs.changes }}
+
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Download Artifacts
+ uses: actions/download-artifact@v8
+ with:
+ name: MPSync MPE1
+ path: release-files
+
+ - name: Download Artifacts
+ uses: actions/download-artifact@v8
+ with:
+ name: MPSync Version Description
+ path: release-description
+
+ - name: Check Artifacts
+ run: |
+ ls -l
+ working-directory: release-files
+
+ - name: Release
+ uses: softprops/action-gh-release@v2
+ with:
+ name: MPSync v${{needs.mpe.outputs.version}}
+ tag_name: v${{needs.mpe.outputs.version}}
+ body_path: release-description/description.txt
+ generate_release_notes: true
+ files: |
+ release-files/*.mpe1
+
+ - name: Delete MPE1 Artifact
+ uses: geekyeggo/delete-artifact@v5
+ with:
+ name: MPSync MPE1
+ failOnError: false
+
+ - name: Delete Version Description Artifact
+ uses: geekyeggo/delete-artifact@v5
+ with:
+ name: MPSync Version Description
+ failOnError: false
+
+ ci-status:
+ name: Build Status
+ runs-on: ubuntu-latest
+ needs:
+ - build
+ - mpe
+ if: always()
+ steps:
+ - name: Success
+ if: ${{ !(contains(needs.*.result, 'failure')) }}
+ run: exit 0
+ - name: Failure
+ if: ${{ contains(needs.*.result, 'failure') }}
+ run: exit 1
+
+ release-status:
+ name: Release Status
+ if: ${{ needs.release.outputs.changes == 'true' }}
+ runs-on: ubuntu-latest
+ needs:
+ - release
+ steps:
+ - name: Success
+ if: ${{ !(contains(needs.*.result, 'failure')) }}
+ run: exit 0
+ - name: Failure
+ if: ${{ contains(needs.*.result, 'failure') }}
+ run: exit 1
+
+ cache-clear:
+ name: Clear cache
+ runs-on: ubuntu-latest
+ needs:
+ - mpe
+ if: always()
+ steps:
+ - name: Clear cache
+ uses: easimon/wipe-cache@main
diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml
new file mode 100644
index 0000000..cd2e9c2
--- /dev/null
+++ b/.github/workflows/pull-request.yml
@@ -0,0 +1,69 @@
+name: Test / MPSync Plugin
+
+on:
+ workflow_dispatch:
+ pull_request:
+ types:
+ - opened
+ - synchronize
+ - edited
+ - ready_for_review
+ branches:
+ - master
+
+jobs:
+ build:
+ name: MPSync Plugin / Build
+ runs-on: windows-2022
+ steps:
+ - name: Setup Visual Studio 2022
+ uses: microsoft/setup-msbuild@v2
+ with:
+ vs-version: 16.11
+
+ - name: Git Checkout
+ uses: actions/checkout@v6
+ with:
+ fetch-depth: 0
+
+ - name: Nuget
+ run: |
+ nuget restore
+ working-directory: ${{ github.workspace }}\MPSync
+ shell: cmd
+
+ - name: Build (x86)
+ run: |
+ build.cmd x86 < nul
+ working-directory: ${{ github.workspace }}\build
+ shell: cmd
+
+ - name: Build (x64)
+ run: |
+ build.cmd x64 < nul
+ working-directory: ${{ github.workspace }}\build
+ shell: cmd
+
+ - name: Upload Artifact / Plugin
+ uses: actions/upload-artifact@v7
+ if: ${{ success() }}
+ with:
+ name: MPSync
+ path: |
+ ${{ github.workspace }}\MPSync\MPSync\bin\Release\MPSync.dll
+ retention-days: ${{ inputs.retention-build || 90 }}
+ if-no-files-found: error
+
+ ci-status:
+ name: Build Status
+ runs-on: ubuntu-latest
+ needs:
+ - build
+ if: always()
+ steps:
+ - name: Success
+ if: ${{ !(contains(needs.*.result, 'failure')) }}
+ run: exit 0
+ - name: Failure
+ if: ${{ contains(needs.*.result, 'failure') }}
+ run: exit 1
diff --git a/.github/workflows/workflow_yaml_lint.yml b/.github/workflows/workflow_yaml_lint.yml
new file mode 100644
index 0000000..cc51387
--- /dev/null
+++ b/.github/workflows/workflow_yaml_lint.yml
@@ -0,0 +1,23 @@
+name: Workflow / YAML lint
+
+on:
+ push:
+ branches: [main]
+ paths:
+ - "**.yaml"
+ - "**.yml"
+ pull_request:
+ paths:
+ - "**.yaml"
+ - "**.yml"
+ workflow_dispatch:
+
+jobs:
+ yamllint:
+ name: 🧹 Yaml lint
+ runs-on: ubuntu-latest
+ steps:
+ - name: â¤µï¸ Check out configuration from GitHub
+ uses: actions/checkout@v6
+ - name: 🚀 Run yamllint
+ run: yamllint --strict .
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..f401560
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,46 @@
+#OS junk files
+[Tt]humbs.db
+*.DS_Store
+
+#Visual Studio files
+*.[Oo]bj
+*.exe
+*.pdb
+*.user
+*.aps
+*.pch
+*.vspscc
+*.vssscc
+*_i.c
+*_p.c
+*.ncb
+*.suo
+*.tlb
+*.tlh
+*.bak
+*.[Cc]ache
+*.ilk
+*.log
+*.lib
+*.sbr
+*.sdf
+ipch/
+obj/
+[Bb]in
+[Dd]ebug*/
+[Rr]elease*/
+Ankh.NoLoad
+MPSync/packages/
+#Tooling
+_ReSharper*/
+*.resharper
+[Tt]est[Rr]esult*
+
+#Project files
+[Bb]uild/
+
+#Subversion files
+.svn
+
+# Office Temp Files
+~$*
\ No newline at end of file
diff --git a/.yamllint b/.yamllint
new file mode 100644
index 0000000..8e4e353
--- /dev/null
+++ b/.yamllint
@@ -0,0 +1,21 @@
+---
+extends: default
+
+ignore-from-file: .gitignore
+
+rules:
+ document-start: disable
+ empty-lines:
+ level: error
+ max: 1
+ max-start: 0
+ max-end: 1
+ indentation:
+ level: error
+ spaces: 2
+ indent-sequences: true
+ check-multi-line-strings: false
+ line-length: disable
+ truthy: disable
+ new-lines: disable
+ comments-indentation: disable
diff --git a/External/Common.Utils.dll b/External/Common.Utils.dll
new file mode 100644
index 0000000..006014d
Binary files /dev/null and b/External/Common.Utils.dll differ
diff --git a/External/Core.dll b/External/Core.dll
new file mode 100644
index 0000000..1046da0
Binary files /dev/null and b/External/Core.dll differ
diff --git a/External/UpdateExternals.bat b/External/UpdateExternals.bat
new file mode 100644
index 0000000..dae2de9
--- /dev/null
+++ b/External/UpdateExternals.bat
@@ -0,0 +1,42 @@
+@echo off
+cls
+Title Updating externals
+
+setlocal EnableDelayedExpansion
+
+set LOG=update.log
+echo. > %LOG%
+
+if "%programfiles(x86)%XXX"=="XXX" goto 32BIT
+ :: 64-bit
+ set PROGS=%programfiles(x86)%
+ goto CONT
+:32BIT
+ set PROGS=%ProgramFiles%
+:CONT
+IF NOT EXIST "%PROGS%\Team MediaPortal\MediaPortal\" SET PROGS=C:
+
+echo PROGS=%PROGS% >> %LOG%
+
+:: Predefined folders
+set MP_PROG=%PROGS%\Team MediaPortal\MediaPortal
+set MP_PLUG=%MP_PROG%\plugins\Windows
+set MP_PROC=%MP_PROG%\plugins\process
+
+FOR %%i IN (*.dll) DO (
+ echo %%i
+ if exist !MP_PROG!\%%i (
+ echo Found %%i in !MP_PROG! >> %LOG%
+ copy /y "!MP_PROG!\%%i" . >> %LOG%
+ ) else (
+ if exist !MP_PLUG!\%%i (
+ echo Found %%i in !MP_PLUG! >> %LOG%
+ copy /y "!MP_PLUG!\%%i" . >> %LOG%
+ ) else (
+ if exist !MP_PROC!\%%i (
+ echo Found %%i in !MP_PROC! >> %LOG%
+ copy /y "!MP_PROC!\%%i" . >> %LOG%
+ )
+ )
+ )
+)
diff --git a/External/Utils.dll b/External/Utils.dll
new file mode 100644
index 0000000..88bb740
Binary files /dev/null and b/External/Utils.dll differ
diff --git a/Externals/System.Data.SQLite.dll b/Externals/System.Data.SQLite.dll
deleted file mode 100644
index f72b637..0000000
Binary files a/Externals/System.Data.SQLite.dll and /dev/null differ
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..f288702
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,674 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+
+ Copyright (C)
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+ Copyright (C)
+ This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+ You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+.
+
+ The GNU General Public License does not permit incorporating your program
+into proprietary programs. If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License. But first, please read
+.
diff --git a/MPEI/MPSync.xmp2 b/MPEI/MPSync.xmp2
index badd956..b3def6c 100644
--- a/MPEI/MPSync.xmp2
+++ b/MPEI/MPSync.xmp2
@@ -10,31 +10,31 @@
MPSync install
-
+ AlwaysOverwrite
- ..\..\..\..\MPSync\MPSync.dll
+ ..\MPSync\MPSync\bin\Release\MPSync.dllInstaller{CopyFile}\{9d3d7efb-e025-422a-8fdd-f24ccf451cfd}-CDB_Sync.dll%Plugins%\process\MPSync.dll
-
+ AlwaysOverwrite
- ..\..\..\..\MPSync\MPSync_Launcher.exe
+ ..\MPSync_Launcher\MPSync_Launcher\bin\Release\x86\MPSync_Launcher.exeInstaller{CopyFile}\{aa975164-ed31-4f2e-90a4-0afebc9adfe9}-MPSync_Launcher.exe%Base%\MPSync_Launcher.exe
-
+ AlwaysOverwrite
- ..\..\..\..\MPSync\MPSync_Process.exe
- Installer{CopyFile}\{bc675913-e281-499c-853f-6ba39a64a7b7}-MPSync_Process.exe
- %Base%\MPSync_Process.exe
+ ..\MPSync_Launcher\MPSync_Launcher\bin\Release\x64\MPSync_Launcher.exe
+ Installer{CopyFile}\{dc92e07c-11f9-4751-b74a-28ed195fb914}-MPSync_Launcher.exe
+ %Base%\MPSync_Launcher.exe
-
+ AlwaysOverwrite
- ..\..\..\..\MPSync\MPSync_DirectoryEnumerator.dll
+ ..\MPSync\FastDirectoryEnumerator\bin\Release\MPSync_DirectoryEnumerator.dllInstaller{CopyFile}\{c84def1a-3a36-4335-97c3-99dc63114fde}-MPSync_DirectoryEnumerator.dll%Plugins%\process\MPSync_DirectoryEnumerator.dll
@@ -48,12 +48,26 @@
SQLite
-
+ AlwaysOverwrite
- ..\..\..\..\MPSync\System.Data.SQLite.dll
+ ..\MPSync\MPSync\bin\Release\System.Data.SQLite.dllInstaller{CopyFile}\{fde0e846-bd88-4806-9aa1-01837c53aa25}-System.Data.SQLite.dll
- %Base%\System.Data.SQLite.dll
+ %Plugins%\process\System.Data.SQLite.dll
+
+
+
+ AlwaysOverwrite
+ ..\MPSync\MPSync\bin\Release\x86\SQLite.Interop.dll
+ Installer{CopyFile}\{a0bd48e7-3523-4734-a693-f1c331346115}-SQLite.Interop.dll
+ %Plugins%\process\x86\SQLite.Interop.dll
+
+
+
+ AlwaysOverwrite
+ ..\MPSync\MPSync\bin\Release\x64\SQLite.Interop.dll
+ Installer{CopyFile}\{263c7de5-cba7-4ec3-84b3-d256b0617398}-SQLite.Interop.dll
+ %Plugins%\process\x64\SQLite.Interop.dll
@@ -62,7 +76,7 @@
-
+
@@ -96,7 +110,7 @@ Click Next to continue or Cancel to exit Setup.
Welcome ScreenNextCancel
-
+
@@ -118,13 +132,13 @@ Click Next to continue or Cancel to exit Setup.
-
+ AfterPanelShow
-
+
@@ -158,7 +172,7 @@ Click Next to continue or Cancel to exit Setup.
Install SectionNext
-
+
@@ -185,7 +199,7 @@ Click Next to continue or Cancel to exit Setup.
-
+
@@ -226,6 +240,7 @@ Click Next to continue or Cancel to exit Setup.
truerequires Moving Pictures version 1.5.1.1487 or higherMoving Pictures
+ NoneExtension
@@ -245,25 +260,27 @@ Click Next to continue or Cancel to exit Setup.
truerequires MP-TVSeries version 3.4.2.2018 or higherMP-TVSeries
+ NoneMediaPortal1
- 1
- 6
- 27644
+ 32
+ 100
+ 0
- 1
- 1
- 6
- 27644
+ *
+ *
+ *
+ *false
- This version of MPSync is only compatible with MediaPortal 1.7 or greater. Please download version that is supported by your version of MediaPortal from the MPSync homepage.
+ Requires MediaPortal 1.32.100.0 or higher!MediaPortal
+ None
@@ -293,20 +310,24 @@ Click Next to continue or Cancel to exit Setup.
m3rcuryhttp://www.team-mediaportal.com/extensions/utilities/cdb-sync?lang=enhttp://forum.team-mediaportal.com/threads/plugin-mpsync-mediaportal-synchronization.117417/#post-975411
- http://www.team-mediaportal.com/index.php?option=com_mtree&task=att_download&link_id=268&cf_id=52
+ https://raw.githubusercontent.com/Mediaportal-Plugin-Team/MPSync/master/MPEI/MPSync_update.xml10
- 0
- 22
+ 6
+ 0This plugin synchronizes your MediaPortal databases with a central database as well as thumbs folder, so that any additons can by automatically applied to any other MP seat you might have in your household.
- Added some more logging and minor bug fixing. Bumping up SQLite version.
+ - Improved exception logging
+- Fix for overwriting watched and resume status of moving pictures database
+- Fix for loading wrong dll in MP 1.36
+Stable
- http://www.team-mediaportal.com/index.php?option=com_mtree&task=att_download&link_id=268&cf_id=24
- 2018-09-24T23:39:41
+ https://github.com/Mediaportal-Plugin-Team/MPSync/releases/download/v[Version]/MPSync-[Version].mpe1
+ 2024-12-20T23:23:23synchronization, database, thumbs, any folder you set up.
- D:\Software\MediaPortal\MPSync\[Name]-v[Version].mpe1
+ AnyCPU
+ [Name]-[Version].mpe1
@@ -341,60 +362,74 @@ Click Next to continue or Cancel to exit Setup.
-
+ AlwaysOverwrite
- ..\..\..\..\MPSync\MPSync.dll
+ ..\MPSync\MPSync\bin\Release\MPSync.dllInstaller{CopyFile}\{9d3d7efb-e025-422a-8fdd-f24ccf451cfd}-CDB_Sync.dll%Plugins%\process\MPSync.dll
-
+ AlwaysOverwrite
- ..\..\..\..\MPSync\MPSync_Launcher.exe
+ ..\MPSync_Launcher\MPSync_Launcher\bin\Release\x86\MPSync_Launcher.exeInstaller{CopyFile}\{aa975164-ed31-4f2e-90a4-0afebc9adfe9}-MPSync_Launcher.exe%Base%\MPSync_Launcher.exe
-
+ AlwaysOverwrite
- ..\..\..\..\MPSync\MPSync_Process.exe
- Installer{CopyFile}\{bc675913-e281-499c-853f-6ba39a64a7b7}-MPSync_Process.exe
- %Base%\MPSync_Process.exe
+ ..\MPSync_Launcher\MPSync_Launcher\bin\Release\x64\MPSync_Launcher.exe
+ Installer{CopyFile}\{dc92e07c-11f9-4751-b74a-28ed195fb914}-MPSync_Launcher.exe
+ %Base%\MPSync_Launcher.exe
-
+ AlwaysOverwrite
- ..\..\..\..\MPSync\MPSync_DirectoryEnumerator.dll
+ ..\MPSync\FastDirectoryEnumerator\bin\Release\MPSync_DirectoryEnumerator.dllInstaller{CopyFile}\{c84def1a-3a36-4335-97c3-99dc63114fde}-MPSync_DirectoryEnumerator.dll%Plugins%\process\MPSync_DirectoryEnumerator.dll
-
+ AlwaysOverwrite
- ..\..\..\..\MPSync\System.Data.SQLite.dll
+ ..\MPSync\MPSync\bin\Release\System.Data.SQLite.dllInstaller{CopyFile}\{fde0e846-bd88-4806-9aa1-01837c53aa25}-System.Data.SQLite.dll
- %Base%\System.Data.SQLite.dll
+ %Plugins%\process\System.Data.SQLite.dll
+
+
+
+ AlwaysOverwrite
+ ..\MPSync\MPSync\bin\Release\x86\SQLite.Interop.dll
+ Installer{CopyFile}\{a0bd48e7-3523-4734-a693-f1c331346115}-SQLite.Interop.dll
+ %Plugins%\process\x86\SQLite.Interop.dll
+
+
+
+ AlwaysOverwrite
+ ..\MPSync\MPSync\bin\Release\x64\SQLite.Interop.dll
+ Installer{CopyFile}\{263c7de5-cba7-4ec3-84b3-d256b0617398}-SQLite.Interop.dll
+ %Plugins%\process\x64\SQLite.Interop.dll
-
+ OverwriteIfOlderMPSync.png
- Installer{CopyFile}\{0e36e025-fd3a-48f3-b8ee-10ab628e5d69}-MPSync.png
+ Installer{CopyFile}\{8a36270c-eb35-4497-bafc-f81383cdc9a2}-MPSync.png
-
+ OverwriteIfOlderMPSync_logo.png
- Installer{CopyFile}\{52ff3fbf-3a95-457f-9469-cd07e843ada9}-MPSync_logo.png
+ Installer{CopyFile}\{43497d95-e973-4867-b86c-2f9ab2402319}-MPSync_logo.png
-
+ OverwriteIfOlderMP_Packaging.png
- Installer{CopyFile}\{804c2894-f2b6-4895-8c6a-6c0377f28d4f}-MP_Packaging.png
+ Installer{CopyFile}\{31e4c41c-6c7d-4d85-9834-ad8422fcab5a}-MP_Packaging.png
@@ -402,7 +437,7 @@ Click Next to continue or Cancel to exit Setup.
MPSync.xmp2
- D:\Software\MediaPortal\Subversion\MPSync.git\trunk\MPSync\MPSync_update.xml
+ MPSync_update.xml
diff --git a/MPEI/MPSync_Launcher.exe b/MPEI/MPSync_Launcher.exe
deleted file mode 100644
index 39b0aa6..0000000
Binary files a/MPEI/MPSync_Launcher.exe and /dev/null differ
diff --git a/MPEI/MPSync_update.xml b/MPEI/MPSync_update.xml
new file mode 100644
index 0000000..23f0050
--- /dev/null
+++ b/MPEI/MPSync_update.xml
@@ -0,0 +1,1167 @@
+
+
+
+
+ 2.0
+
+
+
+ Default
+ true
+ Default
+
+
+
+
+
+ SQLite
+ true
+ SQLite
+
+
+
+
+
+
+
+
+
+
+
+
+ Extension
+ 284fc21c-86e3-4346-bf31-9e38c75e0242
+
+ 1
+ 5
+ 1
+ 1487
+
+
+ 9
+ 9
+ 9
+ 9
+
+ true
+ requires Moving Pictures version 1.5.1.1487 or higher
+ Moving Pictures
+ None
+
+
+ Extension
+ 5e2777c3-966c-407f-b5a9-e51205b70b3e
+
+ 3
+ 4
+ 2
+ 2018
+
+
+ 9
+ 9
+ 9
+ 9
+
+ true
+ requires MP-TVSeries version 3.4.2.2018 or higher
+ MP-TVSeries
+ None
+
+
+ MediaPortal
+
+
+ 1
+ 32
+ 100
+ 0
+
+
+ *
+ *
+ *
+ *
+
+ false
+ Requires MediaPortal 1.32.100.0 or higher!
+ MediaPortal
+ None
+
+
+
+
+
+
+
+
+
+ 1.6.100.0
+ 1.6.100.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MPSync
+ 8ddbfb53-7222-41fd-a139-407eacd78464
+ m3rcury
+ http://www.team-mediaportal.com/extensions/utilities/cdb-sync?lang=en
+ http://forum.team-mediaportal.com/threads/plugin-mpsync-mediaportal-synchronization.117417/#post-975411
+ http://www.team-mediaportal.com/index.php?option=com_mtree&task=att_download&link_id=268&cf_id=52
+
+ 1
+ 0
+ 0
+ 24
+
+ This plugin synchronizes your MediaPortal databases with a central database as well as thumbs folder, so that any additons can by automatically applied to any other MP seat you might have in your household.
+ - Fixed missing triggers
+ Stable
+ https://github.com/Mediaportal-Plugin-Team/MPSync/releases/download/v1.0.0.24/MPSync-1.0.0.24.mpe1
+ 2024-04-30T20:45:10.7254472+00:00
+ synchronization, database, thumbs, any folder you set up.
+ AnyCPU
+ [Name]-[Version].mpe1
+
+
+
+
+ String
+ The icon file of the package stored online (jpg,png,bmp)
+
+
+
+ Template
+ The file used to configure the extension.
+ If have .exe extension the will be executed
+ If have .dll extension used like MP plugin configuration
+
+
+ http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(1)%20MPSync_settings.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(2)%20MPSync_database_paths.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(3)%20MPSync_database_advanced_settings.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(4)%20MPSync_database_other.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(5)%20MPSync_database_watched_status.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(6)%20MPSync_folder_list.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(7)%20MPSync_thumbs_paths.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(8)%20MPSync_thumbs_advanced_settings.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(9)%20MPSync_status.jpg
+ String
+ Online stored screenshot urls separated by ;
+
+
+ YES
+ Bool
+ Show dialog and force to uninstall previous version when updating an extension. Should only be disabled if you are using an NSIS/MSI installer.
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+ 2.0
+
+
+
+ Default
+ true
+ Default
+
+
+
+
+
+ SQLite
+ true
+ SQLite
+
+
+
+
+
+
+
+
+
+
+
+
+ Extension
+ 284fc21c-86e3-4346-bf31-9e38c75e0242
+
+ 1
+ 5
+ 1
+ 1487
+
+
+ 9
+ 9
+ 9
+ 9
+
+ true
+ requires Moving Pictures version 1.5.1.1487 or higher
+ Moving Pictures
+ None
+
+
+ Extension
+ 5e2777c3-966c-407f-b5a9-e51205b70b3e
+
+ 3
+ 4
+ 2
+ 2018
+
+
+ 9
+ 9
+ 9
+ 9
+
+ true
+ requires MP-TVSeries version 3.4.2.2018 or higher
+ MP-TVSeries
+ None
+
+
+ MediaPortal
+
+
+ 1
+ 32
+ 100
+ 0
+
+
+ *
+ *
+ *
+ *
+
+ false
+ Requires MediaPortal 1.32.100.0 or higher!
+ MediaPortal
+ None
+
+
+
+
+
+
+
+
+
+ 1.6.100.0
+ 1.6.100.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MPSync
+ 8ddbfb53-7222-41fd-a139-407eacd78464
+ m3rcury
+ http://www.team-mediaportal.com/extensions/utilities/cdb-sync?lang=en
+ http://forum.team-mediaportal.com/threads/plugin-mpsync-mediaportal-synchronization.117417/#post-975411
+ https://raw.githubusercontent.com/Mediaportal-Plugin-Team/MPSync/master/MPEI/MPSync_update.xml
+
+ 1
+ 0
+ 5
+ 1
+
+ This plugin synchronizes your MediaPortal databases with a central database as well as thumbs folder, so that any additons can by automatically applied to any other MP seat you might have in your household.
+ - Fixed missing triggers
+ Stable
+ https://github.com/Mediaportal-Plugin-Team/MPSync/releases/download/v1.0.5.1/MPSync-1.0.5.1.mpe1
+ 2024-05-16T18:25:42.1110469+00:00
+ synchronization, database, thumbs, any folder you set up.
+ AnyCPU
+ [Name]-[Version].mpe1
+
+
+
+
+ String
+ The icon file of the package stored online (jpg,png,bmp)
+
+
+
+ Template
+ The file used to configure the extension.
+ If have .exe extension the will be executed
+ If have .dll extension used like MP plugin configuration
+
+
+ http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(1)%20MPSync_settings.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(2)%20MPSync_database_paths.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(3)%20MPSync_database_advanced_settings.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(4)%20MPSync_database_other.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(5)%20MPSync_database_watched_status.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(6)%20MPSync_folder_list.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(7)%20MPSync_thumbs_paths.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(8)%20MPSync_thumbs_advanced_settings.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(9)%20MPSync_status.jpg
+ String
+ Online stored screenshot urls separated by ;
+
+
+ YES
+ Bool
+ Show dialog and force to uninstall previous version when updating an extension. Should only be disabled if you are using an NSIS/MSI installer.
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+ 2.0
+
+
+
+ Default
+ true
+ Default
+
+
+
+
+
+ SQLite
+ true
+ SQLite
+
+
+
+
+
+
+
+
+
+
+
+
+ Extension
+ 284fc21c-86e3-4346-bf31-9e38c75e0242
+
+ 1
+ 5
+ 1
+ 1487
+
+
+ 9
+ 9
+ 9
+ 9
+
+ true
+ requires Moving Pictures version 1.5.1.1487 or higher
+ Moving Pictures
+ None
+
+
+ Extension
+ 5e2777c3-966c-407f-b5a9-e51205b70b3e
+
+ 3
+ 4
+ 2
+ 2018
+
+
+ 9
+ 9
+ 9
+ 9
+
+ true
+ requires MP-TVSeries version 3.4.2.2018 or higher
+ MP-TVSeries
+ None
+
+
+ MediaPortal
+
+
+ 1
+ 32
+ 100
+ 0
+
+
+ *
+ *
+ *
+ *
+
+ false
+ Requires MediaPortal 1.32.100.0 or higher!
+ MediaPortal
+ None
+
+
+
+
+
+
+
+
+
+ 1.6.100.0
+ 1.6.100.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MPSync
+ 8ddbfb53-7222-41fd-a139-407eacd78464
+ m3rcury
+ http://www.team-mediaportal.com/extensions/utilities/cdb-sync?lang=en
+ http://forum.team-mediaportal.com/threads/plugin-mpsync-mediaportal-synchronization.117417/#post-975411
+ https://raw.githubusercontent.com/Mediaportal-Plugin-Team/MPSync/master/MPEI/MPSync_update.xml
+
+ 1
+ 0
+ 5
+ 103
+
+ This plugin synchronizes your MediaPortal databases with a central database as well as thumbs folder, so that any additons can by automatically applied to any other MP seat you might have in your household.
+ - Fixed missing triggers
+ Stable
+ https://github.com/Mediaportal-Plugin-Team/MPSync/releases/download/v1.0.5.103/MPSync-1.0.5.103.mpe1
+ 2024-05-16T20:16:57.5467521+00:00
+ synchronization, database, thumbs, any folder you set up.
+ AnyCPU
+ [Name]-[Version].mpe1
+
+
+
+
+ String
+ The icon file of the package stored online (jpg,png,bmp)
+
+
+
+ Template
+ The file used to configure the extension.
+ If have .exe extension the will be executed
+ If have .dll extension used like MP plugin configuration
+
+
+ http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(1)%20MPSync_settings.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(2)%20MPSync_database_paths.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(3)%20MPSync_database_advanced_settings.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(4)%20MPSync_database_other.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(5)%20MPSync_database_watched_status.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(6)%20MPSync_folder_list.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(7)%20MPSync_thumbs_paths.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(8)%20MPSync_thumbs_advanced_settings.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(9)%20MPSync_status.jpg
+ String
+ Online stored screenshot urls separated by ;
+
+
+ YES
+ Bool
+ Show dialog and force to uninstall previous version when updating an extension. Should only be disabled if you are using an NSIS/MSI installer.
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+ 2.0
+
+
+
+ Default
+ true
+ Default
+
+
+
+
+
+ SQLite
+ true
+ SQLite
+
+
+
+
+
+
+
+
+
+
+
+
+ Extension
+ 284fc21c-86e3-4346-bf31-9e38c75e0242
+
+ 1
+ 5
+ 1
+ 1487
+
+
+ 9
+ 9
+ 9
+ 9
+
+ true
+ requires Moving Pictures version 1.5.1.1487 or higher
+ Moving Pictures
+ None
+
+
+ Extension
+ 5e2777c3-966c-407f-b5a9-e51205b70b3e
+
+ 3
+ 4
+ 2
+ 2018
+
+
+ 9
+ 9
+ 9
+ 9
+
+ true
+ requires MP-TVSeries version 3.4.2.2018 or higher
+ MP-TVSeries
+ None
+
+
+ MediaPortal
+
+
+ 1
+ 32
+ 100
+ 0
+
+
+ *
+ *
+ *
+ *
+
+ false
+ Requires MediaPortal 1.32.100.0 or higher!
+ MediaPortal
+ None
+
+
+
+
+
+
+
+
+
+ 1.6.100.0
+ 1.6.100.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MPSync
+ 8ddbfb53-7222-41fd-a139-407eacd78464
+ m3rcury
+ http://www.team-mediaportal.com/extensions/utilities/cdb-sync?lang=en
+ http://forum.team-mediaportal.com/threads/plugin-mpsync-mediaportal-synchronization.117417/#post-975411
+ https://raw.githubusercontent.com/Mediaportal-Plugin-Team/MPSync/master/MPEI/MPSync_update.xml
+
+ 1
+ 0
+ 5
+ 106
+
+ This plugin synchronizes your MediaPortal databases with a central database as well as thumbs folder, so that any additons can by automatically applied to any other MP seat you might have in your household.
+ * Fixed missing triggers
+* Fix SQLite.Interop location
+
+ Stable
+ https://github.com/Mediaportal-Plugin-Team/MPSync/releases/download/v1.0.5.106/MPSync-1.0.5.106.mpe1
+ 2024-05-21T18:24:03.1092356+00:00
+ synchronization, database, thumbs, any folder you set up.
+ AnyCPU
+ [Name]-[Version].mpe1
+
+
+
+
+ String
+ The icon file of the package stored online (jpg,png,bmp)
+
+
+
+ Template
+ The file used to configure the extension.
+ If have .exe extension the will be executed
+ If have .dll extension used like MP plugin configuration
+
+
+ http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(1)%20MPSync_settings.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(2)%20MPSync_database_paths.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(3)%20MPSync_database_advanced_settings.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(4)%20MPSync_database_other.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(5)%20MPSync_database_watched_status.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(6)%20MPSync_folder_list.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(7)%20MPSync_thumbs_paths.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(8)%20MPSync_thumbs_advanced_settings.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(9)%20MPSync_status.jpg
+ String
+ Online stored screenshot urls separated by ;
+
+
+ YES
+ Bool
+ Show dialog and force to uninstall previous version when updating an extension. Should only be disabled if you are using an NSIS/MSI installer.
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+ 2.0
+
+
+
+ Default
+ true
+ Default
+
+
+
+
+
+ SQLite
+ true
+ SQLite
+
+
+
+
+
+
+
+
+
+
+
+
+ Extension
+ 284fc21c-86e3-4346-bf31-9e38c75e0242
+
+ 1
+ 5
+ 1
+ 1487
+
+
+ 9
+ 9
+ 9
+ 9
+
+ true
+ requires Moving Pictures version 1.5.1.1487 or higher
+ Moving Pictures
+ None
+
+
+ Extension
+ 5e2777c3-966c-407f-b5a9-e51205b70b3e
+
+ 3
+ 4
+ 2
+ 2018
+
+
+ 9
+ 9
+ 9
+ 9
+
+ true
+ requires MP-TVSeries version 3.4.2.2018 or higher
+ MP-TVSeries
+ None
+
+
+ MediaPortal
+
+
+ 1
+ 32
+ 100
+ 0
+
+
+ *
+ *
+ *
+ *
+
+ false
+ Requires MediaPortal 1.32.100.0 or higher!
+ MediaPortal
+ None
+
+
+
+
+
+
+
+
+
+ 1.6.100.0
+ 1.6.100.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MPSync
+ 8ddbfb53-7222-41fd-a139-407eacd78464
+ m3rcury
+ http://www.team-mediaportal.com/extensions/utilities/cdb-sync?lang=en
+ http://forum.team-mediaportal.com/threads/plugin-mpsync-mediaportal-synchronization.117417/#post-975411
+ https://raw.githubusercontent.com/Mediaportal-Plugin-Team/MPSync/master/MPEI/MPSync_update.xml
+
+ 1
+ 0
+ 5
+ 109
+
+ This plugin synchronizes your MediaPortal databases with a central database as well as thumbs folder, so that any additons can by automatically applied to any other MP seat you might have in your household.
+ * better exception logging
+
+ Stable
+ https://github.com/Mediaportal-Plugin-Team/MPSync/releases/download/v1.0.5.109/MPSync-1.0.5.109.mpe1
+ 2024-05-24T15:17:21.6592184+00:00
+ synchronization, database, thumbs, any folder you set up.
+ AnyCPU
+ [Name]-[Version].mpe1
+
+
+
+
+ String
+ The icon file of the package stored online (jpg,png,bmp)
+
+
+
+ Template
+ The file used to configure the extension.
+ If have .exe extension the will be executed
+ If have .dll extension used like MP plugin configuration
+
+
+ http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(1)%20MPSync_settings.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(2)%20MPSync_database_paths.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(3)%20MPSync_database_advanced_settings.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(4)%20MPSync_database_other.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(5)%20MPSync_database_watched_status.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(6)%20MPSync_folder_list.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(7)%20MPSync_thumbs_paths.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(8)%20MPSync_thumbs_advanced_settings.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(9)%20MPSync_status.jpg
+ String
+ Online stored screenshot urls separated by ;
+
+
+ YES
+ Bool
+ Show dialog and force to uninstall previous version when updating an extension. Should only be disabled if you are using an NSIS/MSI installer.
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+ 2.0
+
+
+
+ Default
+ true
+ Default
+
+
+
+
+
+ SQLite
+ true
+ SQLite
+
+
+
+
+
+
+
+
+
+
+
+
+ Extension
+ 284fc21c-86e3-4346-bf31-9e38c75e0242
+
+ 1
+ 5
+ 1
+ 1487
+
+
+ 9
+ 9
+ 9
+ 9
+
+ true
+ requires Moving Pictures version 1.5.1.1487 or higher
+ Moving Pictures
+ None
+
+
+ Extension
+ 5e2777c3-966c-407f-b5a9-e51205b70b3e
+
+ 3
+ 4
+ 2
+ 2018
+
+
+ 9
+ 9
+ 9
+ 9
+
+ true
+ requires MP-TVSeries version 3.4.2.2018 or higher
+ MP-TVSeries
+ None
+
+
+ MediaPortal
+
+
+ 1
+ 32
+ 100
+ 0
+
+
+ *
+ *
+ *
+ *
+
+ false
+ Requires MediaPortal 1.32.100.0 or higher!
+ MediaPortal
+ None
+
+
+
+
+
+
+
+
+
+ 1.6.100.0
+ 1.6.100.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MPSync
+ 8ddbfb53-7222-41fd-a139-407eacd78464
+ m3rcury
+ http://www.team-mediaportal.com/extensions/utilities/cdb-sync?lang=en
+ http://forum.team-mediaportal.com/threads/plugin-mpsync-mediaportal-synchronization.117417/#post-975411
+ https://raw.githubusercontent.com/Mediaportal-Plugin-Team/MPSync/master/MPEI/MPSync_update.xml
+
+ 1
+ 0
+ 5
+ 114
+
+ This plugin synchronizes your MediaPortal databases with a central database as well as thumbs folder, so that any additons can by automatically applied to any other MP seat you might have in your household.
+ - Improved exception logging
+- reverted Fix SQLite.Interop location
+ Stable
+ https://github.com/Mediaportal-Plugin-Team/MPSync/releases/download/v1.0.5.114/MPSync-1.0.5.114.mpe1
+ 2024-05-25T14:02:29.2255548+00:00
+ synchronization, database, thumbs, any folder you set up.
+ AnyCPU
+ [Name]-[Version].mpe1
+
+
+
+
+ String
+ The icon file of the package stored online (jpg,png,bmp)
+
+
+
+ Template
+ The file used to configure the extension.
+ If have .exe extension the will be executed
+ If have .dll extension used like MP plugin configuration
+
+
+ http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(1)%20MPSync_settings.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(2)%20MPSync_database_paths.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(3)%20MPSync_database_advanced_settings.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(4)%20MPSync_database_other.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(5)%20MPSync_database_watched_status.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(6)%20MPSync_folder_list.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(7)%20MPSync_thumbs_paths.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(8)%20MPSync_thumbs_advanced_settings.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(9)%20MPSync_status.jpg
+ String
+ Online stored screenshot urls separated by ;
+
+
+ YES
+ Bool
+ Show dialog and force to uninstall previous version when updating an extension. Should only be disabled if you are using an NSIS/MSI installer.
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+ 2.0
+
+
+
+ Default
+ true
+ Default
+
+
+
+
+
+ SQLite
+ true
+ SQLite
+
+
+
+
+
+
+
+
+
+
+
+
+ Extension
+ 284fc21c-86e3-4346-bf31-9e38c75e0242
+
+ 1
+ 5
+ 1
+ 1487
+
+
+ 9
+ 9
+ 9
+ 9
+
+ true
+ requires Moving Pictures version 1.5.1.1487 or higher
+ Moving Pictures
+ None
+
+
+ Extension
+ 5e2777c3-966c-407f-b5a9-e51205b70b3e
+
+ 3
+ 4
+ 2
+ 2018
+
+
+ 9
+ 9
+ 9
+ 9
+
+ true
+ requires MP-TVSeries version 3.4.2.2018 or higher
+ MP-TVSeries
+ None
+
+
+ MediaPortal
+
+
+ 1
+ 32
+ 100
+ 0
+
+
+ *
+ *
+ *
+ *
+
+ false
+ Requires MediaPortal 1.32.100.0 or higher!
+ MediaPortal
+ None
+
+
+
+
+
+
+
+
+
+ 1.6.100.0
+ 1.6.100.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MPSync
+ 8ddbfb53-7222-41fd-a139-407eacd78464
+ m3rcury
+ http://www.team-mediaportal.com/extensions/utilities/cdb-sync?lang=en
+ http://forum.team-mediaportal.com/threads/plugin-mpsync-mediaportal-synchronization.117417/#post-975411
+ https://raw.githubusercontent.com/Mediaportal-Plugin-Team/MPSync/master/MPEI/MPSync_update.xml
+
+ 1
+ 0
+ 5
+ 124
+
+ This plugin synchronizes your MediaPortal databases with a central database as well as thumbs folder, so that any additons can by automatically applied to any other MP seat you might have in your household.
+ - Improved exception logging
+- Fix for overwriting watched and resume status of moving pictures database
+- Fix for loading wrong dll in MP 1.36
+
+ Stable
+ https://github.com/Mediaportal-Plugin-Team/MPSync/releases/download/v1.0.5.124/MPSync-1.0.5.124.mpe1
+ 2024-12-20T18:16:57.2776269+00:00
+ synchronization, database, thumbs, any folder you set up.
+ AnyCPU
+ [Name]-[Version].mpe1
+
+
+
+
+ String
+ The icon file of the package stored online (jpg,png,bmp)
+
+
+
+ Template
+ The file used to configure the extension.
+ If have .exe extension the will be executed
+ If have .dll extension used like MP plugin configuration
+
+
+ http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(1)%20MPSync_settings.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(2)%20MPSync_database_paths.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(3)%20MPSync_database_advanced_settings.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(4)%20MPSync_database_other.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(5)%20MPSync_database_watched_status.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(6)%20MPSync_folder_list.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(7)%20MPSync_thumbs_paths.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(8)%20MPSync_thumbs_advanced_settings.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(9)%20MPSync_status.jpg
+ String
+ Online stored screenshot urls separated by ;
+
+
+ YES
+ Bool
+ Show dialog and force to uninstall previous version when updating an extension. Should only be disabled if you are using an NSIS/MSI installer.
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
\ No newline at end of file
diff --git a/MPSync/FastDirectoryEnumerator/DirectoryEnumerator.csproj b/MPSync/FastDirectoryEnumerator/DirectoryEnumerator.csproj
index 1f97356..d8ac030 100644
--- a/MPSync/FastDirectoryEnumerator/DirectoryEnumerator.csproj
+++ b/MPSync/FastDirectoryEnumerator/DirectoryEnumerator.csproj
@@ -10,7 +10,7 @@
PropertiesDirectoryEnumeratorMPSync_DirectoryEnumerator
- v4.6
+ v4.7.2512
diff --git a/MPSync/FastDirectoryEnumerator/DirectoryEnumerator.csproj.user b/MPSync/FastDirectoryEnumerator/DirectoryEnumerator.csproj.user
deleted file mode 100644
index fb3fd5d..0000000
--- a/MPSync/FastDirectoryEnumerator/DirectoryEnumerator.csproj.user
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
- publish\
-
-
-
-
-
- en-US
- false
-
-
\ No newline at end of file
diff --git a/MPSync/FastDirectoryEnumerator/bin/Release/MPSync_DirectoryEnumerator.dll b/MPSync/FastDirectoryEnumerator/bin/Release/MPSync_DirectoryEnumerator.dll
deleted file mode 100644
index c653ada..0000000
Binary files a/MPSync/FastDirectoryEnumerator/bin/Release/MPSync_DirectoryEnumerator.dll and /dev/null differ
diff --git a/MPSync/FastDirectoryEnumerator/bin/Release/MPSync_DirectoryEnumerator.pdb b/MPSync/FastDirectoryEnumerator/bin/Release/MPSync_DirectoryEnumerator.pdb
deleted file mode 100644
index c2ef6b4..0000000
Binary files a/MPSync/FastDirectoryEnumerator/bin/Release/MPSync_DirectoryEnumerator.pdb and /dev/null differ
diff --git a/MPSync/FastDirectoryEnumerator/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll b/MPSync/FastDirectoryEnumerator/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll
deleted file mode 100644
index 5f1e652..0000000
Binary files a/MPSync/FastDirectoryEnumerator/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll and /dev/null differ
diff --git a/MPSync/FastDirectoryEnumerator/obj/Release/TempPE/Properties.Resources.Designer.cs.dll b/MPSync/FastDirectoryEnumerator/obj/Release/TempPE/Properties.Resources.Designer.cs.dll
deleted file mode 100644
index 2c55873..0000000
Binary files a/MPSync/FastDirectoryEnumerator/obj/Release/TempPE/Properties.Resources.Designer.cs.dll and /dev/null differ
diff --git a/MPSync/MPSync.sln b/MPSync/MPSync.sln
index edd43f6..a829994 100644
--- a/MPSync/MPSync.sln
+++ b/MPSync/MPSync.sln
@@ -1,28 +1,51 @@

Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 15
-VisualStudioVersion = 15.0.26228.12
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.33529.622
MinimumVisualStudioVersion = 10.0.40219.1
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "MPSync", "MPSync\MPSync.vbproj", "{C23857F2-6BA9-4FA4-9D15-B535C5C41564}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MPSync_Launcher", "..\MPSync_Launcher\MPSync_Launcher\MPSync_Launcher.csproj", "{F8303E7F-DDB0-49AD-B960-B6B7CA00C6E1}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DirectoryEnumerator", "FastDirectoryEnumerator\DirectoryEnumerator.csproj", "{B178092B-06CF-4FCF-9D20-69E14650136F}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Any CPU = Debug|Any CPU
+ Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
- Release|Any CPU = Release|Any CPU
+ Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {C23857F2-6BA9-4FA4-9D15-B535C5C41564}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {C23857F2-6BA9-4FA4-9D15-B535C5C41564}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {C23857F2-6BA9-4FA4-9D15-B535C5C41564}.Debug|x86.ActiveCfg = Debug|x86
- {C23857F2-6BA9-4FA4-9D15-B535C5C41564}.Debug|x86.Build.0 = Debug|x86
- {C23857F2-6BA9-4FA4-9D15-B535C5C41564}.Release|Any CPU.ActiveCfg = Release|x86
- {C23857F2-6BA9-4FA4-9D15-B535C5C41564}.Release|Any CPU.Build.0 = Release|x86
- {C23857F2-6BA9-4FA4-9D15-B535C5C41564}.Release|x86.ActiveCfg = Release|x86
- {C23857F2-6BA9-4FA4-9D15-B535C5C41564}.Release|x86.Build.0 = Release|x86
+ {C23857F2-6BA9-4FA4-9D15-B535C5C41564}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {C23857F2-6BA9-4FA4-9D15-B535C5C41564}.Debug|x64.Build.0 = Debug|Any CPU
+ {C23857F2-6BA9-4FA4-9D15-B535C5C41564}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {C23857F2-6BA9-4FA4-9D15-B535C5C41564}.Debug|x86.Build.0 = Debug|Any CPU
+ {C23857F2-6BA9-4FA4-9D15-B535C5C41564}.Release|x64.ActiveCfg = Release|Any CPU
+ {C23857F2-6BA9-4FA4-9D15-B535C5C41564}.Release|x64.Build.0 = Release|Any CPU
+ {C23857F2-6BA9-4FA4-9D15-B535C5C41564}.Release|x86.ActiveCfg = Release|Any CPU
+ {C23857F2-6BA9-4FA4-9D15-B535C5C41564}.Release|x86.Build.0 = Release|Any CPU
+ {F8303E7F-DDB0-49AD-B960-B6B7CA00C6E1}.Debug|x64.ActiveCfg = Debug|x64
+ {F8303E7F-DDB0-49AD-B960-B6B7CA00C6E1}.Debug|x64.Build.0 = Debug|x64
+ {F8303E7F-DDB0-49AD-B960-B6B7CA00C6E1}.Debug|x86.ActiveCfg = Debug|x86
+ {F8303E7F-DDB0-49AD-B960-B6B7CA00C6E1}.Debug|x86.Build.0 = Debug|x86
+ {F8303E7F-DDB0-49AD-B960-B6B7CA00C6E1}.Release|x64.ActiveCfg = Release|x64
+ {F8303E7F-DDB0-49AD-B960-B6B7CA00C6E1}.Release|x64.Build.0 = Release|x64
+ {F8303E7F-DDB0-49AD-B960-B6B7CA00C6E1}.Release|x86.ActiveCfg = Release|x86
+ {F8303E7F-DDB0-49AD-B960-B6B7CA00C6E1}.Release|x86.Build.0 = Release|x86
+ {B178092B-06CF-4FCF-9D20-69E14650136F}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {B178092B-06CF-4FCF-9D20-69E14650136F}.Debug|x64.Build.0 = Debug|Any CPU
+ {B178092B-06CF-4FCF-9D20-69E14650136F}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {B178092B-06CF-4FCF-9D20-69E14650136F}.Debug|x86.Build.0 = Debug|Any CPU
+ {B178092B-06CF-4FCF-9D20-69E14650136F}.Release|x64.ActiveCfg = Release|Any CPU
+ {B178092B-06CF-4FCF-9D20-69E14650136F}.Release|x64.Build.0 = Release|Any CPU
+ {B178092B-06CF-4FCF-9D20-69E14650136F}.Release|x86.ActiveCfg = Release|Any CPU
+ {B178092B-06CF-4FCF-9D20-69E14650136F}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {A549E90C-7B37-4F09-9663-1B2FD9BB1058}
+ EndGlobalSection
EndGlobal
diff --git a/MPSync/MPSync/MPSync.vbproj b/MPSync/MPSync/MPSync.vbproj
index 861c467..10522ff 100644
--- a/MPSync/MPSync/MPSync.vbproj
+++ b/MPSync/MPSync/MPSync.vbproj
@@ -2,7 +2,7 @@
Debug
- x86
+ AnyCPU2.0
@@ -14,7 +14,7 @@
MPSync512Windows
- v4.6
+ v4.7.2false
@@ -32,28 +32,8 @@
1.0.0.%2afalsetrue
-
-
- x86
- true
- full
- true
- true
- bin\Debug\
- MPSync.xml
- 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022
- false
-
-
- x86
- pdbonly
- false
- true
- true
- bin\Release\
- MPSync.xml
- 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022
- false
+
+ On
@@ -98,26 +78,20 @@
My Project\app.manifest
-
+ False
- C:\Program Files (x86)\Team MediaPortal\MediaPortal\Common.Utils.dll
+ ..\..\External\Common.Utils.dllTrue
-
+ False
- C:\Program Files (x86)\Team MediaPortal\MediaPortal\Core.dll
- True
-
-
- ..\FastDirectoryEnumerator\bin\Release\MPSync_DirectoryEnumerator.dll
+ ..\..\External\Core.dllTrue
-
- False
- C:\Program Files (x86)\Team MediaPortal\MediaPortal\System.Data.SQLite.dll
- True
+
+ ..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.118.0\lib\net40\System.Data.SQLite.dll
@@ -127,7 +101,7 @@
False
- C:\Program Files (x86)\Team MediaPortal\MediaPortal\Utils.dll
+ ..\..\External\Utils.dllTrue
@@ -219,6 +193,7 @@
+
@@ -234,7 +209,20 @@
+
+
+ {b178092b-06cf-4fcf-9d20-69e14650136f}
+ DirectoryEnumerator
+
+
+
+
+
+ This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.
+
+
+
" & _db_server, "INFO")
+ logStats("MPSync: DB - " & _db_client & " --> " & _db_server, MessageType.INFO)
Case 2
- logStats("MPSync: DB - " & _db_client & " <-- " & _db_server, "INFO")
+ logStats("MPSync: DB - " & _db_client & " <-- " & _db_server, MessageType.INFO)
End Select
- logStats("MPSync: DB synchronization method - " & i_method(_db_sync_method), "INFO")
+ logStats("MPSync: DB synchronization method - " & i_method(_db_sync_method), MessageType.INFO)
If databases = Nothing Then
- logStats("MPSync: DBs selected - ALL", "INFO")
+ logStats("MPSync: DBs selected - ALL", MessageType.INFO)
Else
- logStats("MPSync: DBs selected - " & databases, "INFO")
+ logStats("MPSync: DBs selected - " & databases, MessageType.INFO)
End If
If check_watched Then
If watched_dbs = Nothing Then
- logStats("MPSync: watched/resume selected for ALL", "INFO")
+ logStats("MPSync: watched/resume selected for ALL", MessageType.INFO)
Else
- logStats("MPSync: watched/resume selected for " & watched_dbs, "INFO")
+ logStats("MPSync: watched/resume selected for " & watched_dbs, MessageType.INFO)
End If
Else
- logStats("MPSync: watched/resume not selected", "INFO")
+ logStats("MPSync: watched/resume not selected", MessageType.INFO)
End If
If objects = Nothing Then
- logStats("MPSync: Objects selected - ALL", "INFO")
+ logStats("MPSync: Objects selected - ALL", MessageType.INFO)
Else
- logStats("MPSync: Objects selected - " & objects, "INFO")
+ logStats("MPSync: Objects selected - " & objects, MessageType.INFO)
End If
End If
@@ -273,31 +280,29 @@ Public Class MPSync_process
If item(1) = "True" Then
- item(0) = UCase(item(0))
-
getObjectSettings(item(0))
Select Case _folders_direction
Case 0
- logStats("MPSync: " & item(0) & " - " & _folders_client & " <-> " & _folders_server, "INFO")
+ logStats("MPSync: " & item(0) & " - " & _folders_client & " <-> " & _folders_server, MessageType.INFO)
Case 1
- logStats("MPSync: " & item(0) & " - " & _folders_client & " --> " & _folders_server, "INFO")
+ logStats("MPSync: " & item(0) & " - " & _folders_client & " --> " & _folders_server, MessageType.INFO)
Case 2
- logStats("MPSync: " & item(0) & " - " & _folders_client & " <-- " & _folders_server, "INFO")
+ logStats("MPSync: " & item(0) & " - " & _folders_client & " <-- " & _folders_server, MessageType.INFO)
End Select
If _folders_md5 = "True" Then
- logStats("MPSync: " & item(0) & " synchronization method - " & i_method(_folders_sync_method) & ", pause while playing - " & _folders_pause & ", use MD5 - " & _folders_md5, "INFO")
+ logStats("MPSync: " & item(0) & " synchronization method - " & i_method(_folders_sync_method) & ", pause while playing - " & _folders_pause & ", use MD5 - " & _folders_md5, MessageType.INFO)
ElseIf _folders_crc32 = "True" Then
- logStats("MPSync: " & item(0) & " synchronization method - " & i_method(_folders_sync_method) & ", pause while playing - " & _folders_pause & ", use CRC32 - " & _folders_crc32, "INFO")
+ logStats("MPSync: " & item(0) & " synchronization method - " & i_method(_folders_sync_method) & ", pause while playing - " & _folders_pause & ", use CRC32 - " & _folders_crc32, MessageType.INFO)
Else
- logStats("MPSync: " & item(0) & " synchronization method - " & i_method(_folders_sync_method) & ", pause while playing - " & _folders_pause, "INFO")
+ logStats("MPSync: " & item(0) & " synchronization method - " & i_method(_folders_sync_method) & ", pause while playing - " & _folders_pause, MessageType.INFO)
End If
If folders = Nothing Then
- logStats("MPSync: " & item(0) & " selected - ALL", "INFO")
+ logStats("MPSync: " & item(0) & " selected - ALL", MessageType.INFO)
Else
- logStats("MPSync: " & item(0) & " selected - " & folders, "INFO")
+ logStats("MPSync: " & item(0) & " selected - " & folders, MessageType.INFO)
End If
End If
@@ -307,15 +312,15 @@ Public Class MPSync_process
End If
If checkThreads("DB") = -1 Then
- logStats("MPSync: Maximum DB threads - No limit", "INFO")
+ logStats("MPSync: Maximum DB threads - No limit", MessageType.INFO)
Else
- logStats("MPSync: Maximum DB threads - [" & checkThreads("DB").ToString & "]", "INFO")
+ logStats("MPSync: Maximum DB threads - [" & checkThreads("DB").ToString & "]", MessageType.INFO)
End If
If checkThreads("folder") = -1 Then
- logStats("MPSync: Maximum Folder threads - No limit", "INFO")
+ logStats("MPSync: Maximum Folder threads - No limit", MessageType.INFO)
Else
- logStats("MPSync: Maximum Folder threads - [" & checkThreads("folder").ToString & "]", "INFO")
+ logStats("MPSync: Maximum Folder threads - [" & checkThreads("folder").ToString & "]", MessageType.INFO)
End If
If _db_client <> Nothing And _db_server <> Nothing And checked_databases Then
@@ -367,7 +372,7 @@ Public Class MPSync_process
Dim checkDBPath_Thread As Thread
checkDBPath_Thread = New Thread(AddressOf checkPath)
- logStats("MPSync: Checking availability of " & _db_server, "LOG")
+ logStats("MPSync: Checking availability of " & _db_server, MessageType.LOG)
checkDBPath_Thread.Start(_db_server)
@@ -375,7 +380,7 @@ Public Class MPSync_process
wait(5, False)
Loop
- logStats("MPSync: " & _db_server & " is available.", "LOG")
+ logStats("MPSync: " & _db_server & " is available.", MessageType.LOG)
' execute only once in a day
If DateDiff(DateInterval.Day, CDate(lastsync), Now) > 0 Then
@@ -417,7 +422,7 @@ Public Class MPSync_process
Dim checkOBJPath_Thread As Thread
checkOBJPath_Thread = New Thread(AddressOf checkPath)
- logStats("MPSync: Checking availability of " & _folders_server, "LOG")
+ logStats("MPSync: Checking availability of " & _folders_server, MessageType.LOG)
checkOBJPath_Thread.Start(_folders_server)
@@ -425,7 +430,7 @@ Public Class MPSync_process
wait(5, False)
Loop
- logStats("MPSync: " & _folders_server & " is available.", "LOG")
+ logStats("MPSync: " & _folders_server & " is available.", MessageType.LOG)
End If
@@ -437,7 +442,7 @@ Public Class MPSync_process
If Not MPSync_settings.syncnow Then
- logStats("MPSync: Immediate Synchronization started", "DEBUG")
+ logStats("MPSync: Immediate Synchronization started", MessageType.DEBUG)
Dim autoEvent As New AutoResetEvent(False)
@@ -453,72 +458,81 @@ Public Class MPSync_process
Public Shared Function TableExist(ByVal path As String, ByVal database As String, ByVal table As String, Optional ByVal dropifempty As Boolean = False) As Boolean
- If debug Then MPSync_process.logStats("MPSync: [TableExist] Check if table " & table & " in database " & path & database & " exists.", "DEBUG")
+ If debug Then MPSync_process.logStats("MPSync: [TableExist] Check if table " & table & " in database " & path & database & " exists.", MessageType.DEBUG)
- Dim SQLconnect As New SQLite.SQLiteConnection()
- Dim SQLcommand As SQLiteCommand = SQLconnect.CreateCommand
- Dim SQLreader As SQLiteDataReader
- Dim exist As Boolean = False
+ Try
- SQLconnect.ConnectionString = "Data Source=" & p_Database(path & database)
+ Dim exist As Boolean = False
- If Not dropifempty Then SQLconnect.ConnectionString += ";Read Only=True;"
+ Using SQLconnect As New SQLiteConnection(),
+ SQLcommand As SQLiteCommand = SQLconnect.CreateCommand
- SQLconnect.Open()
- SQLcommand.CommandText = "SELECT name FROM sqlite_master WHERE type='table' AND name='" & table & "'"
- SQLreader = SQLcommand.ExecuteReader()
+ SQLconnect.ConnectionString = "Data Source=" & p_Database(path & database)
- While SQLreader.Read()
- exist = True
- End While
+ If Not dropifempty Then SQLconnect.ConnectionString += ";Read Only=True;"
- SQLreader.Close()
+ SQLconnect.Open()
+ SQLcommand.CommandText = "SELECT name FROM sqlite_master WHERE type='table' AND name='" & table & "'"
+ Using SQLreader = SQLcommand.ExecuteReader()
- If exist And dropifempty Then
- SQLcommand.CommandText = "SELECT COUNT(*) FROM " & table
- SQLreader = SQLcommand.ExecuteReader()
- SQLreader.Read()
+ While SQLreader.Read()
+ exist = True
+ End While
- If Int(SQLreader(0)) = 0 Then
- SQLreader.Close()
- SQLcommand.CommandText = "DROP TABLE " & table
- Try
- SQLcommand.ExecuteNonQuery()
- exist = False
- Catch ex As Exception
- logStats("MPSync: [TableExist] Table not dropped with exception - " & ex.Message, "ERROR")
- End Try
- End If
- End If
+ End Using
+
+ If exist And dropifempty Then
+ SQLcommand.CommandText = "SELECT COUNT(*) FROM " & table
+ Using SQLreader = SQLcommand.ExecuteReader()
+ SQLreader.Read()
+
+ If Int(SQLreader(0)) = 0 Then
+ SQLreader.Close()
+ SQLcommand.CommandText = "DROP TABLE " & table
+ Try
+ SQLcommand.ExecuteNonQuery()
+ exist = False
+ Catch ex As Exception
+ logStats("MPSync: [TableExist] Table not dropped with exception - " & ex.Message, MessageType.ERR)
+ End Try
+ End If
+ End Using
+ End If
- SQLconnect.Close()
+ End Using
- Return exist
+ Return exist
+
+ Catch ex As Exception
+ logStats("MPSync: [TableExist] Unexpected error " & ex.Message, MessageType.ERR)
+ End Try
+
+ Return False
End Function
Private Function FieldExist(ByVal path As String, ByVal database As String, ByVal table As String, ByVal field As String) As Boolean
- If debug Then MPSync_process.logStats("MPSync: [FieldExist] Check field exists for table " & table & " in database " & path & database, "DEBUG")
+ If debug Then MPSync_process.logStats("MPSync: [FieldExist] Check field exists for table " & table & " in database " & path & database, MessageType.DEBUG)
- Dim SQLconnect As New SQLiteConnection()
- Dim SQLcommand As SQLiteCommand = SQLconnect.CreateCommand
- Dim SQLreader As SQLiteDataReader
Dim columns() As String = Nothing
Dim x As Integer = 0
- SQLconnect.ConnectionString = "Data Source=" & p_Database(path & database) & ";Read Only=True;"
- SQLconnect.Open()
- SQLcommand.CommandText = "PRAGMA table_info (" & table & ")"
- SQLreader = SQLcommand.ExecuteReader()
+ Using SQLconnect As New SQLiteConnection(),
+ SQLcommand As SQLiteCommand = SQLconnect.CreateCommand
- While SQLreader.Read()
- ReDim Preserve columns(x)
- columns(x) = LCase(SQLreader(1))
- x += 1
- End While
+ SQLconnect.ConnectionString = "Data Source=" & p_Database(path & database) & ";Read Only=True;"
+ SQLconnect.Open()
+ SQLcommand.CommandText = "PRAGMA table_info (" & table & ")"
+ Using SQLreader = SQLcommand.ExecuteReader()
- SQLconnect.Close()
+ While SQLreader.Read()
+ ReDim Preserve columns(x)
+ columns(x) = LCase(SQLreader.GetString(1))
+ x += 1
+ End While
+ End Using
+ End Using
If x = 0 Then ReDim Preserve columns(0)
@@ -526,9 +540,9 @@ Public Class MPSync_process
End Function
- Private Function FieldList(ByVal path As String, ByVal database As String, ByVal table As String, ByVal fields As Array, Optional ByVal prefix As String = Nothing) As String
+ Private Function FieldList(ByVal path As String, ByVal database As String, ByVal table As String, ByVal fields As String(), Optional ByVal prefix As String = Nothing) As String
- If debug Then MPSync_process.logStats("MPSync: [FieldList] Get fields for table " & table & " in database " & path & database, "DEBUG")
+ If debug Then MPSync_process.logStats("MPSync: [FieldList] Get fields for table " & table & " in database " & path & database, MessageType.DEBUG)
Dim f_list As String = Nothing
@@ -548,7 +562,7 @@ Public Class MPSync_process
Private Sub getDBInfo(ByVal source As String, ByVal target As String)
- logStats("MPSync: [getDBInfo] Background threads for database integrity checking started.", "DEBUG")
+ logStats("MPSync: [getDBInfo] Background threads for database integrity checking started.", MessageType.DEBUG)
Dim x As Integer = 0
Dim bw_checkDB() As BackgroundWorker = Nothing
@@ -565,7 +579,7 @@ Public Class MPSync_process
If checkThreads("DB") <> -1 Then
Do While bw_threads >= checkThreads("DB")
- logStats("MPSync: [getDBInfo] waiting for available threads.", "DEBUG")
+ logStats("MPSync: [getDBInfo] waiting for available threads.", MessageType.DEBUG)
wait(10, False)
Loop
@@ -578,18 +592,20 @@ Public Class MPSync_process
dbinfo(x) = My.Computer.FileSystem.GetFileInfo(database)
bw_dbs.Add(dbname(x))
- logStats("MPSync: [getDBInfo] starting background thread for database " & database, "DEBUG")
+ logStats("MPSync: [getDBInfo] starting background thread for database " & database, MessageType.DEBUG)
ReDim Preserve bw_checkDB(x)
bw_checkDB(x) = New BackgroundWorker
bw_checkDB(x).WorkerSupportsCancellation = True
AddHandler bw_checkDB(x).DoWork, AddressOf bw_checkDB_worker
+ AddHandler bw_checkDB(x).RunWorkerCompleted, AddressOf bw_checkDB_exception
+
bw_checkDB(x).RunWorkerAsync(target & "|" & dbname(x) & "|" & database & "|" & source)
x += 1
bw_threads += 1
Catch ex As Exception
- logStats("MPSync: [getDBInfo] Failed to trigger background threads for database integrity checking.", "ERROR")
+ logStats("MPSync: [getDBInfo] Failed to trigger background threads for database integrity checking.", MessageType.ERR)
End Try
End If
@@ -601,77 +617,87 @@ Public Class MPSync_process
Do While bw_threads > 0
Dim jobs As String = String.Join(",", bw_dbs.ToArray())
If jobs = String.Empty Then Exit Do
- logStats("MPSync: [getDBInfo] waiting for background threads to finish... " & bw_threads.ToString & " threads remaining processing {" & jobs & "}.", "DEBUG")
+ logStats("MPSync: [getDBInfo] waiting for background threads to finish... " & bw_threads.ToString & " threads remaining processing {" & jobs & "}.", MessageType.DEBUG)
wait(10, False)
Loop
- logStats("MPSync: [getDBInfo] Background threads for database integrity checking complete.", "DEBUG")
+ logStats("MPSync: [getDBInfo] Background threads for database integrity checking complete.", MessageType.DEBUG)
End Sub
- Private Sub bw_checkDB_worker(sender As System.Object, e As System.ComponentModel.DoWorkEventArgs)
+ Private Sub bw_checkDB_exception(sender As System.Object, e As RunWorkerCompletedEventArgs)
- Dim check As String = "ok"
- Dim parm() As String = Split(e.Argument, "|")
+ If e.Error IsNot Nothing Then
+ logStats("MPSync: [getDBInfo] Exception " & e.Error.Message, MessageType.ERR)
+ End If
- logStats("MPSync: [getDBInfo][bw_checkDB_worker] Checking integrity of database " & parm(0) & parm(1) & " in progress...", "LOG")
+ End Sub
- If IO.File.Exists(parm(0) & parm(1)) Then
+ Private Sub bw_checkDB_worker(sender As System.Object, e As System.ComponentModel.DoWorkEventArgs)
+ Try
- Dim SQLconnect As New SQLiteConnection()
- Dim SQLcommand As SQLiteCommand = SQLconnect.CreateCommand
- Dim SQLreader As SQLiteDataReader
+ Dim check As String = "ok"
+ Dim parm() As String = Split(e.Argument, "|")
- Try
- SQLconnect.ConnectionString = "Data Source=" & p_Database(parm(0) & parm(1)) & ";Read Only=True;"
- SQLconnect.Open()
- SQLcommand.CommandText = "PRAGMA integrity_check;"
- SQLreader = SQLcommand.ExecuteReader()
- SQLreader.Read()
- check = SQLreader(0)
- SQLreader.Close()
- Catch ex As Exception
- check = "error"
- End Try
+ logStats("MPSync: [getDBInfo][bw_checkDB_worker] Checking integrity of database " & parm(0) & parm(1) & " in progress...", MessageType.LOG)
- SQLconnect.Close()
+ If IO.File.Exists(parm(0) & parm(1)) Then
+ Using SQLconnect As New SQLiteConnection(),
+ SQLcommand As SQLiteCommand = SQLconnect.CreateCommand
- If check = "ok" And _vacuum Then
- logStats("MPSync: [getDBInfo][bw_checkDB_worker] VACUUM of database " & parm(0) & parm(1) & " started.", "LOG")
+ Try
+ SQLconnect.ConnectionString = "Data Source=" & p_Database(parm(0) & parm(1)) & ";Read Only=True;"
+ SQLconnect.Open()
+ SQLcommand.CommandText = "PRAGMA integrity_check;"
+ Using SQLreader = SQLcommand.ExecuteReader()
+ SQLreader.Read()
+ check = SQLreader.GetString(0)
+ End Using
+ Catch ex As Exception
+ check = "error"
+ End Try
+ End Using
- Try
- SQLconnect.ConnectionString = "Data Source=" & p_Database(parm(0) & parm(1)) & ";"
- SQLconnect.Open()
- SQLcommand.CommandText = "VACUUM;"
- SQLcommand.ExecuteNonQuery()
- logStats("MPSync: [getDBInfo][bw_checkDB_worker] VACUUM of database " & parm(0) & parm(1) & " complete.", "LOG")
- Catch ex As Exception
- logStats("MPSync: [getDBInfo][bw_checkDB_worker] VACUUM database " & parm(2) & " failed with exception: " & ex.Message, "ERROR")
- End Try
+ If check = "ok" And _vacuum Then
+ logStats("MPSync: [getDBInfo][bw_checkDB_worker] VACUUM of database " & parm(0) & parm(1) & " started.", MessageType.LOG)
+
+ Using SQLconnect As New SQLiteConnection(),
+ SQLcommand As SQLiteCommand = SQLconnect.CreateCommand
+ Try
+ SQLconnect.ConnectionString = "Data Source=" & p_Database(parm(0) & parm(1)) & ";"
+ SQLconnect.Open()
+ SQLcommand.CommandText = "VACUUM;"
+ SQLcommand.ExecuteNonQuery()
+ logStats("MPSync: [getDBInfo][bw_checkDB_worker] VACUUM of database " & parm(0) & parm(1) & " complete.", MessageType.LOG)
+ Catch ex As Exception
+ logStats("MPSync: [getDBInfo][bw_checkDB_worker] VACUUM database " & parm(2) & " failed with exception: " & ex.Message, MessageType.ERR)
+ End Try
+ End Using
+ End If
+
+ If check <> "ok" Then IO.File.Delete(parm(0) & parm(1))
- SQLconnect.Close()
End If
- If check <> "ok" Then IO.File.Delete(parm(0) & parm(1))
+ Try
+ If Not IO.File.Exists(parm(0) & parm(1)) Then
+ logStats("MPSync: Copying database " & parm(2) & " to target.", MessageType.LOG)
+ IO.File.Copy(parm(2), parm(0) & parm(1), True)
+ Drop_Triggers(parm(0), parm(1), "mpsync_update|mpsync_watch")
+ check = "copied database from source"
+ End If
+ Catch ex As Exception
+ logStats("MPSync: [getDBInfo][bw_checkDB_worker] Error while copying database " & parm(2) & " with exception: " & ex.Message, MessageType.ERR)
+ End Try
- End If
+ logStats("MPSync: [getDBInfo][bw_checkDB_worker] Checking integrity of database " & parm(0) & parm(1) & " complete - Status: " & check, MessageType.LOG)
- Try
- If Not IO.File.Exists(parm(0) & parm(1)) Then
- logStats("MPSync: Copying database " & parm(2) & " to target.", "LOG")
- IO.File.Copy(parm(2), parm(0) & parm(1), True)
- Drop_Triggers(parm(0), parm(1), "mpsync_update|mpsync_watch")
- check = "copied database from source"
- End If
+ bw_threads -= 1
+ bw_dbs.RemoveAt(bw_dbs.IndexOf(parm(1)))
Catch ex As Exception
- logStats("MPSync: [getDBInfo][bw_checkDB_worker] Error while copying database " & parm(2) & " with exception: " & ex.Message, "ERROR")
+ logStats("MPSync: [getDBInfo][bw_checkDB_worker] Unexpected error " & ex.Message, MessageType.ERR)
End Try
- logStats("MPSync: [getDBInfo][bw_checkDB_worker] Checking integrity of database " & parm(0) & parm(1) & " complete - Status: " & check, "LOG")
-
- bw_threads -= 1
- bw_dbs.RemoveAt(bw_dbs.IndexOf(parm(1)))
-
End Sub
Private Sub checkTriggers(ByVal mode As String)
@@ -679,12 +705,12 @@ Public Class MPSync_process
Dim x As Integer
Dim bw_checkTriggers() As BackgroundWorker = Nothing
- logStats("MPSync: [checkTriggers] Background threads for WATCH Trigger checking started.", "DEBUG")
+ logStats("MPSync: [checkTriggers] Background threads for WATCH Trigger checking started.", MessageType.DEBUG)
bw_threads = 0
bw_dbs.Clear()
- mps.SetWatched = Nothing
+ mps.SetWatched()
For x = 0 To UBound(_watched_dbs)
@@ -694,7 +720,7 @@ Public Class MPSync_process
If checkThreads("DB") <> -1 Then
Do While bw_threads >= checkThreads("DB")
- logStats("MPSync: [checkTriggers] waiting for available threads.", "DEBUG")
+ logStats("MPSync: [checkTriggers] waiting for available threads.", MessageType.DEBUG)
wait(10, False)
Loop
@@ -720,15 +746,15 @@ Public Class MPSync_process
Do While bw_threads > 0
Dim jobs As String = String.Join(",", bw_dbs.ToArray())
If jobs = String.Empty Then Exit Do
- logStats("MPSync: [checkTriggers - WATCH] waiting for background threads to finish... " & bw_threads.ToString & " threads remaining processing {" & jobs & "}.", "DEBUG")
+ logStats("MPSync: [checkTriggers - WATCH] waiting for background threads to finish... " & bw_threads.ToString & " threads remaining processing {" & jobs & "}.", MessageType.DEBUG)
wait(10, False)
Loop
- logStats("MPSync: [checkTriggers] Background threads for WATCH Trigger checking complete.", "DEBUG")
+ logStats("MPSync: [checkTriggers] Background threads for WATCH Trigger checking complete.", MessageType.DEBUG)
If sync_type = "Triggers" Then
- logStats("MPSync: [checkTriggers] Background threads for WORK Trigger checking started.", "DEBUG")
+ logStats("MPSync: [checkTriggers] Background threads for WORK Trigger checking started.", MessageType.DEBUG)
bw_threads = 0
bw_dbs.Clear()
@@ -746,7 +772,7 @@ Public Class MPSync_process
If checkThreads("DB") <> -1 Then
Do While bw_threads >= checkThreads("DB")
- logStats("MPSync: [checkTriggers] waiting for available threads.", "DEBUG")
+ logStats("MPSync: [checkTriggers] waiting for available threads.", MessageType.DEBUG)
wait(10, False)
Loop
@@ -777,7 +803,7 @@ Public Class MPSync_process
If checkThreads("DB") <> -1 Then
Do While bw_threads >= checkThreads("DB")
- logStats("MPSync: [checkTriggers] waiting for available threads.", "DEBUG")
+ logStats("MPSync: [checkTriggers] waiting for available threads.", MessageType.DEBUG)
wait(10, False)
Loop
@@ -801,18 +827,18 @@ Public Class MPSync_process
Do While bw_threads > 0
Dim jobs As String = String.Join(",", bw_dbs.ToArray())
If jobs = String.Empty Then Exit Do
- logStats("MPSync: [checkTriggers - WORK] waiting for background threads to finish... " & bw_threads.ToString & " threads remaining processing {" & jobs & "}.", "DEBUG")
+ logStats("MPSync: [checkTriggers - WORK] waiting for background threads to finish... " & bw_threads.ToString & " threads remaining processing {" & jobs & "}.", MessageType.DEBUG)
wait(10, False)
Loop
- logStats("MPSync: [checkTriggers] Background threads for WORK Trigger checking complete.", "DEBUG")
+ logStats("MPSync: [checkTriggers] Background threads for WORK Trigger checking complete.", MessageType.DEBUG)
End If
' remove triggers from local, if any
If sync_type = "Timestamp" Or mode = "server>client" Then
- logStats("MPSync: [checkTriggers] Background threads for DROP Trigger started.", "DEBUG")
+ logStats("MPSync: [checkTriggers] Background threads for DROP Trigger started.", MessageType.DEBUG)
bw_threads = 0
bw_dbs.Clear()
@@ -825,7 +851,7 @@ Public Class MPSync_process
If checkThreads("DB") <> -1 Then
Do While bw_threads >= checkThreads("DB")
- logStats("MPSync: [checkTriggers] waiting for available threads.", "DEBUG")
+ logStats("MPSync: [checkTriggers] waiting for available threads.", MessageType.DEBUG)
wait(10, False)
Loop
@@ -847,11 +873,11 @@ Public Class MPSync_process
Do While bw_threads > 0
Dim jobs As String = String.Join(",", bw_dbs.ToArray())
If jobs = String.Empty Then Exit Do
- logStats("MPSync: [checkTriggers - DROP] waiting for background threads to finish... " & bw_threads.ToString & " threads remaining processing {" & jobs & "}.", "DEBUG")
+ logStats("MPSync: [checkTriggers - DROP] waiting for background threads to finish... " & bw_threads.ToString & " threads remaining processing {" & jobs & "}.", MessageType.DEBUG)
wait(10, False)
Loop
- logStats("MPSync: [checkTriggers] Background threads for DROP Trigger complete.", "DEBUG")
+ logStats("MPSync: [checkTriggers] Background threads for DROP Trigger complete.", MessageType.DEBUG)
End If
@@ -859,42 +885,54 @@ Public Class MPSync_process
Private Sub bw_watchtriggers_worker(sender As System.Object, e As System.ComponentModel.DoWorkEventArgs)
- Dim parm() As String = Split(e.Argument, "|")
+ Try
+
+ Dim parm() As String = Split(e.Argument, "|")
- logStats("MPSync: [checkTriggers][bw_watchtriggers_worker] Background watch trigger thread on database " & parm(1) & " for " & parm(0) & " started.", "DEBUG")
+ logStats("MPSync: [checkTriggers][bw_watchtriggers_worker] Background watch trigger thread on database " & parm(1) & " for " & parm(0) & " started.", MessageType.DEBUG)
- If parm(0) = "ADD" Then
- Create_Watch_Tables(_db_client, parm(1))
- Create_Watch_Tables(_db_server, parm(1))
- Drop_Triggers(_db_client, parm(1), "mpsync_update|mpsync_watch")
- If _db_direction <> 1 Then
- Create_Watch_Triggers(_db_client, parm(1))
+ If parm(0) = "ADD" Then
+ Create_Watch_Tables(_db_client, parm(1))
+ Create_Watch_Tables(_db_server, parm(1))
+ Drop_Triggers(_db_client, parm(1), "mpsync_update|mpsync_watch")
+ If _db_direction <> 1 Then
+ Create_Watch_Triggers(_db_client, parm(1))
+ End If
+ ElseIf parm(0) = "DROP" Then
+ Drop_Watch_Tables(_db_client, parm(1))
+ Drop_Triggers(_db_client, parm(1), "mpsync_update|mpsync_watch")
End If
- ElseIf parm(0) = "DROP" Then
- Drop_Watch_Tables(_db_client, parm(1))
- Drop_Triggers(_db_client, parm(1), "mpsync_update|mpsync_watch")
- End If
- bw_threads -= 1
- bw_dbs.RemoveAt(bw_dbs.LastIndexOf(parm(1)))
+ bw_threads -= 1
+ bw_dbs.RemoveAt(bw_dbs.LastIndexOf(parm(1)))
- logStats("MPSync: [checkTriggers][bw_watchtriggers_worker] Background watch trigger thread on database " & parm(1) & " for " & parm(0) & " complete.", "DEBUG")
+ logStats("MPSync: [checkTriggers][bw_watchtriggers_worker] Background watch trigger thread on database " & parm(1) & " for " & parm(0) & " complete.", MessageType.DEBUG)
+
+ Catch ex As Exception
+ logStats("MPSync: [checkTriggers][bw_watchtriggers_worker] Unexpected error " & ex.Message, MessageType.ERR)
+ End Try
End Sub
Private Sub bw_worktriggers_worker(sender As System.Object, e As System.ComponentModel.DoWorkEventArgs)
- Dim parm() As String = Split(e.Argument, "|")
+ Try
+
+ Dim parm() As String = Split(e.Argument, "|")
- logStats("MPSync: [checkTriggers][bw_worktriggers_worker] Background work trigger thread on database " & parm(1) & " started.", "DEBUG")
+ logStats("MPSync: [checkTriggers][bw_worktriggers_worker] Background work trigger thread on database " & parm(1) & " started.", MessageType.DEBUG)
- If parm(0) = "DROP" Then Drop_Triggers(IO.Path.GetDirectoryName(parm(1)) & "\", IO.Path.GetFileName(parm(1)), "mpsync_work")
- If parm(0) = "ADD" Then Create_Sync_Triggers(parm(1))
+ If parm(0) = "DROP" Then Drop_Triggers(IO.Path.GetDirectoryName(parm(1)) & "\", IO.Path.GetFileName(parm(1)), "mpsync_work")
+ If parm(0) = "ADD" Then Create_Sync_Triggers(parm(1))
- bw_threads -= 1
- bw_dbs.RemoveAt(bw_dbs.LastIndexOf(parm(1)))
+ bw_threads -= 1
+ bw_dbs.RemoveAt(bw_dbs.LastIndexOf(parm(1)))
- logStats("MPSync: [checkTriggers][bw_worktriggers_worker] Background work trigger thread on database " & parm(1) & " complete.", "DEBUG")
+ logStats("MPSync: [checkTriggers][bw_worktriggers_worker] Background work trigger thread on database " & parm(1) & " complete.", MessageType.DEBUG)
+
+ Catch ex As Exception
+ logStats("MPSync: [checkTriggers][bw_worktriggers_worker] Unexpected error " & ex.Message, MessageType.ERR)
+ End Try
End Sub
@@ -902,7 +940,7 @@ Public Class MPSync_process
If Not IO.File.Exists(path & database) Then Exit Sub
- logStats("MPSync: [Create_Watch_Tables] Creating/altering watch table mpsync in database " & path & database, "DEBUG")
+ logStats("MPSync: [Create_Watch_Tables] Creating/altering watch table mpsync in database " & path & database, MessageType.DEBUG)
Dim SQL As String = Nothing
@@ -911,22 +949,22 @@ Public Class MPSync_process
Select Case database
Case mps.i_watched(0).database
- SQL = "CREATE TABLE IF NOT EXISTS mpsync " & _
- "(mps_id INTEGER PRIMARY KEY AUTOINCREMENT, tablename TEXT, mps_lastupdated TEXT, mps_session TEXT, id INTEGER, user TEXT, " & _
- "user_rating TEXT, watched INTEGER, resume_part INTEGER, resume_time INTEGER, resume_data TEXT, alternatecovers TEXT, coverfullpath TEXT, " & _
+ SQL = "CREATE TABLE IF NOT EXISTS mpsync " &
+ "(mps_id INTEGER PRIMARY KEY AUTOINCREMENT, tablename TEXT, mps_lastupdated TEXT, mps_session TEXT, id INTEGER, user TEXT, " &
+ "user_rating TEXT, watched INTEGER, resume_part INTEGER, resume_time INTEGER, resume_data TEXT, alternatecovers TEXT, coverfullpath TEXT, " &
"coverthumbfullpath TEXT)"
Case mps.i_watched(1).database
- SQL = "CREATE TABLE IF NOT EXISTS mpsync (mps_id INTEGER PRIMARY KEY AUTOINCREMENT, tablename TEXT, mps_lastupdated TEXT, mps_session TEXT, " & _
+ SQL = "CREATE TABLE IF NOT EXISTS mpsync (mps_id INTEGER PRIMARY KEY AUTOINCREMENT, tablename TEXT, mps_lastupdated TEXT, mps_session TEXT, " &
"idTrack INTEGER, iResumeAt INTEGER, dateLastPlayed TEXT)"
Case mps.i_watched(2).database
- SQL = "CREATE TABLE IF NOT EXISTS mpsync " & _
- "(mps_id INTEGER PRIMARY KEY AUTOINCREMENT, tablename TEXT, mps_lastupdated TEXT, mps_session TEXT, CompositeID TEXT, id INTEGER, " & _
- "EpisodeFilename TEXT, watched INTEGER, myRating TEXT, StopTime TEXT, DateWatched TEXT, WatchedFileTimeStamp INTEGER, " & _
+ SQL = "CREATE TABLE IF NOT EXISTS mpsync " &
+ "(mps_id INTEGER PRIMARY KEY AUTOINCREMENT, tablename TEXT, mps_lastupdated TEXT, mps_session TEXT, CompositeID TEXT, id INTEGER, " &
+ "EpisodeFilename TEXT, watched INTEGER, myRating TEXT, StopTime TEXT, DateWatched TEXT, WatchedFileTimeStamp INTEGER, " &
"UnwatchedItems INTEGER, EpisodesUnWatched INTEGER)"
Case mps.i_watched(3).database
- SQL = "CREATE TABLE IF NOT EXISTS mpsync " & _
- "(mps_id INTEGER PRIMARY KEY AUTOINCREMENT, tablename TEXT, mps_lastupdated TEXT, mps_session TEXT, idMovie INTEGER, watched BOOL, " & _
- "timeswatched INTEGER, iwatchedPercent INTEGER, idResume INTEGER, idFile INTEGER, stoptime INTEGER, resumeData BLOOB, idBookmark INTEGER, " & _
+ SQL = "CREATE TABLE IF NOT EXISTS mpsync " &
+ "(mps_id INTEGER PRIMARY KEY AUTOINCREMENT, tablename TEXT, mps_lastupdated TEXT, mps_session TEXT, idMovie INTEGER, watched BOOL, " &
+ "timeswatched INTEGER, iwatchedPercent INTEGER, idResume INTEGER, idFile INTEGER, stoptime INTEGER, resumeData BLOOB, idBookmark INTEGER, " &
"fPercentage TEXT)"
End Select
@@ -979,24 +1017,23 @@ Public Class MPSync_process
If SQL <> Nothing Then
- Dim SQLconnect As New SQLiteConnection()
- Dim SQLcommand As SQLiteCommand = SQLconnect.CreateCommand
-
- SQLconnect.ConnectionString = "Data Source=" & p_Database(path & database)
+ Using SQLconnect As New SQLiteConnection(),
+ SQLcommand As SQLiteCommand = SQLconnect.CreateCommand
- Try
- SQLconnect.Open()
- SQLcommand.CommandText = SQL
- SQLcommand.ExecuteNonQuery()
- Catch ex As Exception
- logStats("MPSync: [Create_Watch_Tables] Error executing '" & SQLcommand.CommandText & "' on database " & database, "ERROR")
- End Try
+ SQLconnect.ConnectionString = "Data Source=" & p_Database(path & database)
+ Try
+ SQLconnect.Open()
+ SQLcommand.CommandText = SQL
+ SQLcommand.ExecuteNonQuery()
+ Catch ex As Exception
+ logStats("MPSync: [Create_Watch_Tables] Error executing '" & SQLcommand.CommandText & "' on database " & database, MessageType.ERR)
+ End Try
- SQLconnect.Close()
+ End Using
End If
- logStats("MPSync: [Create_Watch_Tables] Watch table mpsync in database " & path & database & " created/altered.", "DEBUG")
+ logStats("MPSync: [Create_Watch_Tables] Watch table mpsync in database " & path & database & " created/altered.", MessageType.DEBUG)
End Sub
@@ -1004,24 +1041,23 @@ Public Class MPSync_process
If Not IO.File.Exists(path & database) Then Exit Sub
- logStats("MPSync: [Drop_Watch_Tables] Drop watch table mpsync from database " & path & database, "DEBUG")
+ logStats("MPSync: [Drop_Watch_Tables] Drop watch table mpsync from database " & path & database, MessageType.DEBUG)
- Dim SQLconnect As New SQLiteConnection()
- Dim SQLcommand As SQLiteCommand = SQLconnect.CreateCommand
+ Using SQLconnect As New SQLiteConnection(),
+ SQLcommand As SQLiteCommand = SQLconnect.CreateCommand
- SQLconnect.ConnectionString = "Data Source=" & p_Database(path & database)
-
- Try
- SQLconnect.Open()
- SQLcommand.CommandText = "DROP TABLE IF EXISTS mpsync"
- SQLcommand.ExecuteNonQuery()
- Catch ex As Exception
- logStats("MPSync: [Drop_Watch_Tables] Error executing '" & SQLcommand.CommandText & "' from database " & path & database, "ERROR")
- End Try
+ SQLconnect.ConnectionString = "Data Source=" & p_Database(path & database)
+ Try
+ SQLconnect.Open()
+ SQLcommand.CommandText = "DROP TABLE IF EXISTS mpsync"
+ SQLcommand.ExecuteNonQuery()
+ Catch ex As Exception
+ logStats("MPSync: [Drop_Watch_Tables] Error executing '" & SQLcommand.CommandText & "' from database " & path & database, MessageType.ERR)
+ End Try
- SQLconnect.Close()
+ End Using
- logStats("MPSync: [Drop_Watch_Tables] Watch table mpsync from database " & path & database & " dropped.", "DEBUG")
+ logStats("MPSync: [Drop_Watch_Tables] Watch table mpsync from database " & path & database & " dropped.", MessageType.DEBUG)
End Sub
@@ -1029,7 +1065,7 @@ Public Class MPSync_process
If Not IO.File.Exists(path & database) Then Exit Sub
- logStats("MPSync: [Create_Watch_Triggers] Creating watch triggers in database " & path & database, "DEBUG")
+ logStats("MPSync: [Create_Watch_Triggers] Creating watch triggers in database " & path & database, MessageType.DEBUG)
Dim SQL As String = Nothing
Dim tables() As String = Nothing
@@ -1107,12 +1143,12 @@ Public Class MPSync_process
If tblflds <> Nothing Then
newflds = FieldList(path, database, tables(x), fields(x).names, "new.")
- SQL = SQL & "CREATE TRIGGER IF NOT EXISTS mpsync_watch_" & tables(x) & " " & _
- "AFTER UPDATE OF " & tblflds & " ON " & tables(x) & " " & _
- "BEGIN " & _
- "DELETE FROM mpsync WHERE tablename='" & tables(x) & "' AND mps_session='" & session & "' AND " & keys(x) & "=new." & keys(x) & "; " & _
- "INSERT OR REPLACE INTO mpsync(tablename,mps_lastupdated,mps_session," & tblflds & ") " & _
- "VALUES('" & tables(x) & "',datetime('now','localtime'),'" & session & "'," & newflds & "); " & _
+ SQL = SQL & "CREATE TRIGGER IF NOT EXISTS mpsync_watch_" & tables(x) & " " &
+ "AFTER UPDATE OF " & tblflds & " ON " & tables(x) & " " &
+ "BEGIN " &
+ "DELETE FROM mpsync WHERE tablename='" & tables(x) & "' AND mps_session='" & session & "' AND " & keys(x) & "=new." & keys(x) & "; " &
+ "INSERT OR REPLACE INTO mpsync(tablename,mps_lastupdated,mps_session," & tblflds & ") " &
+ "VALUES('" & tables(x) & "',datetime('now','localtime'),'" & session & "'," & newflds & "); " &
"END; "
End If
End If
@@ -1121,24 +1157,22 @@ Public Class MPSync_process
If SQL <> Nothing Then
- Dim SQLconnect As New SQLiteConnection()
- Dim SQLcommand As SQLiteCommand = SQLconnect.CreateCommand
-
- SQLconnect.ConnectionString = "Data Source=" & p_Database(path & database)
-
- Try
- SQLconnect.Open()
- SQLcommand.CommandText = SQL
- SQLcommand.ExecuteNonQuery()
- Catch ex As Exception
- logStats("MPSync: [Create_Watch_Triggers] Error executing '" & SQLcommand.CommandText & " on database " & path & database, "ERROR")
- End Try
+ Using SQLconnect As New SQLiteConnection(),
+ SQLcommand As SQLiteCommand = SQLconnect.CreateCommand
- SQLconnect.Close()
+ SQLconnect.ConnectionString = "Data Source=" & p_Database(path & database)
+ Try
+ SQLconnect.Open()
+ SQLcommand.CommandText = SQL
+ SQLcommand.ExecuteNonQuery()
+ Catch ex As Exception
+ logStats("MPSync: [Create_Watch_Triggers] Error executing '" & SQLcommand.CommandText & " on database " & path & database, MessageType.ERR)
+ End Try
+ End Using
End If
- logStats("MPSync: [Create_Watch_Triggers] Watch triggers in database " & path & database & " created.", "DEBUG")
+ logStats("MPSync: [Create_Watch_Triggers] Watch triggers in database " & path & database & " created.", MessageType.DEBUG)
End Sub
@@ -1146,46 +1180,44 @@ Public Class MPSync_process
If Not IO.File.Exists(path & database) Then Exit Sub
- logStats("MPSync: [Drop_Triggers] Drop triggers in database " & path & database, "DEBUG")
+ logStats("MPSync: [Drop_Triggers] Drop triggers in database " & path & database, MessageType.DEBUG)
Dim SQL As String = Nothing
Dim pattern() As String = Split(searchpattern, "|")
- Dim SQLconnect As New SQLiteConnection()
- Dim SQLcommand As SQLiteCommand = SQLconnect.CreateCommand
- Dim SQLreader As SQLiteDataReader
-
- Try
- SQLconnect.ConnectionString = "Data Source=" & p_Database(path & database)
- SQLconnect.Open()
+ Using SQLconnect As New SQLiteConnection(),
+ SQLcommand As SQLiteCommand = SQLconnect.CreateCommand
- If table = Nothing Then
- SQLcommand.CommandText = "SELECT name FROM sqlite_master WHERE type='trigger'"
- Else
- SQLcommand.CommandText = "SELECT name FROM sqlite_master WHERE type='trigger' and tbl_name='" & table & "'"
- End If
+ Try
+ SQLconnect.ConnectionString = "Data Source=" & p_Database(path & database)
+ SQLconnect.Open()
- SQLreader = SQLcommand.ExecuteReader()
+ If table = Nothing Then
+ SQLcommand.CommandText = "SELECT name FROM sqlite_master WHERE type='trigger'"
+ Else
+ SQLcommand.CommandText = "SELECT name FROM sqlite_master WHERE type='trigger' and tbl_name='" & table & "'"
+ End If
- While SQLreader.Read()
- For x As Integer = 0 To UBound(pattern)
- If Left(SQLreader(0), Len(pattern(x))) = pattern(x) Then SQL = SQL & "DROP TRIGGER " & SQLreader(0) & "; "
- Next
- End While
+ Using SQLreader = SQLcommand.ExecuteReader()
- SQLreader.Close()
+ While SQLreader.Read()
+ For x As Integer = 0 To UBound(pattern)
+ If Left(SQLreader.GetString(0), Len(pattern(x))) = pattern(x) Then SQL = SQL & "DROP TRIGGER " & SQLreader.GetString(0) & "; "
+ Next
+ End While
+ End Using
- If SQL <> Nothing Then
- SQLcommand.CommandText = SQL
- SQLcommand.ExecuteNonQuery()
- End If
- Catch ex As Exception
- logStats("MPSync: [Drop_Triggers] Error executing '" & SQLcommand.CommandText & "' on database " & path & database, "ERROR")
- End Try
+ If SQL <> Nothing Then
+ SQLcommand.CommandText = SQL
+ SQLcommand.ExecuteNonQuery()
+ End If
+ Catch ex As Exception
+ logStats("MPSync: [Drop_Triggers] Error executing '" & SQLcommand.CommandText & "' on database " & path & database, MessageType.ERR)
+ End Try
- SQLconnect.Close()
+ End Using
- logStats("MPSync: [Drop_Triggers] Triggers in database " & path & database & " dropped.", "DEBUG")
+ logStats("MPSync: [Drop_Triggers] Triggers in database " & path & database & " dropped.", MessageType.DEBUG)
End Sub
@@ -1193,7 +1225,7 @@ Public Class MPSync_process
If Not IO.File.Exists(database) Then Exit Sub
- logStats("MPSync: [Create_Sync_Triggers] Check synchronization triggers in database " & database, "DEBUG")
+ logStats("MPSync: [Create_Sync_Triggers] Check synchronization triggers in database " & database, MessageType.DEBUG)
Dim x As Integer = -1
Dim table() As String = Nothing
@@ -1202,140 +1234,137 @@ Public Class MPSync_process
Dim d_SQL, u_SQL, i_SQL As String
Dim omit As Array = {"mpsync", "mpsync_trigger", "sqlite_sequence", "sqlite_stat1", "sqlite_stat2"}
- Dim SQLconnect As New SQLiteConnection()
- Dim SQLcommand As SQLiteCommand = SQLconnect.CreateCommand
- Dim SQLreader As SQLiteDataReader
+ Using SQLconnect As New SQLiteConnection(),
+ SQLcommand As SQLiteCommand = SQLconnect.CreateCommand
- SQLconnect.ConnectionString = "Data Source=" & p_Database(database)
- SQLconnect.Open()
- SQLcommand.CommandText = "SELECT name FROM sqlite_master WHERE type='table'"
- SQLreader = SQLcommand.ExecuteReader()
-
- While SQLreader.Read()
+ SQLconnect.ConnectionString = "Data Source=" & p_Database(database)
+ SQLconnect.Open()
+ SQLcommand.CommandText = "SELECT name FROM sqlite_master WHERE type='table'"
+ Using SQLreader = SQLcommand.ExecuteReader()
+ While SQLreader.Read()
- If Array.IndexOf(omit, SQLreader(0)) = -1 Then
- x += 1
- ReDim Preserve table(x)
- table(x) = SQLreader(0)
- End If
+ If Array.IndexOf(omit, SQLreader(0)) = -1 Then
+ x += 1
+ ReDim Preserve table(x)
+ table(x) = SQLreader.GetString(0)
+ End If
- End While
+ End While
+ End Using
- SQLreader.Close()
+ If x = -1 Then
+ ReDim Preserve table(0)
+ table(0) = Nothing
+ End If
- If x = -1 Then
- ReDim Preserve table(0)
- table(0) = Nothing
- End If
+ SQLcommand.CommandText = "SELECT sql FROM sqlite_master WHERE type='trigger'"
+ Using SQLreader = SQLcommand.ExecuteReader()
+ x = -1
- SQLcommand.CommandText = "SELECT sql FROM sqlite_master WHERE type='trigger'"
- SQLreader = SQLcommand.ExecuteReader()
+ While SQLreader.Read()
- x = -1
+ If Array.IndexOf(omit, SQLreader(0)) = -1 Then
+ x += 1
+ ReDim Preserve trigger(x)
+ trigger(x) = SQLreader.GetString(0)
+ End If
- While SQLreader.Read()
+ End While
+ End Using
- If Array.IndexOf(omit, SQLreader(0)) = -1 Then
- x += 1
- ReDim Preserve trigger(x)
- trigger(x) = SQLreader(0)
+ If x = -1 Then
+ ReDim Preserve trigger(0)
+ trigger(0) = Nothing
End If
- End While
-
- SQLreader.Close()
-
- If x = -1 Then
- ReDim Preserve trigger(0)
- trigger(0) = Nothing
- End If
-
- If TableExist(IO.Path.GetDirectoryName(database) & "\", IO.Path.GetFileName(database), "mpsync_trigger", True) = False Then
+ If TableExist(IO.Path.GetDirectoryName(database) & "\", IO.Path.GetFileName(database), "mpsync_trigger", True) = False Then
- logStats("MPSync: [Create_Sync_Triggers] Creating work table mpsync_trigger in database " & database, "LOG")
+ logStats("MPSync: [Create_Sync_Triggers] Creating work table mpsync_trigger in database " & database, MessageType.LOG)
- Try
- SQLcommand.CommandText = "CREATE TABLE IF NOT EXISTS mpsync_trigger (id INTEGER PRIMARY KEY AUTOINCREMENT, tablename TEXT, lastupdated TEXT)"
- SQLcommand.ExecuteNonQuery()
- Catch ex As Exception
- logStats("MPSync: [Create_Sync_Triggers] Error executing '" & SQLcommand.CommandText & " on database " & database, "ERROR")
- End Try
+ Try
+ SQLcommand.CommandText = "CREATE TABLE IF NOT EXISTS mpsync_trigger (id INTEGER PRIMARY KEY AUTOINCREMENT, tablename TEXT, lastupdated TEXT)"
+ SQLcommand.ExecuteNonQuery()
+ Catch ex As Exception
+ logStats("MPSync: [Create_Sync_Triggers] Error executing '" & SQLcommand.CommandText & " on database " & database, MessageType.ERR)
+ End Try
- End If
+ End If
- For x = 0 To UBound(table)
+ For x = 0 To UBound(table)
- u_SQL = "CREATE TRIGGER mpsync_work_u_" & table(x) & " " & _
- "AFTER UPDATE ON " & table(x) & " " & _
- "BEGIN " & _
- "UPDATE mpsync_trigger SET lastupdated=datetime('now','localtime') WHERE tablename='" & table(x) & "'; " & _
- "INSERT INTO mpsync_trigger(tablename,lastupdated) " & _
- "SELECT '" & table(x) & "',datetime('now','localtime') " & _
- "WHERE NOT EXISTS (SELECT 1 FROM mpsync_trigger WHERE tablename = '" & table(x) & "' LIMIT 1); " & _
+ u_SQL = "CREATE TRIGGER mpsync_work_u_" & table(x) & " " &
+ "AFTER UPDATE ON " & table(x) & " " &
+ "BEGIN " &
+ "UPDATE mpsync_trigger SET lastupdated=datetime('now','localtime') WHERE tablename='" & table(x) & "'; " &
+ "INSERT INTO mpsync_trigger(tablename,lastupdated) " &
+ "SELECT '" & table(x) & "',datetime('now','localtime') " &
+ "WHERE NOT EXISTS (SELECT 1 FROM mpsync_trigger WHERE tablename = '" & table(x) & "' LIMIT 1); " &
"END"
- i_SQL = "CREATE TRIGGER mpsync_work_i_" & table(x) & " " & _
- "AFTER INSERT ON " & table(x) & " " & _
- "BEGIN " & _
- "UPDATE mpsync_trigger SET lastupdated=datetime('now','localtime') WHERE tablename='" & table(x) & "'; " & _
- "INSERT INTO mpsync_trigger(tablename,lastupdated) " & _
- "SELECT '" & table(x) & "',datetime('now','localtime') " & _
- "WHERE NOT EXISTS (SELECT 1 FROM mpsync_trigger WHERE tablename = '" & table(x) & "' LIMIT 1); " & _
+ i_SQL = "CREATE TRIGGER mpsync_work_i_" & table(x) & " " &
+ "AFTER INSERT ON " & table(x) & " " &
+ "BEGIN " &
+ "UPDATE mpsync_trigger SET lastupdated=datetime('now','localtime') WHERE tablename='" & table(x) & "'; " &
+ "INSERT INTO mpsync_trigger(tablename,lastupdated) " &
+ "SELECT '" & table(x) & "',datetime('now','localtime') " &
+ "WHERE NOT EXISTS (SELECT 1 FROM mpsync_trigger WHERE tablename = '" & table(x) & "' LIMIT 1); " &
"END"
- d_SQL = "CREATE TRIGGER mpsync_work_d_" & table(x) & " " & _
- "AFTER DELETE ON " & table(x) & " " & _
- "BEGIN " & _
- "UPDATE mpsync_trigger SET lastupdated=datetime('now','localtime') WHERE tablename='" & table(x) & "'; " & _
- "INSERT INTO mpsync_trigger(tablename,lastupdated) " & _
- "SELECT '" & table(x) & "',datetime('now','localtime') " & _
- "WHERE NOT EXISTS (SELECT 1 FROM mpsync_trigger WHERE tablename = '" & table(x) & "' LIMIT 1); " & _
+ d_SQL = "CREATE TRIGGER mpsync_work_d_" & table(x) & " " &
+ "AFTER DELETE ON " & table(x) & " " &
+ "BEGIN " &
+ "UPDATE mpsync_trigger SET lastupdated=datetime('now','localtime') WHERE tablename='" & table(x) & "'; " &
+ "INSERT INTO mpsync_trigger(tablename,lastupdated) " &
+ "SELECT '" & table(x) & "',datetime('now','localtime') " &
+ "WHERE NOT EXISTS (SELECT 1 FROM mpsync_trigger WHERE tablename = '" & table(x) & "' LIMIT 1); " &
"END"
- If trigger.Contains(u_SQL) And trigger.Contains(i_SQL) And trigger.Contains(d_SQL) Then
- u_SQL = Nothing
- i_SQL = Nothing
- d_SQL = Nothing
- Else
- u_SQL = u_SQL & "; "
- i_SQL = i_SQL & "; "
- d_SQL = d_SQL & "; "
- End If
+ If trigger.Contains(u_SQL) And trigger.Contains(i_SQL) And trigger.Contains(d_SQL) Then
+ u_SQL = Nothing
+ i_SQL = Nothing
+ d_SQL = Nothing
+ Else
+ u_SQL = u_SQL & "; "
+ i_SQL = i_SQL & "; "
+ d_SQL = d_SQL & "; "
+ End If
- ReDim Preserve SQL(x)
- SQL(x) = u_SQL & i_SQL & d_SQL
+ ReDim Preserve SQL(x)
+ SQL(x) = u_SQL & i_SQL & d_SQL
- Next
+ Next
- SQLconnect.Close()
+ End Using
For x = 0 To UBound(SQL)
If SQL(x) <> Nothing Then Drop_Triggers(IO.Path.GetDirectoryName(database) & "\", IO.Path.GetFileName(database), "mpsync_work", table(x))
Next
- Try
- SQLconnect.ConnectionString = "Data Source=" & p_Database(database)
- SQLconnect.Open()
+ Using SQLconnect As New SQLiteConnection(),
+ SQLcommand As SQLiteCommand = SQLconnect.CreateCommand
+ Try
- For x = 0 To UBound(SQL)
+ SQLconnect.ConnectionString = "Data Source=" & p_Database(database)
+ SQLconnect.Open()
- If SQL(x) <> Nothing Then
+ For x = 0 To UBound(SQL)
- logStats("MPSync: [Create_Sync_Triggers] Creating synchronization triggers on table " & table(x) & " in database " & database, "LOG")
+ If SQL(x) <> Nothing Then
- SQLcommand.CommandText = SQL(x)
- SQLcommand.ExecuteNonQuery()
+ logStats("MPSync: [Create_Sync_Triggers] Creating synchronization triggers on table " & table(x) & " in database " & database, MessageType.LOG)
- End If
+ SQLcommand.CommandText = SQL(x)
+ SQLcommand.ExecuteNonQuery()
- Next
- Catch ex As Exception
- logStats("MPSync: [Create_Sync_Triggers] Error executing '" & SQLcommand.CommandText & " on table " & table(x) & " in database " & database & " with exception: " & ex.Message, "ERROR")
- End Try
+ End If
- SQLconnect.Close()
+ Next
+ Catch ex As Exception
+ logStats("MPSync: [Create_Sync_Triggers] Error executing '" & SQLcommand.CommandText & " on table " & table(x) & " in database " & database & " with exception: " & ex.Message, MessageType.ERR)
+ End Try
+ End Using
- logStats("MPSync: [Create_Sync_Triggers] Synchronization triggers in database " & database & " checked.", "DEBUG")
+ logStats("MPSync: [Create_Sync_Triggers] Synchronization triggers in database " & database & " checked.", MessageType.DEBUG)
End Sub
diff --git a/MPSync/MPSync/MPSync_process_DB.vb b/MPSync/MPSync/MPSync_process_DB.vb
index 466d156..298f87c 100644
--- a/MPSync/MPSync/MPSync_process_DB.vb
+++ b/MPSync/MPSync/MPSync_process_DB.vb
@@ -1,7 +1,4 @@
-Imports MediaPortal.Configuration
-Imports MediaPortal.GUI.Library
-
-Imports System.ComponentModel
+Imports System.ComponentModel
Imports System.Data.SQLite
Public Class MPSync_process_DB
@@ -12,15 +9,42 @@ Public Class MPSync_process_DB
Dim bw_dbs As New ArrayList
Dim bw_sync_db() As BackgroundWorker
+ Public Structure ColumnInfo
+ Public name As String
+ Public type As String
+ Public dflt_value As String
+ Public pk As Boolean
+ Public notNull As Boolean
+ Public Overrides Function ToString() As String
+ Return String.Format("[{0}:{1}]", name, type)
+ End Function
+ End Structure
+
+ Public Class TableInfo
+ Public source As String
+ Public target As String
+ Public database As String
+ Public name As String
+ Public Sub New(asource As String, atarget As String, adatabase As String, aname As String)
+ source = asource
+ target = atarget
+ database = adatabase
+ name = aname
+ End Sub
+ End Class
+ Public Class SyncDbParams
+ Public tables As List(Of TableInfo)
+ End Class
+
Private ReadOnly Property p_Session As String
Get
Dim session As String = Nothing
Try
- Using XMLreader As MediaPortal.Profile.Settings = New MediaPortal.Profile.Settings(Config.GetFile(Config.Dir.Config, "MPSync.xml"))
+ Using XMLreader As MediaPortal.Profile.Settings = New MediaPortal.Profile.Settings(MPSync_settings.GetConfigFileName)
session = XMLreader.GetValueAsString("Plugin", "session ID", Nothing)
End Using
Catch ex As Exception
- MPSync_process.logStats("MPSync: Error reading 'session' value from XML with exception " & ex.Message, "ERROR")
+ MPSync_process.logStats("MPSync: Error reading 'session' value from XML with exception " & ex.Message, MessageType.ERR)
End Try
Return session
End Get
@@ -30,106 +54,112 @@ Public Class MPSync_process_DB
Get
Dim lastsync As String = "0001-01-01 00:00:00"
Try
- Using XMLreader As MediaPortal.Profile.Settings = New MediaPortal.Profile.Settings(Config.GetFile(Config.Dir.Config, "MPSync.xml"))
+ Using XMLreader As MediaPortal.Profile.Settings = New MediaPortal.Profile.Settings(MPSync_settings.GetConfigFileName)
lastsync = XMLreader.GetValueAsString("Plugin", "last sync", "0001-01-01 00:00:00")
End Using
Catch ex As Exception
- MPSync_process.logStats("MPSync: Error reading 'last sync' value from XML with exception " & ex.Message, "ERROR")
+ MPSync_process.logStats("MPSync: Error reading 'last sync' value from XML with exception " & ex.Message, MessageType.ERR)
End Try
Return lastsync
End Get
Set(value As String)
Try
- Using XMLwriter As MediaPortal.Profile.Settings = New MediaPortal.Profile.Settings(Config.GetFile(Config.Dir.Config, "MPSync.xml"))
+ Using XMLwriter As MediaPortal.Profile.Settings = New MediaPortal.Profile.Settings(MPSync_settings.GetConfigFileName)
XMLwriter.SetValue("Plugin", "last sync", value)
End Using
MediaPortal.Profile.Settings.SaveCache()
Catch ex As Exception
- MPSync_process.logStats("MPSync: Error writing 'last sync' value in XML with exception " & ex.Message, "ERROR")
+ MPSync_process.logStats("MPSync: Error writing 'last sync' value in XML with exception " & ex.Message, MessageType.ERR)
End Try
End Set
End Property
- Public Function LoadTable(ByVal path As String, ByVal database As String, ByVal table As String, Optional ByRef columns As Array = Nothing, Optional ByVal where As String = Nothing, Optional ByVal order As String = Nothing) As Array
+ Public Function LoadTable(ByVal path As String, ByVal database As String, ByVal table As String, Optional ByRef columns As List(Of ColumnInfo) = Nothing, Optional ByVal where As String = Nothing, Optional ByVal order As String = Nothing) As Array
+
+ MPSync_process.logStats("MPSync: [LoadTable] Load values from table " & table & " in database " & path & database, MessageType.DEBUG)
- MPSync_process.logStats("MPSync: [LoadTable] Load values from table " & table & " in database " & path & database, "DEBUG")
+ If columns Is Nothing Then columns = New List(Of ColumnInfo)
Dim x, y, z, records As Integer
Dim fields As String = "*"
Dim data(,) As String = Nothing
- Dim SQLconnect As New SQLite.SQLiteConnection()
- Dim SQLcommand As SQLiteCommand = SQLconnect.CreateCommand
- Dim SQLreader As SQLiteDataReader = Nothing
-
- Try
-
- If columns Is Nothing Then
- columns = getFields(path, database, table)
- Else
- fields = getSelectFields(columns)
- End If
-
- z = getPK(columns)
- records = RecordCount(path, database, table, where)
+ Using SQLconnect As New SQLiteConnection(),
+ SQLcommand As SQLiteCommand = SQLconnect.CreateCommand
- SQLconnect.ConnectionString = "Data Source=" & MPSync_process.p_Database(path & database) & ";Read Only=True;"
- SQLconnect.Open()
+ Try
- If records > 0 Then
+ If columns.Count = 0 Then
+ columns = getFields(path, database, table)
+ Else
+ fields = getSelectFields(columns)
+ End If
- SQLcommand.CommandText = "SELECT rowid, " & fields & " FROM " & table
+ z = getPK(columns)
+ records = RecordCount(path, database, table, where)
- If where <> Nothing Then
- SQLcommand.CommandText &= " WHERE " & where
- End If
+ SQLconnect.ConnectionString = "Data Source=" & MPSync_process.p_Database(path & database) & ";Read Only=True;"
+ SQLconnect.Open()
- If order <> Nothing Then
- SQLcommand.CommandText &= " ORDER BY " & order
- End If
+ If records > 0 Then
- SQLreader = SQLcommand.ExecuteReader()
+ SQLcommand.CommandText = "SELECT rowid, " & fields & " FROM " & table
- ReDim Preserve data(2, records - 1)
+ If where <> Nothing Then
+ SQLcommand.CommandText &= " WHERE " & where
+ End If
- While SQLreader.Read()
+ If order <> Nothing Then
+ SQLcommand.CommandText &= " ORDER BY " & order
+ End If
- data(0, x) = SQLreader(0)
-
- For y = 0 To UBound(columns, 2)
- If Not IsDBNull(SQLreader(y + 1)) Then
- Select Case columns(1, y)
- Case "INTEGER", "REAL", "BLOB"
- data(1, x) &= SQLreader(y + 1).ToString.Replace(",", ".") & dlm
- If y = z Then data(2, x) = SQLreader(y + 1).ToString
- Case "TIMESTAMP"
- data(1, x) &= Format(SQLreader(y + 1), "yyyy-MM-dd HH:mm:ss") & dlm
- If y = z Then data(2, x) = Format(SQLreader(y + 1), "yyyy-MM-dd HH:mm:ss")
- Case Else
- data(1, x) &= SQLreader(y + 1) & dlm
- If y = z Then data(2, x) = SQLreader(y + 1)
- End Select
- Else
- data(1, x) &= "NULL" & dlm
- If y = z Then data(2, x) = "NULL"
- End If
- Next
+ Using SQLreader = SQLcommand.ExecuteReader()
- x += 1
+ ReDim Preserve data(2, records - 1)
+ Try
- End While
+ While SQLreader.Read()
+
+ data(0, x) = SQLreader.GetString(0)
+
+ For y = 0 To columns.Count - 1
+ If Not IsDBNull(SQLreader(y + 1)) Then
+ Select Case columns(y).type
+ Case "INTEGER", "REAL", "BLOB"
+ data(1, x) &= SQLreader(y + 1).ToString.Replace(",", ".") & dlm
+ If y = z Then data(2, x) = SQLreader(y + 1).ToString
+ Case "TIMESTAMP"
+ data(1, x) &= Format(SQLreader(y + 1), "yyyy-MM-dd HH:mm:ss") & dlm
+ If y = z Then data(2, x) = Format(SQLreader(y + 1), "yyyy-MM-dd HH:mm:ss")
+ Case Else
+ data(1, x) &= SQLreader.GetString(y + 1) & dlm
+ If y = z Then data(2, x) = SQLreader.GetString(y + 1)
+ End Select
+ Else
+ data(1, x) &= "NULL" & dlm
+ If y = z Then data(2, x) = "NULL"
+ End If
+ Next
+
+ x += 1
+
+ End While
+ Catch ex As Exception
+ MPSync_process.logStats("MPSync: Error reading table " & table & " rowid """ & SQLreader.GetString(0) & """ in " & database & " with exception: " & ex.Message, MessageType.DEBUG)
+ Throw
+ End Try
- Else
- ReDim data(2, 0)
- End If
+ End Using
+ Else
+ ReDim data(2, 0)
+ End If
- Catch ex As Exception
- MPSync_process.logStats("MPSync: Error reading table " & table & " rowid """ & SQLreader(0) & """ in " & database & " with exception: " & ex.Message, "DEBUG")
- MPSync_process.logStats("MPSync: Error reading data from table " & table & " in database " & database, "ERROR")
- data = Nothing
- End Try
+ Catch ex As Exception
+ MPSync_process.logStats("MPSync: Error reading data from table " & table & " in database " & database, MessageType.ERR)
+ data = Nothing
+ End Try
- SQLconnect.Close()
+ End Using
Return data
@@ -137,7 +167,7 @@ Public Class MPSync_process_DB
Public Function FormatValue(ByVal value As Object, ByVal type As String) As String
- 'MPSync_process.logStats("MPSync: [FormatValue]", "DEBUG")
+ 'MPSync_process.logStats("MPSync: [FormatValue]", MessageType.DEBUG)
Dim fmtvalue As String
@@ -160,9 +190,9 @@ Public Class MPSync_process_DB
End Function
- Private Function BuildUpdateArray_mpsync(ByVal w_values(,) As String, ByVal s_data As Array, ByVal mps_columns As Array, ByVal columns As Array) As Array
+ Private Function BuildUpdateArray_mpsync(ByVal w_values(,) As String, ByVal s_data As Array, ByVal mps_columns As List(Of ColumnInfo), ByVal columns As List(Of ColumnInfo)) As Array
- 'MPSync_process.logStats("MPSync: [BuildUpdateArray_mpsync]", "DEBUG")
+ 'MPSync_process.logStats("MPSync: [BuildUpdateArray_mpsync]", MessageType.DEBUG)
Dim x, z As Integer
Dim w_pk(), s_pk() As String
@@ -197,88 +227,49 @@ Public Class MPSync_process_DB
End Function
- Public Function BuildUpdateArray(ByVal s_data As Array, ByVal t_data As Array, ByVal columns As Array) As Array
-
- 'MPSync_process.logStats("MPSync: [BuildUpdateArray]", "DEBUG")
-
- Dim x As Integer = getPK(columns)
-
- If x = -1 Then Return Nothing
-
- Dim w_values(,) As String = Nothing
- Dim s_temp(), t_temp() As String
- Dim same As IEnumerable(Of String)
-
- If x <> -1 Then
- s_temp = getArray(s_data, 2)
- t_temp = getArray(t_data, 2)
- Else
- s_temp = getArray(s_data, 1)
- t_temp = getArray(t_data, 1)
- End If
-
- If s_temp(0) <> Nothing Then
-
- Dim y, z As Integer
+ Public Function getFields(ByVal path As String, ByVal database As String, ByVal table As String) As List(Of ColumnInfo)
- same = s_temp.Intersect(t_temp)
+ 'MPSync_process.logStats("MPSync: [getFields]", MessageType.DEBUG)
- ReDim w_values(UBound(s_data, 1), UBound(same.ToArray))
+ Dim columns As List(Of ColumnInfo) = New List(Of ColumnInfo)
- For x = 0 To UBound(same.ToArray)
- y = Array.IndexOf(s_temp, same.ToArray(x))
- For z = 0 To UBound(s_data, 1)
- w_values(z, x) = s_data(z, y)
- Next
- Next
-
- End If
-
- Return w_values
-
- End Function
-
- Public Function getFields(ByVal path As String, ByVal database As String, ByVal table As String) As Array
-
- 'MPSync_process.logStats("MPSync: [getFields]", "DEBUG")
-
- Dim SQLconnect As New SQLiteConnection()
- Dim SQLcommand As SQLiteCommand = SQLconnect.CreateCommand
- Dim SQLreader As SQLiteDataReader
- Dim columns(,) As String = Nothing
- Dim x As Integer = 0
+ Using SQLconnect As New SQLiteConnection(),
+ SQLcommand As SQLiteCommand = SQLconnect.CreateCommand
+ Dim x As Integer = 0
- Try
- SQLconnect.ConnectionString = "Data Source=" & MPSync_process.p_Database(path & database) & ";Read Only=True;"
- SQLconnect.Open()
- SQLcommand.CommandText = "PRAGMA table_info (" & table & ")"
- SQLreader = SQLcommand.ExecuteReader()
-
- While SQLreader.Read()
- ReDim Preserve columns(3, x)
- columns(0, x) = LCase(SQLreader(1))
- columns(1, x) = UCase(SQLreader(2))
- If Not IsDBNull(SQLreader(4)) Then columns(2, x) = SQLreader(4).ToString.Replace("'", "")
- columns(3, x) = SQLreader(5)
- x += 1
- End While
- Catch ex As Exception
- End Try
+ Try
+ SQLconnect.ConnectionString = "Data Source=" & MPSync_process.p_Database(path & database) & ";Read Only=True;"
+ SQLconnect.Open()
+ SQLcommand.CommandText = "PRAGMA table_info (" & table & ")"
+ Using SQLreader = SQLcommand.ExecuteReader()
+ While SQLreader.Read()
+ Dim t As ColumnInfo = New ColumnInfo
+ t.name = LCase(SQLreader.GetString(1))
+ t.type = UCase(SQLreader.GetString(2))
+ t.notNull = SQLreader.GetBoolean(3)
+ If Not IsDBNull(SQLreader(4)) Then t.dflt_value = SQLreader.GetString(4).Replace("'", "")
+ t.pk = SQLreader.GetBoolean(5)
+ columns.Add(t)
+ End While
+ End Using
+ Catch ex As Exception
+ MPSync_process.logStats("MPSync: Error getFields " & table & " in " & database & " with exception: " & ex.Message, MessageType.DEBUG)
+ End Try
- SQLconnect.Close()
+ End Using
Return columns
End Function
- Private Function getSelectFields(ByVal columns As Array) As String
+ Private Function getSelectFields(ByVal columns As List(Of ColumnInfo)) As String
- 'MPSync_process.logStats("MPSync: [getSelectFields]", "DEBUG")
+ 'MPSync_process.logStats("MPSync: [getSelectFields]", MessageType.DEBUG)
Dim fields As String = Nothing
- For x = 0 To UBound(columns, 2)
- fields &= columns(0, x) & ","
+ For x = 0 To columns.Count - 1
+ fields &= columns(x).name & ","
Next
Return Left(fields, Len(fields) - 1)
@@ -287,40 +278,40 @@ Public Class MPSync_process_DB
Private Function RecordCount(ByVal path As String, ByVal database As String, ByVal table As String, Optional ByVal where As String = Nothing) As Integer
- MPSync_process.logStats("MPSync: [RecordCount] Get number of records for table " & table & " in database " & path & database, "DEBUG")
+ MPSync_process.logStats("MPSync: [RecordCount] Get number of records for table " & table & " in database " & path & database, MessageType.DEBUG)
- Dim SQLconnect As New SQLiteConnection()
- Dim SQLcommand As SQLiteCommand = SQLconnect.CreateCommand
- Dim SQLreader As SQLiteDataReader
Dim x As Integer
+ Using SQLconnect As New SQLiteConnection(),
+ SQLcommand As SQLiteCommand = SQLconnect.CreateCommand
- Try
+ Try
- SQLconnect.ConnectionString = "Data Source=" & MPSync_process.p_Database(path & database) & ";Read Only=True;"
- SQLconnect.Open()
+ SQLconnect.ConnectionString = "Data Source=" & MPSync_process.p_Database(path & database) & ";Read Only=True;"
+ SQLconnect.Open()
- If where = Nothing Then
- SQLcommand.CommandText = "SELECT COUNT(*) FROM " & table
- Else
- SQLcommand.CommandText = "SELECT COUNT(*) FROM " & table & " WHERE " & where
- End If
+ If where = Nothing Then
+ SQLcommand.CommandText = "SELECT COUNT(*) FROM " & table
+ Else
+ SQLcommand.CommandText = "SELECT COUNT(*) FROM " & table & " WHERE " & where
+ End If
- SQLreader = SQLcommand.ExecuteReader()
- SQLreader.Read()
- x = Int(SQLreader(0))
- Catch ex As Exception
- x = 0
- End Try
+ Using SQLreader = SQLcommand.ExecuteReader()
+ SQLreader.Read()
+ x = SQLreader.GetInt32(0)
+ End Using
+ Catch ex As Exception
+ x = 0
+ End Try
- SQLconnect.Close()
+ End Using
Return x
End Function
- Public Function getPkValues(ByVal values As Array, ByVal mps_columns As Array, ByVal columns As Array) As Array
+ Public Function getPkValues(ByVal values As Array, ByVal mps_columns As List(Of ColumnInfo), ByVal columns As List(Of ColumnInfo)) As String()
- 'MPSync_process.logStats("MPSync: [getPkValues]", "DEBUG")
+ 'MPSync_process.logStats("MPSync: [getPkValues]", MessageType.DEBUG)
Dim x, y As Integer
Dim temp2() As String
@@ -330,9 +321,9 @@ Public Class MPSync_process_DB
If x = -1 Then Return Nothing
- Dim mps_cols As Array = getArray(mps_columns, 0)
+ Dim mps_cols As String() = mps_columns.Select(Function(m) m.name).ToArray
- x = Array.IndexOf(mps_cols, columns(0, x))
+ x = Array.IndexOf(mps_cols, columns(x).name)
Dim temp1 As Array = getArray(values, 1)
@@ -350,17 +341,17 @@ Public Class MPSync_process_DB
End Function
- Public Function getPK(ByVal columns As Array, Optional ByRef pkey As String = Nothing) As Integer
-
- 'MPSync_process.logStats("MPSync: [getPK]", "DEBUG")
+ Public Function getPK(ByVal columns As List(Of ColumnInfo), Optional ByRef pkey As String = Nothing) As Integer
- Dim x As Integer
- Dim pk As Array = getArray(columns, 3)
+ 'MPSync_process.logStats("MPSync: [getPK]", MessageType.DEBUG)
- x = Array.IndexOf(pk, "1")
+ Dim x As Integer = 0
+ While x < columns.Count And Not columns(x).pk
+ x += 1
+ End While
- If x <> -1 Then
- pkey = columns(0, x)
+ If x < columns.Count Then
+ pkey = columns(x).name
Return x
Else
pkey = Nothing
@@ -371,7 +362,7 @@ Public Class MPSync_process_DB
Public Function getLastUpdateDate(ByVal values As String, ByVal index As Integer) As String
- 'MPSync_process.logStats("MPSync: [getLastUpdateDate]", "DEBUG")
+ 'MPSync_process.logStats("MPSync: [getLastUpdateDate]", MessageType.DEBUG)
Dim a_values() As String = Split(values, dlm)
@@ -381,7 +372,7 @@ Public Class MPSync_process_DB
Public Function getArray(ByVal array As Array, ByVal dimension As Integer) As Array
- 'MPSync_process.logStats("MPSync: [getArray]", "DEBUG")
+ 'MPSync_process.logStats("MPSync: [getArray]", MessageType.DEBUG)
If array Is Nothing Then Return Nothing
@@ -400,47 +391,48 @@ Public Class MPSync_process_DB
End Function
- Public Function getCurrentTableValues(ByVal path As String, ByVal database As String, ByVal table As String, ByVal columns As Array, ByVal mps_cols As Array, ByVal pkey As String, ByVal fields As String, ByVal where As String) As Array
+ Public Function getCurrentTableValues(ByVal path As String, ByVal database As String, ByVal table As String, ByVal columns As List(Of ColumnInfo), ByVal mps_cols As Array, ByVal pkey As String, ByVal fields As String, ByVal where As String) As Array
- MPSync_process.logStats("MPSync: [getCurrentTableValues] Get current table values from " & table & " in database " & path & database, "DEBUG")
+ MPSync_process.logStats("MPSync: [getCurrentTableValues] Get current table values from " & table & " in database " & path & database, MessageType.DEBUG)
Dim records As Integer = RecordCount(path, database, table, where)
If records > 0 Then
- MPSync_process.logStats("MPSync: [getCurrentTableValues] Load current table values from " & table & " in database " & path & database, "DEBUG")
+ MPSync_process.logStats("MPSync: [getCurrentTableValues] Load current table values from " & table & " in database " & path & database, MessageType.DEBUG)
- Dim SQLconnect As New SQLiteConnection()
- Dim SQLcommand As SQLiteCommand = SQLconnect.CreateCommand
- Dim SQLreader As SQLiteDataReader
-
- SQLconnect.ConnectionString = "Data Source=" & MPSync_process.p_Database(path & database) & ";Read Only=True;"
- SQLconnect.Open()
- SQLcommand.CommandText = "SELECT " & fields & " FROM " & table & " WHERE " & where
- SQLreader = SQLcommand.ExecuteReader()
- SQLreader.Read()
-
- Dim i, x, z As Integer
Dim curvalues() As String
- curvalues = Nothing
+ Using SQLconnect As New SQLiteConnection(),
+ SQLcommand As SQLiteCommand = SQLconnect.CreateCommand
- For x = 0 To UBound(columns, 2)
- z = Array.IndexOf(mps_cols, columns(0, x))
- If z <> -1 Then
- If columns(0, x) <> pkey Then
- ReDim Preserve curvalues(i)
- If Not IsDBNull(SQLreader(i)) Then
- curvalues(i) = columns(0, x) & "=" & FormatValue(SQLreader(i), columns(1, x))
- Else
- curvalues(i) = columns(0, x) & "=" & FormatValue("NULL", columns(1, x))
+ SQLconnect.ConnectionString = "Data Source=" & MPSync_process.p_Database(path & database) & ";Read Only=True;"
+ SQLconnect.Open()
+ SQLcommand.CommandText = "SELECT " & fields & " FROM " & table & " WHERE " & where
+ Using SQLreader = SQLcommand.ExecuteReader()
+ SQLreader.Read()
+
+ Dim i, x, z As Integer
+
+ curvalues = Nothing
+
+ For x = 0 To columns.Count - 1
+ z = Array.IndexOf(mps_cols, columns(x).name)
+ If z <> -1 Then
+ If columns(x).name <> pkey Then
+ ReDim Preserve curvalues(i)
+ If Not IsDBNull(SQLreader(i)) Then
+ curvalues(i) = columns(x).name & "=" & FormatValue(SQLreader(i), columns(x).type)
+ Else
+ curvalues(i) = columns(x).name & "=" & FormatValue("NULL", columns(x).type)
+ End If
+ i += 1
+ End If
End If
- i += 1
- End If
- End If
- Next
+ Next
+ End Using
- SQLconnect.Close()
+ End Using
Return curvalues
@@ -450,9 +442,9 @@ Public Class MPSync_process_DB
End Function
- Public Function getUpdateValues(ByVal newvalues As Array, ByVal curvalues As Array) As String
+ Public Function getUpdateValues(ByVal newvalues As String(), ByVal curvalues As String()) As String
- 'MPSync_process.logStats("MPSync: [getUpdateValues] Getting update values by comparing existing values with new ones.", "DEBUG")
+ 'MPSync_process.logStats("MPSync: [getUpdateValues] Getting update values by comparing existing values with new ones.", MessageType.DEBUG)
Dim updvalues As String = Nothing
@@ -469,56 +461,59 @@ Public Class MPSync_process_DB
End Function
Public Shared Sub bw_db_worker(sender As System.Object, e As System.ComponentModel.DoWorkEventArgs)
+ Try
+ Dim mps_db As New MPSync_process_DB
- Dim mps_db As New MPSync_process_DB
+ Do
- Do
+ If Not MPSync_process.CheckPlayerplaying("db") Then
- If Not MPSync_process.CheckPlayerplaying("db") Then
+ MPSync_process.logStats("MPSync: [MPSync_process.WorkMethod][bw_db_worker] DB synchronization cycle starting.", MessageType.LOG)
- MPSync_process.logStats("MPSync: [MPSync_process.WorkMethod][bw_db_worker] DB synchronization cycle starting.", "LOG")
+ mps_db.bw_sync_db_jobs = 0
+ Array.Resize(mps_db.bw_sync_db, 0)
- mps_db.bw_sync_db_jobs = 0
- Array.Resize(mps_db.bw_sync_db, 0)
+ ' direction is client to server or both
+ If MPSync_process._db_direction <> 2 Then
+ mps_db.Process_DB_folder(MPSync_process._db_client, MPSync_process._db_server)
+ End If
- ' direction is client to server or both
- If MPSync_process._db_direction <> 2 Then
- mps_db.Process_DB_folder(MPSync_process._db_client, MPSync_process._db_server)
- End If
+ ' direction is server to client or both
+ If MPSync_process._db_direction <> 1 Then
+ mps_db.Process_DB_folder(MPSync_process._db_server, MPSync_process._db_client)
+ End If
- ' direction is server to client or both
- If MPSync_process._db_direction <> 1 Then
- mps_db.Process_DB_folder(MPSync_process._db_server, MPSync_process._db_client)
- End If
+ If Not MPSync_settings.syncnow Then
+ MPSync_process.logStats("MPSync: [MPSync_process.WorkMethod][bw_db_worker] DB synchronization cycle complete.", MessageType.LOG)
+ Else
+ MPSync_settings.db_complete = True
+ MPSync_process.logStats("MPSync: [MPSync_process.WorkMethod][bw_db_worker] DB synchronization complete.", MessageType.INFO)
+ Exit Do
+ End If
+
+ MPSync_process.wait(MPSync_process._db_sync, , "DB")
- If Not MPSync_settings.syncnow Then
- MPSync_process.logStats("MPSync: [MPSync_process.WorkMethod][bw_db_worker] DB synchronization cycle complete.", "LOG")
Else
- MPSync_settings.db_complete = True
- MPSync_process.logStats("MPSync: [MPSync_process.WorkMethod][bw_db_worker] DB synchronization complete.", "INFO")
- Exit Do
+ MPSync_process.wait(5, False)
End If
- MPSync_process.wait(MPSync_process._db_sync, , "DB")
-
- Else
- MPSync_process.wait(5, False)
- End If
+ Loop
- Loop
+ Catch ex As Exception
+ MPSync_process.logStats("MPSync: [MPSync_process.WorkMethod][bw_db_worker] Unexpected error " & ex.Message, MessageType.ERR)
+ End Try
End Sub
Private Sub Process_DB_folder(ByVal source As String, ByVal target As String)
If Not IO.Directory.Exists(source) Then
- MPSync_process.logStats("MPSync: [Process_DB_folder] folder " & source & " does not exist", "ERROR")
+ MPSync_process.logStats("MPSync: [Process_DB_folder] folder " & source & " does not exist", MessageType.ERR)
Exit Sub
End If
- MPSync_process.logStats("MPSync: [Process_DB_folder] synchronizing from " & source & " to " & target, "DEBUG")
+ MPSync_process.logStats("MPSync: [Process_DB_folder] synchronizing from " & source & " to " & target, MessageType.DEBUG)
- On Error Resume Next
Dim x As Integer
Dim s_lastwrite, t_lastwrite As Date
@@ -526,43 +521,48 @@ Public Class MPSync_process_DB
_bw_active_db_jobs = 0
lastsync = p_lastsync
- For Each database As String In IO.Directory.GetFiles(source, "*.db3")
-
- If Not MPSync_process.CheckPlayerplaying("db") Then
-
- If IO.Path.GetExtension(database) <> ".db3-journal" Then
+ Try
- Dim db As String = IO.Path.GetFileName(database)
+ For Each database As String In IO.Directory.GetFiles(source, "*.db3")
- If MPSync_process._databases.Contains(db) Or MPSync_process._databases.Contains("ALL") Then
+ If Not MPSync_process.CheckPlayerplaying("db") Then
- If MPSync_process.sync_type = "Triggers" Then
- ProcessTables(source, target, db)
- Else
+ If IO.Path.GetExtension(database) <> ".db3-journal" Then
- x = Array.IndexOf(MPSync_process.dbname, db)
+ Dim db As String = IO.Path.GetFileName(database)
- s_lastwrite = My.Computer.FileSystem.GetFileInfo(database).LastWriteTimeUtc
- t_lastwrite = My.Computer.FileSystem.GetFileInfo(target & db).LastWriteTimeUtc
+ If MPSync_process._databases.Contains(db) Or MPSync_process._databases.Contains("ALL") Then
- If MPSync_process.dbinfo(x).LastWriteTimeUtc < s_lastwrite Or MPSync_process.dbinfo(x).LastWriteTimeUtc <> t_lastwrite Then
+ If MPSync_process.sync_type = "Triggers" Then
ProcessTables(source, target, db)
Else
- MPSync_process.logStats("MPSync: [Process_DB_folder] no changes detected in " & database & ". Skipping synchronization.", "DEBUG")
+
+ x = Array.IndexOf(MPSync_process.dbname, db)
+
+ s_lastwrite = My.Computer.FileSystem.GetFileInfo(database).LastWriteTimeUtc
+ t_lastwrite = My.Computer.FileSystem.GetFileInfo(target & db).LastWriteTimeUtc
+
+ If MPSync_process.dbinfo(x).LastWriteTimeUtc < s_lastwrite Or MPSync_process.dbinfo(x).LastWriteTimeUtc <> t_lastwrite Then
+ ProcessTables(source, target, db)
+ Else
+ MPSync_process.logStats("MPSync: [Process_DB_folder] no changes detected in " & database & ". Skipping synchronization.", MessageType.DEBUG)
+ End If
+
End If
End If
End If
+ Else
+ MPSync_process.logStats("MPSync: [Process_DB_folder] synchronizing from " & source & " to " & target & " aborted as player playing.", MessageType.INFO)
+ Exit For
End If
- Else
- MPSync_process.logStats("MPSync: [Process_DB_folder] synchronizing from " & source & " to " & target & " aborted as player playing.", "INFO")
- Exit For
- End If
-
- Next
+ Next
+ Catch ex As Exception
+ MPSync_process.logStats("MPSync: [Process_DB_folder] Unexpected error " & ex.Message, MessageType.ERR)
+ End Try
If Not MPSync_process.CheckPlayerplaying("db") Then
p_lastsync = Now.ToLocalTime.ToString("yyyy-MM-dd HH:mm:ss")
@@ -576,121 +576,128 @@ Public Class MPSync_process_DB
If jobs = String.Empty Then Exit Do
If MPSync_process.CheckPlayerplaying("db") Then
_bw_active_db_jobs = 0
- MPSync_process.logStats("MPSync: [Process_DB_folder] aborted as player playing.", "INFO")
+ MPSync_process.logStats("MPSync: [Process_DB_folder] aborted as player playing.", MessageType.INFO)
Else
- If MPSync_process.p_Debug Then MPSync_process.logStats("MPSync: [Process_DB_folder] waiting for background threads to finish... " & _bw_active_db_jobs.ToString & " threads remaining processing {" & jobs & "}.", "DEBUG")
+ If MPSync_process.p_Debug Then MPSync_process.logStats("MPSync: [Process_DB_folder] waiting for background threads to finish... " & _bw_active_db_jobs.ToString & " threads remaining processing {" & jobs & "}.", MessageType.DEBUG)
MPSync_process.wait(10, False)
End If
Loop
End Sub
- Private Function checkbytrigger(ByVal source As String, ByVal target As String, ByVal database As String) As String
+ Private Function checkbytrigger(ByVal source As String, ByVal target As String, ByVal database As String) As List(Of TableInfo)
- Dim parm As String = String.Empty
- Dim x As Integer = 0
-
- Dim SQLconnect As New SQLite.SQLiteConnection()
- Dim SQLcommand As SQLiteCommand = SQLconnect.CreateCommand
- Dim SQLreader As SQLiteDataReader = Nothing
+ Dim parm As List(Of TableInfo) = New List(Of TableInfo)
- MPSync_process.logStats("MPSync: [checkbytrigger] checking for tables in database " & source & database & " that need synchronization...", "DEBUG")
+ Using SQLconnect As New SQLiteConnection(),
+ SQLcommand As SQLiteCommand = SQLconnect.CreateCommand
- SQLconnect.ConnectionString = "Data Source=" & MPSync_process.p_Database(source & database) & ";Read Only=True;"
- SQLconnect.Open()
+ MPSync_process.logStats("MPSync: [checkbytrigger] checking for tables in database " & source & database & " that need synchronization...", MessageType.DEBUG)
- Try
-
- SQLcommand.CommandText = "SELECT tablename FROM mpsync_trigger WHERE lastupdated > '" & lastsync & "' ORDER BY lastupdated, tablename"
- SQLreader = SQLcommand.ExecuteReader()
-
- While SQLreader.Read()
+ SQLconnect.ConnectionString = "Data Source=" & MPSync_process.p_Database(source & database) & ";Read Only=True;"
+ SQLconnect.Open()
- parm += source & "|" & target & "|" & database & "|" & SQLreader(0) & "¬"
- x += 1
+ Try
+ Dim skipWatched As String = ""
+ If Not MPSync_process.check_watched Then
+ skipWatched = " AND NOT tablename like '%watched_history%'"
+ End If
+ SQLcommand.CommandText = "SELECT tablename FROM mpsync_trigger WHERE lastupdated > '" & lastsync & "'" & skipWatched & " ORDER BY lastupdated, tablename"
+ Using SQLreader = SQLcommand.ExecuteReader()
- End While
+ While SQLreader.Read()
+ parm.Add(New TableInfo(source, target, database, SQLreader.GetString(0)))
- Catch ex As Exception
- MPSync_process.logStats("MPSync: [checkbytrigger] Error reading mpsync_trigger from " & target & database & " with exception: " & ex.Message, "ERROR")
- End Try
+ End While
+ End Using
- SQLreader.Close()
+ Catch ex As Exception
+ MPSync_process.logStats("MPSync: [checkbytrigger] Error reading mpsync_trigger from " & target & database & " with exception: " & ex.Message, MessageType.ERR)
+ End Try
+ End Using
If MPSync_process.TableExist(target, database, "mpsync") Then
- SQLconnect.Close()
+ Using SQLconnect As New SQLiteConnection(),
+ SQLcommand As SQLiteCommand = SQLconnect.CreateCommand
- MPSync_process.logStats("MPSync: [checkbytrigger] checking for records in mpsync table in database " & target & database, "DEBUG")
+ MPSync_process.logStats("MPSync: [checkbytrigger] checking for records in mpsync table in database " & target & database, MessageType.DEBUG)
- Try
+ Dim skipWatched As String = ""
+ If Not MPSync_process.check_watched Then
+ skipWatched = "WHERE NOT tablename like '%watched_history%'"
+ End If
SQLconnect.ConnectionString = "Data Source=" & MPSync_process.p_Database(target & database) & ";Read Only=True;"
SQLconnect.Open()
- SQLcommand = SQLconnect.CreateCommand
- SQLcommand.CommandText = "SELECT tablename FROM mpsync ORDER BY mps_lastupdated, tablename"
- SQLreader = SQLcommand.ExecuteReader()
+ SQLcommand.CommandText = "SELECT tablename FROM mpsync " & skipWatched & " ORDER BY mps_lastupdated, tablename"
+ Using SQLreader = SQLcommand.ExecuteReader()
+ Try
- While SQLreader.Read()
+ While SQLreader.Read()
- If Not parm.Contains(SQLreader(0)) Then
- parm += source & "|" & target & "|" & database & "|" & SQLreader(0) & "¬"
- x += 1
- End If
+ If Not parm.Any(Function(p) p.name = SQLreader.GetString(0)) Then
+ parm.Add(New TableInfo(source, target, database, SQLreader.GetString(0)))
+ End If
- End While
+ End While
- Catch ex As Exception
- MPSync_process.logStats("MPSync: [checkbytrigger] Error reading mpsync from " & target & database & " with exception: " & ex.Message, "ERROR")
- End Try
+ Catch ex As Exception
+ MPSync_process.logStats("MPSync: [checkbytrigger] Error reading mpsync from " & target & database & " with exception: " & ex.Message, MessageType.ERR)
+ End Try
+ End Using
+ End Using
End If
- SQLconnect.Close()
- MPSync_process.logStats("MPSync: [checkbytrigger] " & x.ToString & " tables in database " & source & database & " need synchronization.", "DEBUG")
+ MPSync_process.logStats("MPSync: [checkbytrigger] " & parm.Count.ToString & " tables in database " & source & database & " need synchronization.", MessageType.DEBUG)
Return parm
End Function
- Private Function getDatabaseRecords(ByVal source As String, ByVal target As String, ByVal database As String, ByVal parm As String) As String
+ Private Function getDatabaseRecords(ByVal source As String, ByVal target As String, ByVal database As String, ByVal parm As List(Of TableInfo)) As List(Of TableInfo)
- Dim finalparm As String = parm
+ Dim finalparm As List(Of TableInfo) = parm
- If MPSync_process.p_Debug Then MPSync_process.logStats("MPSync: [getDatabaseRecords] database " & database & " tables record count started.", "DEBUG")
+ If MPSync_process.p_Debug Then MPSync_process.logStats("MPSync: [getDatabaseRecords] database " & database & " tables record count started.", MessageType.DEBUG)
- Dim SQLconnect As New SQLite.SQLiteConnection()
- Dim SQLcommand1 As SQLiteCommand = SQLconnect.CreateCommand
- Dim SQLcommand2 As SQLiteCommand = SQLconnect.CreateCommand
- Dim SQLreader1, SQLreader2 As SQLiteDataReader
+ Using SQLconnect As New SQLiteConnection(),
+ SQLcommand1 As SQLiteCommand = SQLconnect.CreateCommand,
+ SQLcommand2 As SQLiteCommand = SQLconnect.CreateCommand
- SQLconnect.ConnectionString = "Data Source=" & MPSync_process.p_Database(source & database) & ";Read Only=True;"
- SQLconnect.Open()
-
- SQLcommand1.CommandText = "ATTACH DATABASE '" & MPSync_process.p_Database(target & database) & "' AS target"
- SQLcommand1.ExecuteNonQuery()
+ SQLconnect.ConnectionString = "Data Source=" & MPSync_process.p_Database(source & database) & ";Read Only=True;"
+ SQLconnect.Open()
- SQLcommand1.CommandText = "SELECT name FROM sqlite_master WHERE type='table' AND name NOT LIKE 'mpsync%' AND name NOT LIKE 'sqlite%'"
- SQLreader1 = SQLcommand1.ExecuteReader()
+ SQLcommand1.CommandText = "ATTACH DATABASE '" & MPSync_process.p_Database(target & database) & "' AS target"
+ SQLcommand1.ExecuteNonQuery()
- While SQLreader1.Read()
+ SQLcommand1.CommandText = "SELECT name FROM sqlite_master WHERE type='table' AND name NOT LIKE 'mpsync%' AND name NOT LIKE 'sqlite%'"
+ If Not MPSync_process.check_watched Then
+ SQLcommand1.CommandText = SQLcommand1.CommandText & "AND NOT name like '%watched_history%'"
+ End If
+ Using SQLreader1 = SQLcommand1.ExecuteReader()
- SQLcommand2.CommandText = "SELECT CASE WHEN (SELECT COUNT(*) FROM " & SQLreader1(0) & " EXCEPT SELECT COUNT(*) FROM target." & SQLreader1(0) & ") IS NULL THEN 0 ELSE 1 END"
- SQLreader2 = SQLcommand2.ExecuteReader()
- SQLreader2.Read()
+ While SQLreader1.Read()
- If Int(SQLreader2(0)) = 1 Then
- If Not finalparm.Contains(SQLreader1(0)) Then finalparm += source & "|" & target & "|" & database & "|" & SQLreader1(0) & "¬"
- End If
+ SQLcommand2.CommandText = "SELECT CASE WHEN (SELECT COUNT(*) FROM " & SQLreader1.GetString(0) & " EXCEPT SELECT COUNT(*) FROM target." & SQLreader1.GetString(0) & ") IS NULL THEN 0 ELSE 1 END"
+ Using SQLreader2 = SQLcommand2.ExecuteReader()
+ SQLreader2.Read()
- SQLreader2.Close()
+ If Int(SQLreader2(0)) = 1 Then
+ If Not finalparm.Any(Function(f) f.name = SQLreader1.GetString(0)) Then
+ finalparm.Add(New TableInfo(source, target, database, SQLreader1.GetString(0)))
+ End If
+ End If
- End While
+ End Using
- SQLconnect.Close()
+ End While
+ End Using
+ End Using
- If MPSync_process.p_Debug Then MPSync_process.logStats("MPSync: [getDatabaseRecords] database " & database & " tables record count complete.", "DEBUG")
+ If MPSync_process.p_Debug Then MPSync_process.logStats("MPSync: [getDatabaseRecords] database " & database & " tables record count complete.", MessageType.DEBUG)
Return finalparm
@@ -698,53 +705,54 @@ Public Class MPSync_process_DB
Private Sub ProcessTables(ByVal source As String, ByVal target As String, ByVal database As String)
- MPSync_process.logStats("MPSync: [ProcessTables] process for database " & source & database & " started.", "DEBUG")
+ MPSync_process.logStats("MPSync: [ProcessTables] process for database " & source & database & " started.", MessageType.DEBUG)
' execute only once in a day
If DateDiff(DateInterval.Day, CDate(lastsync), Now) > 0 Then CheckTables(source, target, database)
- Dim parm As String = String.Empty
+ Dim parm As SyncDbParams = New SyncDbParams
+
If MPSync_process.TableExist(source, database, "mpsync_trigger") Then
- parm = getDatabaseRecords(source, target, database, checkbytrigger(source, target, database))
+ parm.tables = getDatabaseRecords(source, target, database, checkbytrigger(source, target, database))
Else
- Dim omit As Array = {"mpsync", "mpsync_trigger", "sqlite_sequence", "sqlite_stat1", "sqlite_stat2"}
-
- Dim SQLconnect As New SQLite.SQLiteConnection()
- Dim SQLcommand As SQLiteCommand = SQLconnect.CreateCommand
- Dim SQLreader As SQLiteDataReader
+ Dim omit As List(Of String) = New List(Of String)({"mpsync", "mpsync_trigger", "sqlite_sequence", "sqlite_stat1", "sqlite_stat2"})
+ If Not MPSync_process.check_watched Then
+ omit.Add("watched_history")
+ End If
+ Using SQLconnect As New SQLiteConnection(),
+ SQLcommand As SQLiteCommand = SQLconnect.CreateCommand
- SQLconnect.ConnectionString = "Data Source=" & MPSync_process.p_Database(source & database) & ";Read Only=True;"
- SQLconnect.Open()
+ SQLconnect.ConnectionString = "Data Source=" & MPSync_process.p_Database(source & database) & ";Read Only=True;"
+ SQLconnect.Open()
- MPSync_process.logStats("MPSync: [ProcessTables] selecting tables from database " & source & database, "DEBUG")
+ MPSync_process.logStats("MPSync: [ProcessTables] selecting tables from database " & source & database, MessageType.DEBUG)
- Dim x As Integer = 0
- SQLcommand.CommandText = "SELECT name FROM sqlite_master WHERE type='table' ORDER BY name"
- SQLreader = SQLcommand.ExecuteReader()
+ SQLcommand.CommandText = "SELECT name FROM sqlite_master WHERE type='table' ORDER BY name"
+ Using SQLreader = SQLcommand.ExecuteReader()
- While SQLreader.Read()
+ While SQLreader.Read()
- If Array.IndexOf(omit, SQLreader(0)) = -1 Then
- parm += source & "|" & target & "|" & database & "|" & SQLreader(0) & "¬"
- x += 1
- End If
+ If Not omit.Contains(SQLreader.GetString(0)) Then
+ parm.tables.Add(New TableInfo(source, target, database, SQLreader.GetString(0)))
+ End If
- End While
+ End While
+ End Using
- SQLconnect.Close()
+ End Using
- MPSync_process.logStats("MPSync: [ProcessTables] " & x.ToString & " table selected from database " & source & database, "DEBUG")
+ MPSync_process.logStats("MPSync: [ProcessTables] " & parm.tables.Count.ToString & " table selected from database " & source & database, MessageType.DEBUG)
End If
- If parm <> String.Empty Then
+ If parm.tables.Count > 0 Then
' check if there are available threads to submit current stream, unless there is no limit.
If MPSync_process.checkThreads("DB") <> -1 Then
Do While _bw_active_db_jobs >= MPSync_process.checkThreads("DB")
- MPSync_process.logStats("MPSync: [ProcessTables] waiting for available threads.", "DEBUG")
+ MPSync_process.logStats("MPSync: [ProcessTables] waiting for available threads.", MessageType.DEBUG)
MPSync_process.wait(10, False)
Loop
@@ -762,7 +770,7 @@ Public Class MPSync_process_DB
bw_dbs.Add(database)
End If
- MPSync_process.logStats("MPSync: [ProcessTables] process for database " & source & database & " complete.", "DEBUG")
+ MPSync_process.logStats("MPSync: [ProcessTables] process for database " & source & database & " complete.", MessageType.DEBUG)
End Sub
@@ -781,13 +789,13 @@ Public Class MPSync_process_DB
If s_lastwrite > t_lastwrite Then
Try
- MPSync_process.logStats("MPSync: [ProcessObject] Copying object " & objects & " to " & target & obj, "LOG")
+ MPSync_process.logStats("MPSync: [ProcessObject] Copying object " & objects & " to " & target & obj, MessageType.LOG)
IO.File.Copy(objects, target & obj, True)
Catch ex As Exception
- MPSync_process.logStats("MPSync: [ProcessObject] Error copying " & objects & " with exception: " & ex.Message, "ERROR")
+ MPSync_process.logStats("MPSync: [ProcessObject] Error copying " & objects & " with exception: " & ex.Message, MessageType.ERR)
End Try
Else
- MPSync_process.logStats("MPSync: [ProcessObject] No changes detected in " & objects & ". Skipping copy.", "DEBUG")
+ MPSync_process.logStats("MPSync: [ProcessObject] No changes detected in " & objects & ". Skipping copy.", MessageType.DEBUG)
End If
End If
@@ -798,157 +806,141 @@ Public Class MPSync_process_DB
Private Sub CheckTables(ByVal source As String, ByVal target As String, ByVal database As String)
- MPSync_process.logStats("MPSync: [CheckTables] Check tables structures in database " & database & " started.", "DEBUG")
-
- Dim SQLconnect As New SQLite.SQLiteConnection()
- Dim SQLcommand As SQLiteCommand = SQLconnect.CreateCommand
- Dim SQLreader As SQLiteDataReader
- Dim s_columns, t_columns As Array
- Dim s_temp(), t_temp() As String
- Dim missing(,) As String = Nothing
- Dim diff As IEnumerable(Of String)
-
- SQLconnect.ConnectionString = "Data Source=" & MPSync_process.p_Database(source & database) & ";Read Only=True;"
- SQLconnect.Open()
- SQLcommand.CommandText = "SELECT name, sql FROM sqlite_master WHERE type=""table"""
- SQLreader = SQLcommand.ExecuteReader()
-
- While SQLreader.Read()
+ MPSync_process.logStats("MPSync: [CheckTables] Check tables structures in database " & database & " started.", MessageType.DEBUG)
- s_columns = getFields(source, database, SQLreader(0))
- t_columns = getFields(target, database, SQLreader(0))
+ Using SQLconnect As New SQLiteConnection(),
+ SQLcommand As SQLiteCommand = SQLconnect.CreateCommand
+ Dim s_columns, t_columns As List(Of ColumnInfo)
- If t_columns Is Nothing Then
- CreateTable(target, database, SQLreader(1))
- t_columns = s_columns
- End If
-
- s_temp = getArray(s_columns, 0)
- t_temp = getArray(t_columns, 0)
-
- diff = s_temp.Except(t_temp)
+ SQLconnect.ConnectionString = "Data Source=" & MPSync_process.p_Database(source & database) & ";Read Only=True;"
+ SQLconnect.Open()
+ SQLcommand.CommandText = "SELECT name, sql FROM sqlite_master WHERE type=""table"""
+ Using SQLreader = SQLcommand.ExecuteReader()
- If diff.OfType(Of String)().ToArray().Length > 0 Then
+ While SQLreader.Read()
- For x As Integer = 0 To UBound(diff.ToArray)
- ReDim Preserve missing(UBound(s_columns, 1), x)
- For y As Integer = 0 To UBound(s_columns, 1)
- missing(y, x) = s_columns(y, Array.IndexOf(s_temp, diff.ToArray(x)))
- Next
- Next
+ s_columns = getFields(source, database, SQLreader.GetString(0))
+ t_columns = getFields(target, database, SQLreader.GetString(0))
- AddTableMissingFields(target, database, SQLreader(0), missing)
+ If t_columns Is Nothing Then
+ CreateTable(target, database, SQLreader.GetString(1))
+ t_columns = s_columns
+ End If
+ Dim diff As IEnumerable(Of ColumnInfo) = s_columns.Where(Function(s) Not t_columns.Any(Function(t) t.name = s.name))
- End If
+ If diff.Count > 0 Then
+ AddTableMissingFields(target, database, SQLreader.GetString(0), diff)
+ End If
- End While
+ End While
+ End Using
- SQLconnect.Close()
+ End Using
- MPSync_process.logStats("MPSync: [CheckTables] Check tables structures in database " & database & " complete.", "DEBUG")
+ MPSync_process.logStats("MPSync: [CheckTables] Check tables structures in database " & database & " complete.", MessageType.DEBUG)
End Sub
Private Sub CreateTable(ByVal path As String, ByVal database As String, ByVal sql As String)
- Dim SQLconnect As New SQLite.SQLiteConnection()
- Dim SQLcommand As SQLiteCommand = SQLconnect.CreateCommand
+ Using SQLconnect As New SQLiteConnection(),
+ SQLcommand As SQLiteCommand = SQLconnect.CreateCommand
- MPSync_process.logStats("MPSync: [Createtable] " & sql & " in database " & path & database, "DEBUG")
+ MPSync_process.logStats("MPSync: [Createtable] " & sql & " in database " & path & database, MessageType.DEBUG)
- Try
- SQLconnect.ConnectionString = "Data Source=" & MPSync_process.p_Database(path & database)
- SQLconnect.Open()
- SQLcommand.CommandText = sql
- SQLcommand.ExecuteNonQuery()
- Catch ex As Exception
- MPSync_process.logStats("MPSync: [Createtable] " & sql & " error with exception: " & ex.Message, "ERROR")
- End Try
+ Try
+ SQLconnect.ConnectionString = "Data Source=" & MPSync_process.p_Database(path & database)
+ SQLconnect.Open()
+ SQLcommand.CommandText = sql
+ SQLcommand.ExecuteNonQuery()
+ Catch ex As Exception
+ MPSync_process.logStats("MPSync: [Createtable] " & sql & " error with exception: " & ex.Message, MessageType.ERR)
+ End Try
- SQLconnect.Close()
+ End Using
End Sub
- Private Sub AddTableMissingFields(ByVal path As String, ByVal database As String, ByVal table As String, ByVal missing As Array)
+ Private Sub AddTableMissingFields(ByVal path As String, ByVal database As String, ByVal table As String, ByVal missing As IEnumerable(Of ColumnInfo))
Dim SQL As String
- Dim SQLconnect As New SQLite.SQLiteConnection()
- Dim SQLcommand As SQLiteCommand = SQLconnect.CreateCommand
+ Using SQLconnect As New SQLiteConnection(),
+ SQLcommand As SQLiteCommand = SQLconnect.CreateCommand
- MPSync_process.logStats("MPSync: [AddTableMissingFields] Adding missing columns on target for table " & table & " in database " & database, "LOG")
+ MPSync_process.logStats("MPSync: [AddTableMissingFields] Adding missing columns on target for table " & table & " in database " & database, MessageType.LOG)
- SQLconnect.ConnectionString = "Data Source=" & MPSync_process.p_Database(path & database)
- SQLconnect.Open()
+ SQLconnect.ConnectionString = "Data Source=" & MPSync_process.p_Database(path & database)
+ SQLconnect.Open()
- For x As Integer = 0 To UBound(missing, 2)
+ For x As Integer = 0 To missing.Count - 1
- SQL = "ALTER TABLE " & table & " ADD COLUMN " & missing(0, x) & " " & missing(1, x) & " "
+ SQL = "ALTER TABLE " & table & " ADD COLUMN " & missing(x).name & " " & missing(x).type & " "
- If missing(2, x) = "1" Then SQL &= "NOT NULL "
+ If missing(x).notNull Then SQL &= "NOT NULL "
- Try
- MPSync_process.logStats("MPSync: [AddTableMissingFields] " & SQL, "DEBUG")
- SQLcommand.CommandText = SQL
- SQLcommand.ExecuteNonQuery()
- Catch ex As Exception
- MPSync_process.logStats("MPSync: [AddTableMissingFields] " & SQL & " error with exception: " & ex.Message, "DEBUG")
- MPSync_process.logStats("MPSync: [AddTableMissingFields] Error adding field " & missing(0, x) & " to table " & table & " in " & path & database, "ERROR")
- End Try
+ Try
+ MPSync_process.logStats("MPSync: [AddTableMissingFields] " & SQL, MessageType.DEBUG)
+ SQLcommand.CommandText = SQL
+ SQLcommand.ExecuteNonQuery()
+ Catch ex As Exception
+ MPSync_process.logStats("MPSync: [AddTableMissingFields] " & SQL & " error with exception: " & ex.Message, MessageType.DEBUG)
+ MPSync_process.logStats("MPSync: [AddTableMissingFields] Error adding field " & missing(x).name & " to table " & table & " in " & path & database, MessageType.ERR)
+ End Try
- Next
+ Next
- SQLconnect.Close()
+ End Using
End Sub
Private Sub bw_sync_db_worker(sender As System.Object, e As System.ComponentModel.DoWorkEventArgs)
- Dim parm() As String = Split(e.Argument, "¬")
- Dim args() As String = Split(parm(0), "|")
+ Try
- MPSync_process.logStats("MPSync: [ProcessTables][bw_sync_db_worker] background synchronization of " & args(2) & " database started.", "LOG")
+ If e.Argument.GetType() Is GetType(SyncDbParams) Then
+ Dim parm As SyncDbParams = CType(e.Argument, SyncDbParams)
- Dim x As Integer
+ MPSync_process.logStats("MPSync: [ProcessTables][bw_sync_db_worker] background synchronization of " & parm.tables(0).database & " database started.", MessageType.LOG)
- For x = 0 To parm.Count - 1
+ Dim x As Integer
- If parm(x) <> "" Then
+ For x = 0 To parm.tables.Count - 1
+ db_worker(parm.tables(x).source, parm.tables(x).target, parm.tables(x).database, parm.tables(x).name)
+ Next
- args = Split(parm(x), "|")
+ If MPSync_process.sync_type = "Timestamp" Then
- db_worker(args(0), args(1), args(2), args(3))
+ Dim s_lastwrite As Date = My.Computer.FileSystem.GetFileInfo(parm.tables(0).source & parm.tables(0).database).LastWriteTimeUtc
+ Dim t_lastwrite As Date = My.Computer.FileSystem.GetFileInfo(parm.tables(0).target & parm.tables(0).database).LastWriteTimeUtc
- End If
+ x = Array.IndexOf(MPSync_process.dbname, parm.tables(0).database)
- Next
-
- If MPSync_process.sync_type = "Timestamp" Then
+ If s_lastwrite > t_lastwrite Then
+ MPSync_process.dbinfo(x).LastWriteTimeUtc = s_lastwrite
+ ElseIf s_lastwrite < t_lastwrite Then
+ MPSync_process.dbinfo(x).LastWriteTimeUtc = t_lastwrite
+ End If
- Dim s_lastwrite As Date = My.Computer.FileSystem.GetFileInfo(args(0) & args(2)).LastWriteTimeUtc
- Dim t_lastwrite As Date = My.Computer.FileSystem.GetFileInfo(args(1) & args(2)).LastWriteTimeUtc
+ End If
- x = Array.IndexOf(MPSync_process.dbname, args(2))
+ _bw_active_db_jobs -= 1
+ bw_dbs.RemoveAt(bw_dbs.IndexOf(parm.tables(0).database))
- If s_lastwrite > t_lastwrite Then
- MPSync_process.dbinfo(x).LastWriteTimeUtc = s_lastwrite
- ElseIf s_lastwrite < t_lastwrite Then
- MPSync_process.dbinfo(x).LastWriteTimeUtc = t_lastwrite
+ MPSync_process.logStats("MPSync: [ProcessTables][bw_sync_db_worker] background synchronization of " & parm.tables(0).database & " database completed.", MessageType.LOG)
End If
- End If
-
- _bw_active_db_jobs -= 1
- bw_dbs.RemoveAt(bw_dbs.IndexOf(args(2)))
- MPSync_process.logStats("MPSync: [ProcessTables][bw_sync_db_worker] background synchronization of " & args(2) & " database completed.", "LOG")
+ Catch ex As Exception
+ MPSync_process.logStats("MPSync: [ProcessTables][bw_sync_db_worker] Unexpected error " & ex.Message, MessageType.ERR)
+ End Try
End Sub
Private Sub db_worker(ByVal s_path As String, ByVal t_path As String, ByVal database As String, ByVal table As String)
- Dim columns(,) As String = Nothing
+ Dim columns As List(Of ColumnInfo) = Nothing
- MPSync_process.logStats("MPSync: [db_worker] synchronization of table " & table & " in database " & t_path & database & " started.", "LOG")
+ MPSync_process.logStats("MPSync: [db_worker] synchronization of table " & table & " in database " & t_path & database & " started.", MessageType.LOG)
If MPSync_process.check_watched Then
' check if master client
@@ -962,16 +954,16 @@ Public Class MPSync_process_DB
columns = getFields(s_path, database, table)
If Synchronize_DB(s_path, t_path, database, table, columns, MPSync_process._db_sync_method) Then
- MPSync_process.logStats("MPSync: [db_worker] synchronization of table " & table & " in database " & t_path & database & " complete.", "LOG")
+ MPSync_process.logStats("MPSync: [db_worker] synchronization of table " & table & " in database " & t_path & database & " complete.", MessageType.LOG)
Else
- MPSync_process.logStats("MPSync: [db_worker] synchronization of table " & table & " in database " & t_path & database & " failed.", "LOG")
+ MPSync_process.logStats("MPSync: [db_worker] synchronization of table " & table & " in database " & t_path & database & " failed.", MessageType.LOG)
End If
End Sub
- Public Function Synchronize_DB(ByVal s_path As String, ByVal t_path As String, ByVal database As String, ByVal table As String, ByVal columns As Array, ByVal method As Integer) As Boolean
+ Public Function Synchronize_DB(ByVal s_path As String, ByVal t_path As String, ByVal database As String, ByVal table As String, ByVal columns As List(Of ColumnInfo), ByVal method As Integer) As Boolean
- MPSync_process.logStats("MPSync: [Synchronize_DB] synchronization of table " & table.Replace("~", String.Empty) & " in database " & t_path & database & " in progress...", "LOG")
+ MPSync_process.logStats("MPSync: [Synchronize_DB] synchronization of table " & table.Replace("~", String.Empty) & " in database " & t_path & database & " in progress...", MessageType.LOG)
If DeleteRecords(s_path, t_path, database, table, columns, method) Then Return InsertRecords(s_path, t_path, database, table, columns, method)
@@ -988,13 +980,13 @@ Public Class MPSync_process_DB
If x <> -1 Then
If Array.IndexOf(mps.getTables(database), table) <> -1 Then
- MPSync_process.logStats("MPSync: [UpdateSlave] synchronization of mpsync for table " & table & " in database " & source & database & " in progress...", "LOG")
+ MPSync_process.logStats("MPSync: [UpdateSlave] synchronization of mpsync for table " & table & " in database " & source & database & " in progress...", MessageType.LOG)
- Dim columns As Array = getFields(source, database, "mpsync")
+ Dim columns As List(Of ColumnInfo) = getFields(source, database, "mpsync")
If Synchronize_DB(source, target, database, "~mpsync~", columns, 1) Then UpdateMaster(source, target, database, table)
- MPSync_process.logStats("MPSync: [UpdateSlave] synchronization of mpsync for table " & table & " in database " & source & database & " complete.", "LOG")
+ MPSync_process.logStats("MPSync: [UpdateSlave] synchronization of mpsync for table " & table & " in database " & source & database & " complete.", MessageType.LOG)
End If
End If
@@ -1010,16 +1002,17 @@ Public Class MPSync_process_DB
If x <> -1 Then
If Array.IndexOf(mps.getTables(database), table) <> -1 Then
- MPSync_process.logStats("MPSync: [UpdateMaster] synchronization of watched for table " & table & " in database " & source & database & " in progress...", "LOG")
+ MPSync_process.logStats("MPSync: [UpdateMaster] synchronization of watched for table " & table & " in database " & source & database & " in progress...", MessageType.LOG)
- Dim mps_columns As Array = Nothing
- Dim columns, s_data, t_data, w_values As Array
+ Dim mps_columns As List(Of ColumnInfo) = Nothing
+ Dim columns As List(Of ColumnInfo)
+ Dim s_data, t_data, w_values As Array
s_data = LoadTable(source, database, "mpsync", mps_columns, "tablename = '" & table & "'", "mps_lastupdated")
t_data = LoadTable(target, database, "mpsync", mps_columns, "tablename = '" & table & "'", "mps_lastupdated")
If s_data Is Nothing And t_data Is Nothing Then
- MPSync_process.logStats("MPSync: [UpdateMaster] synchronization of watched for table " & table & " in database " & source & database & " nothing to update.", "LOG")
+ MPSync_process.logStats("MPSync: [UpdateMaster] synchronization of watched for table " & table & " in database " & source & database & " nothing to update.", MessageType.LOG)
Exit Sub
End If
@@ -1034,87 +1027,96 @@ Public Class MPSync_process_DB
Cleanup_mpsync(source, database, s_data)
End If
- MPSync_process.logStats("MPSync: [UpdateMaster] synchronization of watched for table " & table & " in database " & source & database & " complete.", "LOG")
+ MPSync_process.logStats("MPSync: [UpdateMaster] synchronization of watched for table " & table & " in database " & source & database & " complete.", MessageType.LOG)
End If
End If
End Sub
- Private Sub UpdateRecords_mpsync(ByVal path As String, ByVal database As String, ByVal table As String, ByVal w_values As Array, ByVal table_columns As Array, ByVal columns As Array)
+ Private Sub UpdateRecords_mpsync(ByVal path As String, ByVal database As String, ByVal table As String, ByVal w_values As Array, ByVal table_columns As List(Of ColumnInfo), ByVal columns As List(Of ColumnInfo))
If w_values.OfType(Of String)().ToArray().Length = 0 Then Exit Sub
Dim i, x, z As Integer
Dim pkey As String = Nothing
- Dim updcols As Array = getArray(table_columns, 0)
+ Dim updcols As Array = table_columns.Select(Function(t) t.name).ToArray
Dim fields, updvalues, where, update(), a_values() As String
- Dim SQLconnect As New SQLiteConnection()
- Dim SQLcommand As SQLiteCommand = SQLconnect.CreateCommand
+ Using SQLconnect As New SQLiteConnection(),
+ SQLcommand As SQLiteCommand = SQLconnect.CreateCommand
- x = getPK(columns, pkey)
+ x = getPK(columns, pkey)
- SQLconnect.ConnectionString = "Data Source=" & MPSync_process.p_Database(path & database)
- SQLconnect.Open()
- SQLcommand.CommandText = "PRAGMA temp_store=2;PRAGMA journal_mode=off;PRAGMA synchronous=off;"
- SQLcommand.ExecuteNonQuery()
+ SQLconnect.ConnectionString = "Data Source=" & MPSync_process.p_Database(path & database)
+ SQLconnect.Open()
+ SQLcommand.CommandText = "PRAGMA temp_store=2;PRAGMA journal_mode=off;PRAGMA synchronous=off;"
+ SQLcommand.ExecuteNonQuery()
- For y As Integer = 0 To UBound(w_values, 2)
+ For y As Integer = 0 To UBound(w_values, 2)
- i = 0
- fields = Nothing
- update = Nothing
- where = Nothing
- a_values = Split(w_values(1, y), dlm)
+ i = 0
+ fields = Nothing
+ update = Nothing
+ where = Nothing
+ a_values = Split(w_values(1, y), dlm)
- For x = 0 To UBound(columns, 2)
- z = Array.IndexOf(updcols, columns(0, x))
- If z <> -1 Then
- If columns(0, x) <> pkey Then
- ReDim Preserve update(i)
- update(i) = columns(0, x) & "=" & FormatValue(a_values(z), columns(1, x))
- fields &= columns(0, x) & ","
- i += 1
- Else
- where = pkey & " = " & FormatValue(a_values(z), columns(1, x))
+ For x = 0 To columns.Count - 1
+ z = Array.IndexOf(updcols, columns(x).name)
+ If z <> -1 Then
+ If columns(x).name <> pkey Then
+ ReDim Preserve update(i)
+ update(i) = columns(x).name & "=" & FormatValue(a_values(z), columns(x).type)
+ fields &= columns(x).name & ","
+ i += 1
+ Else
+ where = pkey & " = " & FormatValue(a_values(z), columns(x).type)
+ End If
End If
- End If
- Next
+ Next
- fields = Left(fields, Len(fields) - 1)
- where = Left(where, Len(where) - 1)
+ fields = Left(fields, Len(fields) - 1)
+ where = Left(where, Len(where) - 1)
- ' get update values from table and compare if anything changed
- Dim curvalues() As String
+ ' get update values from table and compare if anything changed
+ Dim curvalues() As String
- curvalues = getCurrentTableValues(path, database, table, columns, updcols, pkey, fields, where)
+ curvalues = getCurrentTableValues(path, database, table, columns, updcols, pkey, fields, where)
- If curvalues IsNot Nothing Then
+ If curvalues IsNot Nothing Then
- ' construct update clause
- updvalues = getUpdateValues(update, curvalues)
+ ' construct update clause
+ updvalues = getUpdateValues(update, curvalues)
- If updvalues <> Nothing Then
+ If updvalues <> Nothing Then
- Try
- MPSync_process.logStats("MPSync: [UpdateRecords_mpsync] UPDATE " & table & " SET " & updvalues & " WHERE " & where, "DEBUG")
- SQLcommand.CommandText = "UPDATE " & table & " SET " & updvalues & " WHERE " & where
- SQLcommand.ExecuteNonQuery()
- Catch ex As Exception
- MPSync_process.logStats("MPSync: [UpdateRecords_mpsync] SQL statement [" & (SQLcommand.CommandText).Replace("""", "'") & "] on " & path & database & " failed with exception: " & ex.Message, "DEBUG")
- MPSync_process.logStats("MPSync: [UpdateRecords_mpsync] Error synchronizing table " & table & " in database " & path & database, "ERROR")
- End Try
+ Try
+ MPSync_process.logStats("MPSync: [UpdateRecords_mpsync] UPDATE " & table & " SET " & updvalues & " WHERE " & where, MessageType.DEBUG)
+ SQLcommand.CommandText = "UPDATE " & table & " SET " & updvalues & " WHERE " & where
+ SQLcommand.ExecuteNonQuery()
+ Catch ex As Exception
+ MPSync_process.logStats("MPSync: [UpdateRecords_mpsync] SQL statement [" & (SQLcommand.CommandText).Replace("""", "'") & "] on " & path & database & " failed with exception: " & ex.Message, MessageType.DEBUG)
+ MPSync_process.logStats("MPSync: [UpdateRecords_mpsync] Error synchronizing table " & table & " in database " & path & database, MessageType.ERR)
+ End Try
+ End If
End If
- End If
- Next
+ Next
- SQLconnect.Close()
+ End Using
End Sub
- Private Function InsertRecords(ByVal s_path As String, ByVal t_path As String, ByVal database As String, ByVal table As String, ByVal columns As Array, ByVal method As Integer) As Boolean
+ Private Function GetColumnsToCheck(ByVal tablename As String, ByVal columns As List(Of ColumnInfo)) As String
+ If Not MPSync_process.check_watched And tablename = "user_movie_settings" Then
+ Dim colArray As String() = columns.Where(Function(c) c.name <> "watched" And Not c.name Like "resume*").Select(Function(c2) c2.name).ToArray
+ Return String.Join(",", colArray)
+ Else
+ Return "*"
+ End If
+ End Function
+
+ Private Function InsertRecords(ByVal s_path As String, ByVal t_path As String, ByVal database As String, ByVal table As String, ByVal columns As List(Of ColumnInfo), ByVal method As Integer) As Boolean
' propagate additions
If method = 2 Then Return True
@@ -1130,62 +1132,63 @@ Public Class MPSync_process_DB
If Not MPSync_process.CheckPlayerplaying("db") Then
- MPSync_process.logStats("MPSync: [InsertRecords] adding missing entries on target for table " & table & " in database " & t_path & database, "DEBUG")
+ MPSync_process.logStats("MPSync: [InsertRecords] adding missing entries on target for table " & table & " in database " & t_path & database, MessageType.DEBUG)
- Dim SQLconnect As New SQLiteConnection()
- Dim SQLmemory As New SQLiteConnection()
- Dim SQLcommand As SQLiteCommand = SQLmemory.CreateCommand
- Dim pkey As String = Nothing
- Dim y As Integer = 0
+ Using SQLconnect As New SQLiteConnection(),
+ SQLmemory As New SQLiteConnection(),
+ SQLcommand As SQLiteCommand = SQLmemory.CreateCommand
- SQLconnect.ConnectionString = "Data Source=" & MPSync_process.p_Database(s_path & database) & ";Read Only=True;"
- SQLconnect.Open()
+ Dim pkey As String = Nothing
+ Dim y As Integer = 0
- SQLmemory.ConnectionString = "Data Source=:memory:"
- SQLmemory.Open()
+ SQLconnect.ConnectionString = "Data Source=" & MPSync_process.p_Database(s_path & database) & ";Read Only=True;"
+ SQLconnect.Open()
- SQLconnect.BackupDatabase(SQLmemory, "main", "main", -1, Nothing, 0)
+ SQLmemory.ConnectionString = "Data Source=:memory:"
+ SQLmemory.Open()
- SQLconnect.Close()
- SQLconnect.Dispose()
+ SQLconnect.BackupDatabase(SQLmemory, "main", "main", -1, Nothing, 0)
- SQLcommand.CommandText = "PRAGMA temp_store=2;PRAGMA journal_mode=off;PRAGMA synchronous=off;"
- SQLcommand.ExecuteNonQuery()
- SQLcommand.CommandText = "ATTACH DATABASE '" & MPSync_process.p_Database(t_path & database) & "' AS target"
- SQLcommand.ExecuteNonQuery()
+ SQLconnect.Close()
+ SQLconnect.Dispose()
- Try
- getPK(columns, pkey)
+ SQLcommand.CommandText = "PRAGMA temp_store=2;PRAGMA journal_mode=off;PRAGMA synchronous=off;"
+ SQLcommand.ExecuteNonQuery()
+ SQLcommand.CommandText = "ATTACH DATABASE '" & MPSync_process.p_Database(t_path & database) & "' AS target"
+ SQLcommand.ExecuteNonQuery()
- SQLcommand.CommandText = "INSERT INTO target." & table & " SELECT * FROM " & table & " EXCEPT SELECT * FROM target." & table
+ Try
+ If getPK(columns, pkey) = -1 Then pkey = columns(0).name
- MPSync_process.logStats("MPSync: [InsertRecords] " & SQLcommand.CommandText, "DEBUG")
+ Dim cols As String = GetColumnsToCheck(table, columns)
+ SQLcommand.CommandText = "INSERT INTO target." & table & " SELECT * FROM " & table &
+ " WHERE " & pkey & " in ( SELECT " & pkey & " FROM ( SELECT " & cols & " FROM " & table & " EXCEPT SELECT " & cols & " FROM target." & table & ") )"
- SQLcommand.ExecuteNonQuery()
+ MPSync_process.logStats("MPSync: [InsertRecords] " & SQLcommand.CommandText, MessageType.DEBUG)
- SQLcommand.CommandText = "SELECT CASE WHEN MAX(CHANGES()) IS NULL THEN 0 ELSE MAX(CHANGES()) END FROM target." & table
- Dim SQLreader As SQLiteDataReader = SQLcommand.ExecuteReader()
- SQLreader.Read()
- y = Int(SQLreader(0))
- SQLreader.Close()
+ SQLcommand.ExecuteNonQuery()
- MPSync_process.logStats("MPSync: [InsertRecords] " & y.ToString & " records added in " & table & " in database " & t_path & database, "DEBUG")
- Catch ex As Exception
- MPSync_process.logStats("MPSync: [InsertRecords] SQL statement [" & (SQLcommand.CommandText).Replace("""", "'") & "] on " & t_path & database & " failed with exception: " & ex.Message, "DEBUG")
- MPSync_process.logStats("MPSync: [InsertRecords] Error adding record to table " & table & " in database " & t_path & database & " with exception: " & ex.Message, "ERROR")
- rtc = False
- End Try
+ SQLcommand.CommandText = "SELECT CASE WHEN MAX(CHANGES()) IS NULL THEN 0 ELSE MAX(CHANGES()) END FROM target." & table
+ Using SQLreader = SQLcommand.ExecuteReader()
+ SQLreader.Read()
+ y = SQLreader.GetInt32(0)
+ End Using
- SQLmemory.Close()
- SQLmemory.Dispose()
+ MPSync_process.logStats("MPSync: [InsertRecords] " & y.ToString & " records added in " & table & " in database " & t_path & database, MessageType.DEBUG)
+ Catch ex As Exception
+ MPSync_process.logStats("MPSync: [InsertRecords] SQL statement [" & (SQLcommand.CommandText).Replace("""", "'") & "] on " & t_path & database & " failed with exception: " & ex.Message, MessageType.DEBUG)
+ MPSync_process.logStats("MPSync: [InsertRecords] Error adding record to table " & table & " in database " & t_path & database & " with exception: " & ex.Message, MessageType.ERR)
+ rtc = False
+ End Try
+ End Using
End If
Return rtc
End Function
- Private Function DeleteRecords(ByVal s_path As String, ByVal t_path As String, ByVal database As String, ByVal table As String, ByVal columns As Array, ByVal method As Integer) As Boolean
+ Private Function DeleteRecords(ByVal s_path As String, ByVal t_path As String, ByVal database As String, ByVal table As String, ByVal columns As List(Of ColumnInfo), ByVal method As Integer) As Boolean
' propagate deletions
If method = 1 Or table = "mpsync" Then Return True
@@ -1196,171 +1199,84 @@ Public Class MPSync_process_DB
If Not MPSync_process.CheckPlayerplaying("db") Then
- MPSync_process.logStats("MPSync: [DeleteRecords] deleting extra entries on target for table " & table & " in database " & t_path & database, "DEBUG")
-
- Dim SQLconnect As New SQLiteConnection()
- Dim SQLmemory As New SQLiteConnection()
- Dim SQLcommand As SQLiteCommand = SQLmemory.CreateCommand
- Dim pkey As String = Nothing
- Dim y As Integer = 0
+ MPSync_process.logStats("MPSync: [DeleteRecords] deleting extra entries on target for table " & table & " in database " & t_path & database, MessageType.DEBUG)
- SQLconnect.ConnectionString = "Data Source=" & MPSync_process.p_Database(s_path & database) & ";Read Only=True;"
- SQLconnect.Open()
-
- SQLmemory.ConnectionString = "Data Source=:memory:"
- SQLmemory.Open()
-
- SQLconnect.BackupDatabase(SQLmemory, "main", "main", -1, Nothing, 0)
+ Using SQLconnect As New SQLiteConnection(),
+ SQLmemory As New SQLiteConnection(),
+ SQLcommand As SQLiteCommand = SQLmemory.CreateCommand
- SQLconnect.Close()
- SQLconnect.Dispose()
+ Dim pkey As String = Nothing
+ Dim y As Integer = 0
- SQLcommand.CommandText = "PRAGMA temp_store=2;PRAGMA journal_mode=off;PRAGMA synchronous=off;"
- SQLcommand.ExecuteNonQuery()
- SQLcommand.CommandText = "ATTACH DATABASE '" & MPSync_process.p_Database(t_path & database) & "' AS target"
- SQLcommand.ExecuteNonQuery()
+ SQLconnect.ConnectionString = "Data Source=" & MPSync_process.p_Database(s_path & database) & ";Read Only=True;"
+ SQLconnect.Open()
- Try
- If getPK(columns, pkey) = -1 Then pkey = columns(0, 0)
+ SQLmemory.ConnectionString = "Data Source=:memory:"
+ SQLmemory.Open()
- SQLcommand.CommandText = "DELETE FROM target." & table & " WHERE " & pkey & " IN (SELECT " & pkey & " FROM (SELECT * FROM target." & table & " EXCEPT SELECT * FROM " & table & "))"
+ SQLconnect.BackupDatabase(SQLmemory, "main", "main", -1, Nothing, 0)
- MPSync_process.logStats("MPSync: [DeleteRecords] " & SQLcommand.CommandText, "DEBUG")
+ SQLconnect.Close()
+ SQLconnect.Dispose()
+ SQLcommand.CommandText = "PRAGMA temp_store=2;PRAGMA journal_mode=off;PRAGMA synchronous=off;"
+ SQLcommand.ExecuteNonQuery()
+ SQLcommand.CommandText = "ATTACH DATABASE '" & MPSync_process.p_Database(t_path & database) & "' AS target"
SQLcommand.ExecuteNonQuery()
- SQLcommand.CommandText = "SELECT CASE WHEN MAX(CHANGES()) IS NULL THEN 0 ELSE MAX(CHANGES()) END FROM target." & table
- Dim SQLreader As SQLiteDataReader = SQLcommand.ExecuteReader()
- SQLreader.Read()
- y = Int(SQLreader(0))
- SQLreader.Close()
+ Try
+ If getPK(columns, pkey) = -1 Then pkey = columns(0).name
- MPSync_process.logStats("MPSync: [DeleteRecords] " & y.ToString & " records deleted from " & table & " in database " & t_path & database, "DEBUG")
- Catch ex As Exception
- MPSync_process.logStats("MPSync: [DeleteRecords] SQL statement [" & (SQLcommand.CommandText).Replace("""", "'") & "] on " & t_path & database & " failed with exception: " & ex.Message, "DEBUG")
- MPSync_process.logStats("MPSync: Error [DeleteRecords] deleting records from table " & table & " in database " & t_path & database & " with exception: " & ex.Message, "ERROR")
- rtc = False
- End Try
+ Dim cols As String = GetColumnsToCheck(table, columns)
+ SQLcommand.CommandText = "DELETE FROM target." & table & " WHERE " & pkey & " IN (SELECT " & pkey & " FROM (SELECT " & cols & " FROM target." & table & " EXCEPT SELECT " & cols & " FROM " & table & "))"
- SQLmemory.Close()
- SQLmemory.Dispose()
+ MPSync_process.logStats("MPSync: [DeleteRecords] " & SQLcommand.CommandText, MessageType.DEBUG)
- End If
+ SQLcommand.ExecuteNonQuery()
- Return rtc
-
- End Function
+ SQLcommand.CommandText = "SELECT CASE WHEN MAX(CHANGES()) IS NULL THEN 0 ELSE MAX(CHANGES()) END FROM target." & table
+ Using SQLreader = SQLcommand.ExecuteReader()
+ SQLreader.Read()
+ y = SQLreader.GetInt32(0)
+ End Using
- Private Sub UpdateRecords(ByVal path As String, ByVal database As String, ByVal table As String, ByVal s_data As Array, ByVal t_data As Array, ByVal columns As Array, ByVal method As Integer)
+ MPSync_process.logStats("MPSync: [DeleteRecords] " & y.ToString & " records deleted from " & table & " in database " & t_path & database, MessageType.DEBUG)
+ Catch ex As Exception
+ MPSync_process.logStats("MPSync: [DeleteRecords] SQL statement [" & (SQLcommand.CommandText).Replace("""", "'") & "] on " & t_path & database & " failed with exception: " & ex.Message, MessageType.DEBUG)
+ MPSync_process.logStats("MPSync: Error [DeleteRecords] deleting records from table " & table & " in database " & t_path & database & " with exception: " & ex.Message, MessageType.ERR)
+ rtc = False
+ End Try
- Dim mps_columns As Array = Nothing
- Dim w_values As Array
+ End Using
- If s_data Is Nothing And t_data Is Nothing Then
- MPSync_process.logStats("MPSync: [UpdateRecords] synchronization of table " & table & " in database " & path & database & " nothing to update.", "LOG")
- Exit Sub
End If
- w_values = BuildUpdateArray(s_data, t_data, columns)
-
- If w_values.OfType(Of String)().ToArray().Length = 0 Then Exit Sub
-
- Dim i, x, z As Integer
- Dim pkey As String = Nothing
- Dim updcols As Array = getArray(columns, 0)
- Dim fields, updvalues, where, update(), a_values() As String
- Dim SQLconnect As New SQLiteConnection()
- Dim SQLcommand As SQLiteCommand = SQLconnect.CreateCommand
-
- x = getPK(columns, pkey)
-
- SQLconnect.ConnectionString = "Data Source=" & MPSync_process.p_Database(path & database)
- SQLconnect.Open()
- SQLcommand.CommandText = "PRAGMA temp_store=2;PRAGMA journal_mode=off;PRAGMA synchronous=off;"
- SQLcommand.ExecuteNonQuery()
-
- For y As Integer = 0 To UBound(w_values, 2)
-
- If Not MPSync_process.CheckPlayerplaying("db") Then
-
- i = 0
- fields = Nothing
- update = Nothing
- where = Nothing
- a_values = Split(w_values(1, y), dlm)
-
- For x = 0 To UBound(columns, 2)
- z = Array.IndexOf(updcols, columns(0, x))
- If z <> -1 Then
- If columns(0, x) <> pkey Then
- ReDim Preserve update(i)
- update(i) = columns(0, x) & "=" & FormatValue(a_values(z), columns(1, x))
- fields &= columns(0, x) & ","
- i += 1
- Else
- where = pkey & " = " & FormatValue(a_values(z), columns(1, x))
- End If
- End If
- Next
-
- fields = Left(fields, Len(fields) - 1)
- where = Left(where, Len(where) - 1)
-
- ' get update values from table and compare if anything changed
- Dim curvalues() As String
-
- curvalues = getCurrentTableValues(path, database, table, columns, updcols, pkey, fields, where)
-
- If curvalues IsNot Nothing Then
-
- ' construct update clause
- updvalues = getUpdateValues(update, curvalues)
-
- If updvalues <> Nothing Then
-
- Try
- MPSync_process.logStats("MPSync: [UpdateRecords] UPDATE " & table & " SET " & updvalues & " WHERE " & where, "DEBUG")
- SQLcommand.CommandText = "UPDATE " & table & " SET " & updvalues & " WHERE " & where
- SQLcommand.ExecuteNonQuery()
- Catch ex As Exception
- MPSync_process.logStats("MPSync: [UpdateRecords] SQL statement [" & (SQLcommand.CommandText).Replace("""", "'") & "] on " & path & database & " failed with exception: " & ex.Message, "DEBUG")
- MPSync_process.logStats("MPSync: [UpdateRecords] Error synchronizing table " & table & " in database " & path & database, "ERROR")
- End Try
-
- End If
- End If
- Else
- Exit For
- End If
-
- Next
-
- SQLconnect.Close()
+ Return rtc
- End Sub
+ End Function
Private Sub Cleanup_mpsync(ByVal path As String, ByVal database As String, ByVal data As Array)
If data.OfType(Of String)().ToArray().Length = 0 Or data(0, 0) = Nothing Then Exit Sub
- Dim SQLconnect As New SQLiteConnection()
- Dim SQLcommand As SQLiteCommand = SQLconnect.CreateCommand
+ Using SQLconnect As New SQLiteConnection(),
+ SQLcommand As SQLiteCommand = SQLconnect.CreateCommand
- SQLconnect.ConnectionString = "Data Source=" & MPSync_process.p_Database(path & database)
- SQLconnect.Open()
+ SQLconnect.ConnectionString = "Data Source=" & MPSync_process.p_Database(path & database)
+ SQLconnect.Open()
- Try
- For y = 0 To UBound(data, 2)
- MPSync_process.logStats("MPSync: [Cleanup_mpsync] DELETE FROM mpsync WHERE rowid = " & data(0, y), "DEBUG")
- SQLcommand.CommandText = "DELETE FROM mpsync WHERE rowid = " & data(0, y)
- SQLcommand.ExecuteNonQuery()
- Next
- Catch ex As Exception
- MPSync_process.logStats("MPSync: [Cleanup_mpsync] SQL statement [" & (SQLcommand.CommandText).Replace("""", "'") & "] failed with exception: " & ex.Message, "DEBUG")
- MPSync_process.logStats("MPSync: [Cleanup_mpsync] Error deleting record from table mpsync in database " & path & database & " with exception: " & ex.Message, "ERROR")
- End Try
+ Try
+ For y = 0 To UBound(data, 2)
+ MPSync_process.logStats("MPSync: [Cleanup_mpsync] DELETE FROM mpsync WHERE rowid = " & data(0, y), MessageType.DEBUG)
+ SQLcommand.CommandText = "DELETE FROM mpsync WHERE rowid = " & data(0, y)
+ SQLcommand.ExecuteNonQuery()
+ Next
+ Catch ex As Exception
+ MPSync_process.logStats("MPSync: [Cleanup_mpsync] SQL statement [" & (SQLcommand.CommandText).Replace("""", "'") & "] failed with exception: " & ex.Message, MessageType.DEBUG)
+ MPSync_process.logStats("MPSync: [Cleanup_mpsync] Error deleting record from table mpsync in database " & path & database & " with exception: " & ex.Message, MessageType.ERR)
+ End Try
- SQLconnect.Close()
+ End Using
End Sub
diff --git a/MPSync/MPSync/MPSync_process_Folders.vb b/MPSync/MPSync/MPSync_process_Folders.vb
index 984303c..dd37dd6 100644
--- a/MPSync/MPSync/MPSync_process_Folders.vb
+++ b/MPSync/MPSync/MPSync_process_Folders.vb
@@ -1,7 +1,4 @@
-Imports MediaPortal.GUI.Library
-
-Imports System.IO
-Imports System.Collections.Generic
+Imports System.IO
Imports System.Threading
Imports DirectoryEnumerator
@@ -18,102 +15,112 @@ Public Class MPSync_process_Folders
Public Shared Sub bw_folders_worker(sender As System.Object, e As System.ComponentModel.DoWorkEventArgs)
- Dim mps_folders As New MPSync_process_Folders
+ Try
+ Dim mps_folders As New MPSync_process_Folders
- MPSync_process.logStats("MPSync: [MPSync_process.WorkMethod][bw_folders_worker] Folders synchronization started.", "INFO")
+ MPSync_process.logStats("MPSync: [MPSync_process.WorkMethod][bw_folders_worker] Folders synchronization started.", MessageType.INFO)
- Dim x As Integer = -1
- Dim process_thread() As Thread = Nothing
- Dim item As Array
- Dim list As Array = MPSync_process.p_object_list
+ Dim x As Integer = -1
+ Dim process_thread() As Thread = Nothing
+ Dim item As Array
+ Dim list As Array = MPSync_process.p_object_list
- _bw_active_fl_jobs = 0
+ _bw_active_fl_jobs = 0
- ' populate the CRC32 table
- createCRC32table()
+ ' populate the CRC32 table
+ createCRC32table()
- For Each obj As String In list
+ For Each obj As String In list
- item = Split(obj, "¬")
+ item = Split(obj, "¬")
- If item(1) = "True" Then
- ' check if there are available threads to submit current stream, unless there is no limit.
+ If item(1) = "True" Then
+ ' check if there are available threads to submit current stream, unless there is no limit.
- If MPSync_process.checkThreads("folders") <> -1 Then
+ If MPSync_process.checkThreads("folders") <> -1 Then
- Do While _bw_active_fl_jobs >= MPSync_process.checkThreads("folders")
- MPSync_process.logStats("MPSync: [MPSync_process.WorkMethod][bw_folders_worker] waiting for available threads.", "DEBUG")
- MPSync_process.wait(30, False)
- Loop
+ Do While _bw_active_fl_jobs >= MPSync_process.checkThreads("folders")
+ MPSync_process.logStats("MPSync: [MPSync_process.WorkMethod][bw_folders_worker] waiting for available threads.", MessageType.DEBUG)
+ MPSync_process.wait(30, False)
+ Loop
- End If
+ End If
- _bw_active_fl_jobs += 1
+ _bw_active_fl_jobs += 1
- x += 1
+ x += 1
- ReDim Preserve mps_folders.foldertypes(x), mps_folders.s_paths(x), mps_folders.t_paths(x)
- mps_folders.foldertypes(x) = UCase(item(0))
+ ReDim Preserve mps_folders.foldertypes(x), mps_folders.s_paths(x), mps_folders.t_paths(x)
+ mps_folders.foldertypes(x) = UCase(item(0))
- ReDim Preserve process_thread(x)
- process_thread(x) = New Thread(AddressOf mps_folders.folders_processing)
- process_thread(x).Start(item(0))
- End If
+ ReDim Preserve process_thread(x)
+ process_thread(x) = New Thread(AddressOf mps_folders.folders_processing)
+ process_thread(x).Start(item(0))
+ End If
- Next
+ Next
- If x <> -1 Then
+ If x <> -1 Then
- Dim active As Boolean = True
+ Dim active As Boolean = True
- Do Until active = False
+ Do Until active = False
- active = False
+ active = False
- For y As Integer = 0 To x
+ For y As Integer = 0 To x
- If process_thread(y).IsAlive Then
- active = True
- Exit For
- End If
+ If process_thread(y).IsAlive Then
+ active = True
+ Exit For
+ End If
- Next
+ Next
- If _bw_active_fl_jobs > 0 Then
- If MPSync_process.p_Debug Then MPSync_process.logStats("MPSync: [MPSync_process.WorkMethod][bw_folders_worker] waiting for background threads to finish... " & _bw_active_fl_jobs.ToString & " threads remaining processing.", "DEBUG")
- MPSync_process.wait(10, False)
- End If
+ If _bw_active_fl_jobs > 0 Then
+ If MPSync_process.p_Debug Then MPSync_process.logStats("MPSync: [MPSync_process.WorkMethod][bw_folders_worker] waiting for background threads to finish... " & _bw_active_fl_jobs.ToString & " threads remaining processing.", MessageType.DEBUG)
+ MPSync_process.wait(10, False)
+ End If
- Loop
+ Loop
- End If
+ End If
+
+ If MPSync_settings.syncnow Then MPSync_settings.folders_complete = True
- If MPSync_settings.syncnow Then MPSync_settings.folders_complete = True
+ MPSync_process.logStats("MPSync: [MPSync_process.WorkMethod][bw_folders_worker] Folders synchronization complete.", MessageType.INFO)
- MPSync_process.logStats("MPSync: [MPSync_process.WorkMethod][bw_folders_worker] Folders synchronization complete.", "INFO")
+ Catch ex As Exception
+ MPSync_process.logStats("MPSync: [MPSync_process.WorkMethod][bw_folders_worker] Unexpected error " & ex.Message, MessageType.ERR)
+ End Try
End Sub
Private Sub folders_processing(ByVal foldertype As String)
- Dim folders_client As String = Nothing
- Dim folders_server As String = Nothing
- Dim folders() As String = Nothing
- Dim folders_direction As Integer = Nothing
- Dim folders_sync_method As Integer = Nothing
- Dim folders_pause As Boolean = False
- Dim folders_md5 As Boolean = False
- Dim folders_crc32 As Boolean = False
+ Try
+ Dim folders_client As String = Nothing
+ Dim folders_server As String = Nothing
+ Dim folders() As String = Nothing
+ Dim folders_direction As Integer = Nothing
+ Dim folders_sync_method As Integer = Nothing
+ Dim folders_pause As Boolean = False
+ Dim folders_md5 As Boolean = False
+ Dim folders_crc32 As Boolean = False
+
+ MPSync_process.getObjectSettings(foldertype, folders_client, folders_server, folders_direction, folders_sync_method, folders, folders_pause, folders_md5, folders_crc32)
- MPSync_process.getObjectSettings(foldertype, folders_client, folders_server, folders_direction, folders_sync_method, folders, folders_pause, folders_md5, folders_crc32)
+ Process(UCase(foldertype), folders_client, folders_server, folders_direction, folders_sync_method, folders, folders_pause, folders_md5, folders_crc32)
- Process(UCase(foldertype), folders_client, folders_server, folders_direction, folders_sync_method, folders, folders_pause, folders_md5, folders_crc32)
+ Catch ex As Exception
+ MPSync_process.logStats("MPSync: [MPSync_process.WorkMethod][folders_processing] Unexpected error " & ex.Message, MessageType.ERR)
+ End Try
End Sub
Private Sub Process(ByVal foldertype As String, ByVal clientpath As String, ByVal serverpath As String, ByVal direction As Integer, ByVal folders_sync_method As Integer, ByVal selectedfolder() As String, ByVal folders_pause As Boolean, ByVal folders_md5 As Boolean, ByVal folders_crc32 As Boolean)
- MPSync_process.logStats("MPSync: [Process] " & foldertype & " synchronization cycle starting.", "LOG")
+ MPSync_process.logStats("MPSync: [Process] " & foldertype & " synchronization cycle starting.", MessageType.LOG)
' direction is client to server
If direction <> 2 Then
@@ -125,7 +132,7 @@ Public Class MPSync_process_Folders
process_Folder(foldertype, serverpath, clientpath, folders_sync_method, selectedfolder, folders_pause, folders_md5, folders_crc32)
End If
- MPSync_process.logStats("MPSync: [Process] " & foldertype & " synchronization cycle complete.", "LOG")
+ MPSync_process.logStats("MPSync: [Process] " & foldertype & " synchronization cycle complete.", MessageType.LOG)
_bw_active_fl_jobs -= 1
@@ -157,7 +164,7 @@ Public Class MPSync_process_Folders
Dim l2 As Integer = Len(c_path)
Dim x As Integer = -1
- MPSync_process.logStats("MPSync: [getobjectsDetails] Scanning folder " & path & " for objects", "LOG")
+ MPSync_process.logStats("MPSync: [getobjectsDetails] Scanning folder " & path & " for objects", MessageType.LOG)
Try
@@ -211,10 +218,10 @@ Public Class MPSync_process_Folders
time2 = Now
Catch ex As Exception
- MPSync_process.logStats("MPSync: [getobjectsDetails] failed to read objects from folder " & path & " with exception: " & ex.Message, "ERROR")
+ MPSync_process.logStats("MPSync: [getobjectsDetails] failed to read objects from folder " & path & " with exception: " & ex.Message, MessageType.ERR)
End Try
- MPSync_process.logStats("MPSync: [getobjectsDetails] " & x.ToString & " objects found in folder " & path & " in " & DateDiff(DateInterval.Second, time1, time2).ToString & " seconds", "LOG")
+ MPSync_process.logStats("MPSync: [getobjectsDetails] " & x.ToString & " objects found in folder " & path & " in " & DateDiff(DateInterval.Second, time1, time2).ToString & " seconds", MessageType.LOG)
Return objects
@@ -223,7 +230,7 @@ Public Class MPSync_process_Folders
Private Sub process_Folder(ByVal foldertype As String, ByVal source As String, ByVal target As String, ByVal folders_sync_method As Integer, ByVal selectedfolder() As String, ByVal folders_pause As Boolean, ByVal folders_md5 As Boolean, ByVal folders_crc32 As Boolean)
If Not Directory.Exists(source) Then
- MPSync_process.logStats("MPSync: [process_Folder] folder " & source & " does not exist", "ERROR")
+ MPSync_process.logStats("MPSync: [process_Folder] folder " & source & " does not exist", MessageType.ERR)
Exit Sub
End If
@@ -257,13 +264,13 @@ Public Class MPSync_process_Folders
If folders_sync_method <> 1 And t_folders(0) <> "" Then
diff = t_folders.Except(s_folders, StringComparer.InvariantCultureIgnoreCase)
- MPSync_process.logStats("MPSync: [process_Folder] found " & (UBound(diff.ToArray) + 1).ToString & " differences for deletion between " & source & " and " & target, "DEBUG")
+ MPSync_process.logStats("MPSync: [process_Folder] found " & (UBound(diff.ToArray) + 1).ToString & " differences for deletion between " & source & " and " & target, MessageType.DEBUG)
If UBound(diff.ToArray) >= 0 Then
If (diff.Count / t_folders.Count) <= 0.25 Then
delete_Objects(t_path, diff.ToArray)
Else
- MPSync_process.logStats("MPSync: [process_Folder] differences for deletion exceed 25% treshold. Deletion not allowed for " & source & " and " & target, "INFO")
+ MPSync_process.logStats("MPSync: [process_Folder] differences for deletion exceed 25% treshold. Deletion not allowed for " & source & " and " & target, MessageType.INFO)
End If
End If
@@ -273,14 +280,14 @@ Public Class MPSync_process_Folders
If folders_sync_method <> 2 And s_folders(0) <> "" Then
diff = s_folders.Except(t_folders, StringComparer.InvariantCultureIgnoreCase)
- MPSync_process.logStats("MPSync: [process_Folder] found " & (UBound(diff.ToArray) + 1).ToString & " differences for addition/replacement between " & source & " and " & target, "DEBUG")
+ MPSync_process.logStats("MPSync: [process_Folder] found " & (UBound(diff.ToArray) + 1).ToString & " differences for addition/replacement between " & source & " and " & target, MessageType.DEBUG)
If UBound(diff.ToArray) >= 0 Then copy_Objects(s_path, t_path, diff.ToArray, folders_pause)
End If
Catch ex As Exception
- MPSync_process.logStats("MPSync: [process_Folder] process failed with exception: " & ex.Message, "ERROR")
+ MPSync_process.logStats("MPSync: [process_Folder] process failed with exception: " & ex.Message, MessageType.ERR)
End Try
If s_folders IsNot Nothing Then Array.Clear(s_folders, 0, UBound(s_folders))
@@ -300,7 +307,7 @@ Public Class MPSync_process_Folders
For x = 0 To UBound(parm)
- If folders_pause Then CheckPlayerActive()
+ If folders_pause Then checkPlayerActive()
file = Split(parm(x), "|")
@@ -310,7 +317,7 @@ Public Class MPSync_process_Folders
If Not IO.Directory.Exists(directory) Then
IO.Directory.CreateDirectory(directory)
- MPSync_process.logStats("MPSync: [copy_Objects] directory missing, creating " & directory, "LOG")
+ MPSync_process.logStats("MPSync: [copy_Objects] directory missing, creating " & directory, MessageType.LOG)
End If
Else
@@ -319,23 +326,23 @@ Public Class MPSync_process_Folders
If Not IO.Directory.Exists(directory) Then
IO.Directory.CreateDirectory(directory)
- MPSync_process.logStats("MPSync: [copy_Objects] directory missing, creating " & directory, "LOG")
+ MPSync_process.logStats("MPSync: [copy_Objects] directory missing, creating " & directory, MessageType.LOG)
End If
Try
If Not fileLocked(s_path & file(0), "copy_Objects") Then
IO.File.Copy(s_path & file(0), t_path & file(0), True)
- MPSync_process.logStats("MPSync: [copy_Objects] " & t_path & file(0) & " copied.", "DEBUG")
+ MPSync_process.logStats("MPSync: [copy_Objects] " & t_path & file(0) & " copied.", MessageType.DEBUG)
End If
Catch ex As Exception
- MPSync_process.logStats("MPSync: [copy_Objects] copy failed with exception: " & ex.Message, "ERROR")
+ MPSync_process.logStats("MPSync: [copy_Objects] copy failed with exception: " & ex.Message, MessageType.ERR)
End Try
End If
Next
- If file(1) <> "WATCH" Then MPSync_process.logStats("MPSync: [copy_Objects] " & x.ToString & " objects added/replaced.", "LOG")
+ If file(1) <> "WATCH" Then MPSync_process.logStats("MPSync: [copy_Objects] " & x.ToString & " objects added/replaced.", MessageType.LOG)
End Sub
@@ -347,27 +354,27 @@ Public Class MPSync_process_Folders
For x = 0 To UBound(parm)
- CheckPlayerActive()
+ checkPlayerActive()
file = Split(parm(x), "|")
Try
If file(1) = "FOLDER" Then
IO.Directory.Delete(t_path & file(0))
- MPSync_process.logStats("MPSync: [delete_Objects] " & t_path & file(0) & " deleted.", "DEBUG")
+ MPSync_process.logStats("MPSync: [delete_Objects] " & t_path & file(0) & " deleted.", MessageType.DEBUG)
Else
If Not fileLocked(t_path & file(0), "[delete_Objects]") Then
IO.File.Delete(t_path & file(0))
- MPSync_process.logStats("MPSync: [delete_Objects] " & t_path & file(0) & " deleted.", "DEBUG")
+ MPSync_process.logStats("MPSync: [delete_Objects] " & t_path & file(0) & " deleted.", MessageType.DEBUG)
End If
End If
Catch ex As Exception
- MPSync_process.logStats("MPSync: [delete_Objects] delete failed with exception: " & ex.Message, "ERROR")
+ MPSync_process.logStats("MPSync: [delete_Objects] delete failed with exception: " & ex.Message, MessageType.ERR)
End Try
Next
- If file(1) <> "WATCH" Then MPSync_process.logStats("MPSync: [delete_Objects] " & x.ToString & " objects removed.", "LOG")
+ If file(1) <> "WATCH" Then MPSync_process.logStats("MPSync: [delete_Objects] " & x.ToString & " objects removed.", MessageType.LOG)
End Sub
@@ -384,12 +391,12 @@ Public Class MPSync_process_Folders
Do While isFileLocked(filename)
- MPSync_process.logStats("MPSync: [" & proc & "] obtaining lock on file " & filename, "DEBUG")
+ MPSync_process.logStats("MPSync: [" & proc & "] obtaining lock on file " & filename, MessageType.DEBUG)
lock_count += 1
If lock_count = 10 Then
- MPSync_process.logStats("MPSync: [" & proc & "] lock on file " & filename & "not obtained. File in use, skipping file.", "DEBUG")
+ MPSync_process.logStats("MPSync: [" & proc & "] lock on file " & filename & "not obtained. File in use, skipping file.", MessageType.DEBUG)
Return True
End If
diff --git a/MPSync/MPSync/MPSync_process_Folders_watch.vb b/MPSync/MPSync/MPSync_process_Folders_watch.vb
index 3274451..39f7de6 100644
--- a/MPSync/MPSync/MPSync_process_Folders_watch.vb
+++ b/MPSync/MPSync/MPSync_process_Folders_watch.vb
@@ -1,5 +1,4 @@
Imports System.IO
-Imports System.Threading
Class MPSync_process_Folders_watch
@@ -14,7 +13,7 @@ Class MPSync_process_Folders_watch
Public Sub watch_folder(ByVal path As String, ByVal foldertype As String, ByVal spath As String, ByVal tpath As String, ByVal selectedfolder() As String)
If Not Directory.Exists(path) Then
- MPSync_process.logStats("MPSync: [watch_folder] folder " & path & " does not exist", "ERROR")
+ MPSync_process.logStats("MPSync: [watch_folder] folder " & path & " does not exist", MessageType.ERR)
Exit Sub
End If
@@ -26,7 +25,7 @@ Class MPSync_process_Folders_watch
watchfolder = New System.IO.FileSystemWatcher()
- MPSync_process.logStats("MPSync: " & foldertype & " watch starting for " & path, "LOG")
+ MPSync_process.logStats("MPSync: " & foldertype & " watch starting for " & path, MessageType.LOG)
'this is the path we want to monitor
watchfolder.Path = path
@@ -44,9 +43,6 @@ Class MPSync_process_Folders_watch
'Set this property to true to start watching
watchfolder.EnableRaisingEvents = True
- Dim autoEvent As New AutoResetEvent(False)
- autoEvent.WaitOne()
-
End Sub
Private Sub fileChange(ByVal source As Object, ByVal e As System.IO.FileSystemEventArgs)
@@ -78,7 +74,7 @@ Class MPSync_process_Folders_watch
End If
End If
Catch ex As Exception
- MPSync_process.logStats("MPSync: fileChange failed on " & e.FullPath & " with exception: " & ex.Message, "ERROR")
+ MPSync_process.logStats("MPSync: fileChange failed on " & e.FullPath & " with exception: " & ex.Message, MessageType.ERR)
End Try
End Sub
@@ -99,12 +95,12 @@ Class MPSync_process_Folders_watch
If selected_folder.Contains(folder) Or selected_folder.Contains("ALL") Then
If MPSync_process_Folders.fileLocked(e.OldFullPath, "filerename") Then
- MPSync_process.logStats("MPSync: " & folder_type & " - " & e.OldFullPath & " renamed to " & e.FullPath, "LOG")
+ MPSync_process.logStats("MPSync: " & folder_type & " - " & e.OldFullPath & " renamed to " & e.FullPath, MessageType.LOG)
FileSystem.Rename(e.OldFullPath, e.FullPath)
End If
End If
Catch ex As Exception
- MPSync_process.logStats("MPSync: rename failed with exception: " & ex.Message, "ERROR")
+ MPSync_process.logStats("MPSync: rename failed with exception: " & ex.Message, MessageType.ERR)
End Try
End Sub
diff --git a/MPSync/MPSync/MPSync_settings.Designer.vb b/MPSync/MPSync/MPSync_settings.Designer.vb
index 7c1fefb..c1b3cae 100644
--- a/MPSync/MPSync/MPSync_settings.Designer.vb
+++ b/MPSync/MPSync/MPSync_settings.Designer.vb
@@ -1,9 +1,9 @@
- _
+
Partial Class MPSync_settings
Inherits System.Windows.Forms.Form
'Form overrides dispose to clean up the component list.
- _
+
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
@@ -20,7 +20,7 @@ Partial Class MPSync_settings
'NOTE: The following procedure is required by the Windows Form Designer
'It can be modified imports the Windows Form Designer.
'Do not modify it imports the code editor.
- _
+
Private Sub InitializeComponent()
Me.components = New System.ComponentModel.Container()
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(MPSync_settings))
@@ -48,18 +48,8 @@ Partial Class MPSync_settings
Me.Label14 = New System.Windows.Forms.Label()
Me.Label13 = New System.Windows.Forms.Label()
Me.nud_max_DB_streams = New System.Windows.Forms.NumericUpDown()
- Me.Panel6 = New System.Windows.Forms.Panel()
- Me.rb_process = New System.Windows.Forms.RadioButton()
- Me.rb_normal = New System.Windows.Forms.RadioButton()
Me.Panel2 = New System.Windows.Forms.Panel()
Me.cb_debug = New System.Windows.Forms.CheckBox()
- Me.tp_process = New System.Windows.Forms.TabPage()
- Me.b_removeautostart = New System.Windows.Forms.Button()
- Me.b_processauto = New System.Windows.Forms.Button()
- Me.b_processstop = New System.Windows.Forms.Button()
- Me.b_processstart = New System.Windows.Forms.Button()
- Me.tb_processstatus = New System.Windows.Forms.TextBox()
- Me.Label7 = New System.Windows.Forms.Label()
Me.tp_database = New System.Windows.Forms.TabPage()
Me.tc_database = New System.Windows.Forms.TabControl()
Me.tp_db_paths = New System.Windows.Forms.TabPage()
@@ -103,8 +93,6 @@ Partial Class MPSync_settings
Me.tp_folders = New System.Windows.Forms.TabPage()
Me.tc_objects = New System.Windows.Forms.TabControl()
Me.tp_list = New System.Windows.Forms.TabPage()
- Me.pnl_object_list = New System.Windows.Forms.Panel()
- Me.tb_object_list = New System.Windows.Forms.TextBox()
Me.b_delete = New System.Windows.Forms.Button()
Me.b_edit = New System.Windows.Forms.Button()
Me.b_add = New System.Windows.Forms.Button()
@@ -143,9 +131,7 @@ Partial Class MPSync_settings
Me.Panel7.SuspendLayout()
CType(Me.nud_max_folder_streams, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.nud_max_DB_streams, System.ComponentModel.ISupportInitialize).BeginInit()
- Me.Panel6.SuspendLayout()
Me.Panel2.SuspendLayout()
- Me.tp_process.SuspendLayout()
Me.tp_database.SuspendLayout()
Me.tc_database.SuspendLayout()
Me.tp_db_paths.SuspendLayout()
@@ -161,7 +147,6 @@ Partial Class MPSync_settings
Me.tp_folders.SuspendLayout()
Me.tc_objects.SuspendLayout()
Me.tp_list.SuspendLayout()
- Me.pnl_object_list.SuspendLayout()
Me.tp_paths.SuspendLayout()
Me.tp_advancedsettings.SuspendLayout()
Me.GroupBox2.SuspendLayout()
@@ -242,7 +227,6 @@ Partial Class MPSync_settings
'
Me.tc_settings.Controls.Add(Me.tp_selection)
Me.tc_settings.Controls.Add(Me.tp_configuration)
- Me.tc_settings.Controls.Add(Me.tp_process)
Me.tc_settings.Location = New System.Drawing.Point(3, 7)
Me.tc_settings.Name = "tc_settings"
Me.tc_settings.SelectedIndex = 0
@@ -353,7 +337,6 @@ Partial Class MPSync_settings
'
Me.tp_configuration.BackColor = System.Drawing.SystemColors.ButtonFace
Me.tp_configuration.Controls.Add(Me.Panel7)
- Me.tp_configuration.Controls.Add(Me.Panel6)
Me.tp_configuration.Controls.Add(Me.Panel2)
Me.tp_configuration.Location = New System.Drawing.Point(4, 22)
Me.tp_configuration.Name = "tp_configuration"
@@ -425,42 +408,6 @@ Partial Class MPSync_settings
Me.nud_max_DB_streams.TabIndex = 0
Me.nud_max_DB_streams.TextAlign = System.Windows.Forms.HorizontalAlignment.Center
'
- 'Panel6
- '
- Me.Panel6.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
- Me.Panel6.Controls.Add(Me.rb_process)
- Me.Panel6.Controls.Add(Me.rb_normal)
- Me.Panel6.Location = New System.Drawing.Point(12, 135)
- Me.Panel6.Name = "Panel6"
- Me.Panel6.Size = New System.Drawing.Size(545, 71)
- Me.Panel6.TabIndex = 72
- Me.Panel6.Visible = False
- '
- 'rb_process
- '
- Me.rb_process.AutoSize = True
- Me.rb_process.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
- Me.rb_process.Location = New System.Drawing.Point(158, 37)
- Me.rb_process.Name = "rb_process"
- Me.rb_process.Size = New System.Drawing.Size(189, 20)
- Me.rb_process.TabIndex = 74
- Me.rb_process.Text = "Run as a Windows process"
- Me.rb_process.UseVisualStyleBackColor = True
- Me.rb_process.Visible = False
- '
- 'rb_normal
- '
- Me.rb_normal.AutoSize = True
- Me.rb_normal.Checked = True
- Me.rb_normal.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
- Me.rb_normal.Location = New System.Drawing.Point(158, 11)
- Me.rb_normal.Name = "rb_normal"
- Me.rb_normal.Size = New System.Drawing.Size(227, 20)
- Me.rb_normal.TabIndex = 72
- Me.rb_normal.TabStop = True
- Me.rb_normal.Text = "Run from MediaPortal or Manually"
- Me.rb_normal.UseVisualStyleBackColor = True
- '
'Panel2
'
Me.Panel2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
@@ -481,83 +428,6 @@ Partial Class MPSync_settings
Me.cb_debug.Text = "Enable DEBUG logs"
Me.cb_debug.UseVisualStyleBackColor = True
'
- 'tp_process
- '
- Me.tp_process.BackColor = System.Drawing.SystemColors.ButtonFace
- Me.tp_process.Controls.Add(Me.b_removeautostart)
- Me.tp_process.Controls.Add(Me.b_processauto)
- Me.tp_process.Controls.Add(Me.b_processstop)
- Me.tp_process.Controls.Add(Me.b_processstart)
- Me.tp_process.Controls.Add(Me.tb_processstatus)
- Me.tp_process.Controls.Add(Me.Label7)
- Me.tp_process.Location = New System.Drawing.Point(4, 22)
- Me.tp_process.Name = "tp_process"
- Me.tp_process.Padding = New System.Windows.Forms.Padding(3)
- Me.tp_process.Size = New System.Drawing.Size(568, 152)
- Me.tp_process.TabIndex = 2
- Me.tp_process.Text = "Process"
- '
- 'b_removeautostart
- '
- Me.b_removeautostart.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
- Me.b_removeautostart.Location = New System.Drawing.Point(177, 93)
- Me.b_removeautostart.Name = "b_removeautostart"
- Me.b_removeautostart.Size = New System.Drawing.Size(214, 23)
- Me.b_removeautostart.TabIndex = 10
- Me.b_removeautostart.Text = "Remove Process from AutoStart"
- Me.b_removeautostart.UseVisualStyleBackColor = True
- '
- 'b_processauto
- '
- Me.b_processauto.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
- Me.b_processauto.Location = New System.Drawing.Point(177, 66)
- Me.b_processauto.Name = "b_processauto"
- Me.b_processauto.Size = New System.Drawing.Size(214, 23)
- Me.b_processauto.TabIndex = 9
- Me.b_processauto.Text = "Set Process to AutoStart"
- Me.b_processauto.UseVisualStyleBackColor = True
- '
- 'b_processstop
- '
- Me.b_processstop.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
- Me.b_processstop.Location = New System.Drawing.Point(177, 39)
- Me.b_processstop.Name = "b_processstop"
- Me.b_processstop.Size = New System.Drawing.Size(214, 23)
- Me.b_processstop.TabIndex = 7
- Me.b_processstop.Text = "Stop Process"
- Me.b_processstop.UseVisualStyleBackColor = True
- '
- 'b_processstart
- '
- Me.b_processstart.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
- Me.b_processstart.Location = New System.Drawing.Point(177, 12)
- Me.b_processstart.Name = "b_processstart"
- Me.b_processstart.Size = New System.Drawing.Size(214, 23)
- Me.b_processstart.TabIndex = 6
- Me.b_processstart.Text = "Start Process now"
- Me.b_processstart.UseVisualStyleBackColor = True
- '
- 'tb_processstatus
- '
- Me.tb_processstatus.BackColor = System.Drawing.SystemColors.ButtonFace
- Me.tb_processstatus.BorderStyle = System.Windows.Forms.BorderStyle.None
- Me.tb_processstatus.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.75!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
- Me.tb_processstatus.ForeColor = System.Drawing.Color.Red
- Me.tb_processstatus.Location = New System.Drawing.Point(280, 123)
- Me.tb_processstatus.Name = "tb_processstatus"
- Me.tb_processstatus.Size = New System.Drawing.Size(195, 15)
- Me.tb_processstatus.TabIndex = 4
- '
- 'Label7
- '
- Me.Label7.AutoSize = True
- Me.Label7.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
- Me.Label7.Location = New System.Drawing.Point(174, 122)
- Me.Label7.Name = "Label7"
- Me.Label7.Size = New System.Drawing.Size(100, 16)
- Me.Label7.TabIndex = 3
- Me.Label7.Text = "Service Status :"
- '
'tp_database
'
Me.tp_database.BackColor = System.Drawing.SystemColors.ButtonFace
@@ -1020,7 +890,6 @@ Partial Class MPSync_settings
'tp_list
'
Me.tp_list.BackColor = System.Drawing.SystemColors.ButtonFace
- Me.tp_list.Controls.Add(Me.pnl_object_list)
Me.tp_list.Controls.Add(Me.b_delete)
Me.tp_list.Controls.Add(Me.b_edit)
Me.tp_list.Controls.Add(Me.b_add)
@@ -1032,45 +901,27 @@ Partial Class MPSync_settings
Me.tp_list.TabIndex = 2
Me.tp_list.Text = "Folders List"
'
- 'pnl_object_list
- '
- Me.pnl_object_list.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
- Me.pnl_object_list.Controls.Add(Me.tb_object_list)
- Me.pnl_object_list.Location = New System.Drawing.Point(44, 68)
- Me.pnl_object_list.Name = "pnl_object_list"
- Me.pnl_object_list.Size = New System.Drawing.Size(406, 49)
- Me.pnl_object_list.TabIndex = 4
- Me.pnl_object_list.Visible = False
- '
- 'tb_object_list
- '
- Me.tb_object_list.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
- Me.tb_object_list.Location = New System.Drawing.Point(14, 14)
- Me.tb_object_list.Name = "tb_object_list"
- Me.tb_object_list.Size = New System.Drawing.Size(378, 21)
- Me.tb_object_list.TabIndex = 0
- '
'b_delete
'
- Me.b_delete.BackgroundImage = Global.MPSync.My.Resources.Resources.delete
Me.b_delete.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center
+ Me.b_delete.Enabled = False
+ Me.b_delete.Image = Global.MPSync.My.Resources.Resources.delete
Me.b_delete.Location = New System.Drawing.Point(506, 72)
Me.b_delete.Name = "b_delete"
Me.b_delete.Size = New System.Drawing.Size(40, 40)
Me.b_delete.TabIndex = 3
Me.b_delete.UseVisualStyleBackColor = True
- Me.b_delete.Visible = False
'
'b_edit
'
- Me.b_edit.BackgroundImage = Global.MPSync.My.Resources.Resources.edit
Me.b_edit.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center
+ Me.b_edit.Enabled = False
+ Me.b_edit.Image = Global.MPSync.My.Resources.Resources.edit
Me.b_edit.Location = New System.Drawing.Point(506, 118)
Me.b_edit.Name = "b_edit"
Me.b_edit.Size = New System.Drawing.Size(40, 40)
Me.b_edit.TabIndex = 2
Me.b_edit.UseVisualStyleBackColor = True
- Me.b_edit.Visible = False
'
'b_add
'
@@ -1350,12 +1201,8 @@ Partial Class MPSync_settings
Me.Panel7.PerformLayout()
CType(Me.nud_max_folder_streams, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.nud_max_DB_streams, System.ComponentModel.ISupportInitialize).EndInit()
- Me.Panel6.ResumeLayout(False)
- Me.Panel6.PerformLayout()
Me.Panel2.ResumeLayout(False)
Me.Panel2.PerformLayout()
- Me.tp_process.ResumeLayout(False)
- Me.tp_process.PerformLayout()
Me.tp_database.ResumeLayout(False)
Me.tc_database.ResumeLayout(False)
Me.tp_db_paths.ResumeLayout(False)
@@ -1380,8 +1227,6 @@ Partial Class MPSync_settings
Me.tp_folders.ResumeLayout(False)
Me.tc_objects.ResumeLayout(False)
Me.tp_list.ResumeLayout(False)
- Me.pnl_object_list.ResumeLayout(False)
- Me.pnl_object_list.PerformLayout()
Me.tp_paths.ResumeLayout(False)
Me.tp_paths.PerformLayout()
Me.tp_advancedsettings.ResumeLayout(False)
@@ -1464,8 +1309,6 @@ Partial Class MPSync_settings
Friend WithEvents b_delete As System.Windows.Forms.Button
Friend WithEvents b_edit As System.Windows.Forms.Button
Friend WithEvents b_add As System.Windows.Forms.Button
- Friend WithEvents pnl_object_list As System.Windows.Forms.Panel
- Friend WithEvents tb_object_list As System.Windows.Forms.TextBox
Friend WithEvents b_apply As System.Windows.Forms.Button
Friend WithEvents tc_settings As System.Windows.Forms.TabControl
Friend WithEvents tp_selection As System.Windows.Forms.TabPage
@@ -1478,19 +1321,9 @@ Partial Class MPSync_settings
Friend WithEvents rb_timestamp As System.Windows.Forms.RadioButton
Friend WithEvents rb_triggers As System.Windows.Forms.RadioButton
Friend WithEvents tp_configuration As System.Windows.Forms.TabPage
- Friend WithEvents Panel6 As System.Windows.Forms.Panel
- Friend WithEvents rb_process As System.Windows.Forms.RadioButton
- Friend WithEvents rb_normal As System.Windows.Forms.RadioButton
Friend WithEvents Panel2 As System.Windows.Forms.Panel
Friend WithEvents cb_debug As System.Windows.Forms.CheckBox
- Friend WithEvents tp_process As System.Windows.Forms.TabPage
- Friend WithEvents tb_processstatus As System.Windows.Forms.TextBox
- Friend WithEvents Label7 As System.Windows.Forms.Label
- Friend WithEvents b_processstart As System.Windows.Forms.Button
- Friend WithEvents b_processauto As System.Windows.Forms.Button
- Friend WithEvents b_processstop As System.Windows.Forms.Button
Friend WithEvents cb_vacuum As System.Windows.Forms.CheckBox
- Friend WithEvents b_removeautostart As System.Windows.Forms.Button
Friend WithEvents tt_folders_md5 As System.Windows.Forms.ToolTip
Friend WithEvents cb_folders_crc32 As System.Windows.Forms.CheckBox
Friend WithEvents cb_folders_md5 As System.Windows.Forms.CheckBox
diff --git a/MPSync/MPSync/MPSync_settings.vb b/MPSync/MPSync/MPSync_settings.vb
index d4067ea..503da52 100644
--- a/MPSync/MPSync/MPSync_settings.vb
+++ b/MPSync/MPSync/MPSync_settings.vb
@@ -1,11 +1,12 @@
Imports MediaPortal.Configuration
+Imports System.Reflection
Imports MediaPortal.GUI.Library
Imports System.Xml
Public Class MPSync_settings
- Dim _curversion As String = "1.0.0.22"
+ Dim _curversion As String = Assembly.GetExecutingAssembly().GetName().Version.ToString()
Dim i_direction(2) As Image
Dim i_method(2), _databases, _folders, _watched_dbs, _object_list, _db_objects, _version, _session, _sync_type As String
Dim _db_sync_method, _folders_sync_method As Integer
@@ -26,22 +27,24 @@ Public Class MPSync_settings
Public i_watched(3) As Watched
- Public WriteOnly Property SetWatched
- Set(value)
- i_watched(0).database = "movingpictures.db3"
- i_watched(0).tables = {"user_movie_settings", "movie_info"}
- i_watched(1).database = "MusicDatabaseV13.db3"
- i_watched(1).tables = {"tracks"}
- i_watched(2).database = "TVSeriesDatabase4.db3"
- i_watched(2).tables = {"local_episodes", "online_episodes", "online_series", "season"}
- i_watched(3).database = "VideoDatabaseV5.db3"
- i_watched(3).tables = {"bookmark", "movie", "resume"}
- End Set
- End Property
+ Public Shared Function GetConfigFileName() As String
+ Return Config.GetFile(Config.Dir.Config, "MPSync.xml")
+ End Function
+
+ Public Sub SetWatched()
+ i_watched(0).database = "movingpictures.db3"
+ i_watched(0).tables = {"user_movie_settings", "movie_info"}
+ i_watched(1).database = "MusicDatabaseV13.db3"
+ i_watched(1).tables = {"tracks"}
+ i_watched(2).database = "TVSeriesDatabase4.db3"
+ i_watched(2).tables = {"local_episodes", "online_episodes", "online_series", "season"}
+ i_watched(3).database = "VideoDatabaseV5.db3"
+ i_watched(3).tables = {"bookmark", "movie", "resume"}
+ End Sub
- Public ReadOnly Property getDatabase As Array
+ Public ReadOnly Property getDatabase As String()
Get
- If i_watched(0).database = Nothing Then SetWatched = Nothing
+ If i_watched(0).database = Nothing Then SetWatched()
Dim database(UBound(i_watched)) As String
For x As Integer = 0 To UBound(i_watched)
database(x) = i_watched(x).database
@@ -52,7 +55,7 @@ Public Class MPSync_settings
Public ReadOnly Property getTables(ByVal database As String) As Array
Get
- If i_watched(0).database = Nothing Then SetWatched = Nothing
+ If i_watched(0).database = Nothing Then SetWatched()
Dim y As Integer = Array.IndexOf(getDatabase, database)
If y <> -1 Then
Dim tables(UBound(i_watched(y).tables)) As String
@@ -72,8 +75,8 @@ Public Class MPSync_settings
If Microsoft.VisualBasic.Right(object_list, 1) = "|" Then object_list = Microsoft.VisualBasic.Left(object_list, Len(object_list) - 1)
- Dim item As Array
- Dim list As Array = Split(object_list, "|")
+ Dim item As String()
+ Dim list As String() = Split(object_list, "|")
For Each obj As String In list
@@ -133,7 +136,7 @@ Public Class MPSync_settings
End If
b_sync_now.Enabled = True
Catch ex As Exception
- MPSync_process.logStats("MPSync: " & ex.Message, "ERROR")
+ MPSync_process.logStats("MPSync: " & ex.Message, MessageType.ERR)
b_sync_now.Enabled = False
End Try
@@ -158,18 +161,38 @@ Public Class MPSync_settings
End Sub
+ Public Shared Sub MergeSettings()
+ Dim fileName As String = Config.GetFile(Config.Dir.Config, "MPSync_THUMBS.xml")
+ If IO.File.Exists(fileName) Then
+ Using XMLreader As MediaPortal.Profile.Settings = New MediaPortal.Profile.Settings(fileName),
+ XmlWriter As MediaPortal.Profile.Settings = New MediaPortal.Profile.Settings(GetConfigFileName)
+
+
+ XmlWriter.SetValue("Thumbs Path", "direction", XMLreader.GetValueAsInt("Path", "direction", 1))
+ XmlWriter.SetValue("Thumbs Path", "client", XMLreader.GetValueAsString("Path", "client", Nothing))
+ XmlWriter.SetValue("Thumbs Path", "server", XMLreader.GetValueAsString("Path", "server", Nothing))
+ XmlWriter.SetValue("Thumbs Path", "method", XMLreader.GetValueAsInt("Path", "method", 0))
+ XmlWriter.SetValue("Thumbs Settings", "folders", XMLreader.GetValueAsString("Settings", "folders", Nothing))
+ XmlWriter.SetValue("Thumbs Settings", "pause while playing", XMLreader.GetValueAsBool("Settings", "pause while playing", False))
+ XmlWriter.SetValue("Thumbs Settings", "use MD5", XMLreader.GetValueAsBool("Settings", "use MD5", False))
+ XmlWriter.SetValue("Thumbs Settings", "use CRC32", XMLreader.GetValueAsBool("Settings", "use CRC32", False))
+ End Using
+ MediaPortal.Profile.Settings.SaveCache()
+ IO.File.Delete(fileName)
+ End If
+ End Sub
Private Sub getObjectSettings(ByVal objsetting As String)
- Using XMLreader As MediaPortal.Profile.Settings = New MediaPortal.Profile.Settings(Config.GetFile(Config.Dir.Config, "MPSync_" & UCase(objsetting) & ".xml"))
+ Using XMLreader As MediaPortal.Profile.Settings = New MediaPortal.Profile.Settings(MPSync_settings.GetConfigFileName)
- _clicks_folders = XMLreader.GetValueAsInt("Path", "direction", 1)
- tb_folders_client_path.Text = XMLreader.GetValueAsString("Path", "client", Nothing)
- tb_folders_server_path.Text = XMLreader.GetValueAsString("Path", "server", Nothing)
- _folders_sync_method = XMLreader.GetValueAsInt("Path", "method", 0)
- _folders = XMLreader.GetValueAsString("Settings", "folders", Nothing)
- cb_folders_pause.Checked = XMLreader.GetValueAsString("Settings", "pause while playing", False)
- cb_folders_md5.Checked = XMLreader.GetValueAsString("Settings", "use MD5", False)
- cb_folders_crc32.Checked = XMLreader.GetValueAsString("Settings", "use CRC32", False)
+ _clicks_folders = XMLreader.GetValueAsInt(objsetting & " Path", "direction", 1)
+ tb_folders_client_path.Text = XMLreader.GetValueAsString(objsetting & " Path", "client", Nothing)
+ tb_folders_server_path.Text = XMLreader.GetValueAsString(objsetting & " Path", "server", Nothing)
+ _folders_sync_method = XMLreader.GetValueAsInt(objsetting & " Path", "method", 0)
+ _folders = XMLreader.GetValueAsString(objsetting & " Settings", "folders", Nothing)
+ cb_folders_pause.Checked = CBool(XMLreader.GetValueAsString(objsetting & " Settings", "pause while playing", False.ToString()))
+ cb_folders_md5.Checked = CBool(XMLreader.GetValueAsString(objsetting & " Settings", "use MD5", False.ToString()))
+ cb_folders_crc32.Checked = CBool(XMLreader.GetValueAsString(objsetting & " Settings", "use CRC32", False.ToString()))
End Using
@@ -191,13 +214,6 @@ Public Class MPSync_settings
Private Sub setObjectSettings(ByVal objsetting As String)
- If _version <> _curversion Then
- If IO.File.Exists(Config.GetFile(Config.Dir.Config, "MPSync_" & UCase(objsetting) & ".xml")) Then
- IO.File.Delete(Config.GetFile(Config.Dir.Config, "MPSync_" & UCase(objsetting) & ".xml"))
- MediaPortal.Profile.Settings.ClearCache()
- End If
- End If
-
_folders = Nothing
If rb_specific_folders.Checked Then
@@ -206,17 +222,17 @@ Public Class MPSync_settings
Next
End If
- Using XMLwriter As MediaPortal.Profile.Settings = New MediaPortal.Profile.Settings(Config.GetFile(Config.Dir.Config, "MPSync_" & UCase(objsetting) & ".xml"))
+ Using XMLwriter As MediaPortal.Profile.Settings = New MediaPortal.Profile.Settings(MPSync_settings.GetConfigFileName)
- XMLwriter.SetValue("Path", "client", tb_folders_client_path.Text)
- XMLwriter.SetValue("Path", "server", tb_folders_server_path.Text)
- XMLwriter.SetValue("Path", "direction", _clicks_folders.ToString)
- XMLwriter.SetValue("Path", "method", Array.IndexOf(i_method, cb_folders_sync_method.Text))
+ XMLwriter.SetValue(objsetting & " Path", "client", tb_folders_client_path.Text)
+ XMLwriter.SetValue(objsetting & " Path", "server", tb_folders_server_path.Text)
+ XMLwriter.SetValue(objsetting & " Path", "direction", _clicks_folders.ToString)
+ XMLwriter.SetValue(objsetting & " Path", "method", Array.IndexOf(i_method, cb_folders_sync_method.Text))
- XMLwriter.SetValue("Settings", "pause while playing", cb_folders_pause.Checked)
- XMLwriter.SetValue("Settings", "use MD5", cb_folders_md5.Checked)
- XMLwriter.SetValue("Settings", "use CRC32", cb_folders_crc32.Checked)
- XMLwriter.SetValue("Settings", "folders", _folders)
+ XMLwriter.SetValue(objsetting & " Settings", "pause while playing", cb_folders_pause.Checked)
+ XMLwriter.SetValue(objsetting & " Settings", "use MD5", cb_folders_md5.Checked)
+ XMLwriter.SetValue(objsetting & " Settings", "use CRC32", cb_folders_crc32.Checked)
+ XMLwriter.SetValue(objsetting & " Settings", "folders", _folders)
End Using
@@ -224,25 +240,15 @@ Public Class MPSync_settings
End Sub
- Private Sub deleteObjectSettings(ByVal objsetting As String)
-
- If IO.File.Exists(Config.GetFile(Config.Dir.Config, "MPSync_" & UCase(objsetting) & ".xml")) Then
- IO.File.Delete(Config.GetFile(Config.Dir.Config, "MPSync_" & UCase(objsetting) & ".xml"))
- End If
-
- MediaPortal.Profile.Settings.ClearCache()
-
- End Sub
-
Private Sub getSettings()
Dim object_list As String = Nothing
- If IO.File.Exists(Config.GetFile(Config.Dir.Config, "MPSync.xml")) Then
+ If IO.File.Exists(MPSync_settings.GetConfigFileName) Then
' get settings from XML configuration file
- Using XMLreader As MediaPortal.Profile.Settings = New MediaPortal.Profile.Settings(Config.GetFile(Config.Dir.Config, "MPSync.xml"))
+ Using XMLreader As MediaPortal.Profile.Settings = New MediaPortal.Profile.Settings(MPSync_settings.GetConfigFileName)
_version = XMLreader.GetValueAsString("Plugin", "version", "0")
cb_databases.Checked = XMLreader.GetValueAsBool("Plugin", "databases", True)
@@ -308,18 +314,6 @@ Public Class MPSync_settings
populate_watchedchecklistbox(clb_watched)
populate_objectcheckedlistbox(clb_object_list, object_list)
- 'check if process is running
- 'If isProcessRunning() Then tb_processstatus.Text = "RUNNING" Else tb_processstatus.Text = "STOPPED"
-
- 'check if process is set to autostart
- 'b_processauto.Enabled = Not isProcessAuto()
- 'b_removeautostart.Enabled = Not b_processauto.Enabled
-
- 'rb_normal.Checked = b_processauto.Enabled
- 'rb_process.Checked = Not b_processauto.Enabled
-
- If b_processauto.Enabled And tc_settings.TabPages.Contains(tp_process) Then tc_settings.TabPages.Remove(tp_process)
-
End Sub
Private Sub setSettings()
@@ -374,7 +368,7 @@ Public Class MPSync_settings
_object_list += clb_object_list.GetItemText(clb_object_list.Items(x)) & "¬" & clb_object_list.GetItemChecked(x) & "|"
Next
- Using XMLwriter As MediaPortal.Profile.Settings = New MediaPortal.Profile.Settings(Config.GetFile(Config.Dir.Config, "MPSync.xml"))
+ Using XMLwriter As MediaPortal.Profile.Settings = New MediaPortal.Profile.Settings(MPSync_settings.GetConfigFileName)
XMLwriter.SetValue("Plugin", "version", _curversion)
XMLwriter.SetValueAsBool("Plugin", "databases", cb_databases.Checked)
@@ -585,7 +579,7 @@ Public Class MPSync_settings
clb_objects.Enabled = rb_specific_folders.Checked
End Sub
- Private Sub tb_object_list_KeyPress(sender As Object, e As System.Windows.Forms.KeyPressEventArgs) Handles tb_object_list.KeyPress
+ Private Sub tb_object_list_KeyPress(sender As Object, e As System.Windows.Forms.KeyPressEventArgs)
If e.KeyChar = Chr(13) Then
SendKeys.Send(vbTab)
@@ -595,20 +589,11 @@ Public Class MPSync_settings
Private Sub b_add_Click(sender As Object, e As EventArgs) Handles b_add.Click
- pnl_object_list.Visible = True
-
- tb_object_list.Text = Nothing
- tb_object_list.Focus()
-
- Do While tb_object_list.Focused
- Threading.Thread.Sleep(50)
- Application.DoEvents()
- Loop
-
- clb_object_list.Items.Add(tb_object_list.Text, False)
- clb_object_list.TopIndex = clb_object_list.Items.Count - 1
- tb_object_list.Text = Nothing
- pnl_object_list.Visible = False
+ Dim s As String = InputBox("Name:", "Add folder item")
+ If s <> "" Then
+ clb_object_list.Items.Add(s, False)
+ clb_object_list.TopIndex = clb_object_list.Items.Count - 1
+ End If
End Sub
@@ -616,12 +601,14 @@ Public Class MPSync_settings
If MsgBox("Are you sure?", MsgBoxStyle.YesNo, "Delete") = MsgBoxResult.Yes Then
- deleteObjectSettings(clb_object_list.SelectedItem)
clb_object_list.Items.Remove(clb_object_list.SelectedItem)
clb_object_list.SelectedItem = Nothing
- b_delete.Visible = False
- b_edit.Visible = False
+ b_delete.Enabled = False
+ b_edit.Enabled = False
+
+ tc_objects.TabPages.Remove(tp_paths)
+ tc_objects.TabPages.Remove(tp_advancedsettings)
End If
@@ -656,9 +643,9 @@ Public Class MPSync_settings
Private Sub clb_object_list_SelectedIndexChanged(sender As Object, e As EventArgs) Handles clb_object_list.SelectedIndexChanged
- If clb_object_list.SelectedItem <> Nothing Then
- b_delete.Visible = True
- b_edit.Visible = True
+ If clb_object_list.SelectedItem IsNot Nothing Then
+ b_delete.Enabled = True
+ b_edit.Enabled = True
End If
End Sub
@@ -687,21 +674,6 @@ Public Class MPSync_settings
clb_watched.Enabled = rb_w_specific.Checked
End Sub
- Private Sub rb_process_CheckedChanged(sender As Object, e As EventArgs) Handles rb_process.CheckedChanged
- b_sync_now.Enabled = Not rb_process.Checked
-
- If rb_process.Checked Then
- If Not tc_settings.TabPages.Contains(tp_process) Then tc_settings.TabPages.Add(tp_process)
- Else
- If tc_settings.TabPages.Contains(tp_process) Then tc_settings.TabPages.Remove(tp_process)
- End If
- End Sub
-
- Private Sub rb_normal_CheckedChanged(sender As Object, e As EventArgs) Handles rb_normal.CheckedChanged
- If isProcessAuto() Then b_removeautostart_Click(Nothing, Nothing)
- If isProcessRunning() Then b_processstop_Click(Nothing, Nothing)
- End Sub
-
Private Sub cb_folders_md5_CheckedChanged(sender As Object, e As EventArgs) Handles cb_folders_md5.CheckedChanged
If cb_folders_md5.Checked Then cb_folders_crc32.Checked = False
End Sub
@@ -710,47 +682,6 @@ Public Class MPSync_settings
If cb_folders_crc32.Checked Then cb_folders_md5.Checked = False
End Sub
- Private Function isProcessRunning(Optional ByVal wait As Boolean = True) As Boolean
-
- If wait Then
- Me.Cursor = Cursors.WaitCursor
- MPSync_process.wait(3, False)
- Me.Cursor = Cursors.Default
- End If
-
- Try
- For Each clsProcess As Process In Process.GetProcesses()
- If clsProcess.ProcessName = "MPSync_Process" Then
- Return True
- End If
- Next
- Catch ex As Exception
- End Try
-
- Return False
-
- End Function
-
- Private Sub b_processstart_Click(sender As Object, e As EventArgs) Handles b_processstart.Click
-
- If isProcessRunning() Then Exit Sub
-
- Dim process As New Process()
-
- process.StartInfo.UseShellExecute = True
- process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
- process.StartInfo.FileName = Config.GetFile(Config.Dir.Base, "MPSync_Process.exe")
-
- Try
- process.Start()
- Catch ex As Exception
- MsgBox("MPSync Process not started", MsgBoxStyle.OkOnly, "Start Process")
- End Try
-
- If isProcessRunning() Then tb_processstatus.Text = "RUNNING" Else tb_processstatus.Text = "STOPPED"
-
- End Sub
-
Private Sub nud_max_streams_ValueChanged(sender As Object, e As EventArgs) Handles nud_max_DB_streams.ValueChanged
If nud_max_DB_streams.Value = 0 Then max_DB_threads = -1 Else max_DB_threads = nud_max_DB_streams.Value
End Sub
@@ -759,63 +690,6 @@ Public Class MPSync_settings
If nud_max_folder_streams.Value = 0 Then max_folder_threads = -1 Else max_folder_threads = nud_max_folder_streams.Value
End Sub
- Private Sub b_processstop_Click(sender As Object, e As EventArgs) Handles b_processstop.Click
-
- Dim ObjW As Object
- Dim ObjP As Object
- Dim ObjP2 As Object
-
- Try
- ObjW = GetObject("winmgmts://.")
- ObjP = ObjW.execquery("Select * from win32_Process")
- For Each ObjP2 In ObjP
- If ObjP2.Name = "MPSync_Process.exe" Then ObjP2.Terminate()
- Next
- Catch ex As Exception
- MsgBox("MPSync Process not stopped", MsgBoxStyle.OkOnly, "Stop Process")
- End Try
-
- If isProcessRunning() Then tb_processstatus.Text = "RUNNING" Else tb_processstatus.Text = "STOPPED"
-
- End Sub
-
- Private Function isProcessAuto() As Boolean
-
- Dim status As Boolean = False
- Dim regKey As Microsoft.Win32.RegistryKey
-
- regKey = Microsoft.Win32.Registry.CurrentUser.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Run", True)
- status = Not (regKey.GetValue("MPSync_Process") = Nothing)
- regKey.Close()
-
- Return status
-
- End Function
-
- Private Sub b_processauto_Click(sender As Object, e As EventArgs) Handles b_processauto.Click
- Dim regKey As Microsoft.Win32.RegistryKey
- regKey = Microsoft.Win32.Registry.CurrentUser.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Run", True)
- regKey.SetValue("MPSync_Process", """" & Config.GetFile(Config.Dir.Base, "MPSync_Process.exe") & """")
- regKey.Close()
- b_processauto.Enabled = False
- b_removeautostart.Enabled = True
- End Sub
-
- Private Sub b_removeautostart_Click(sender As Object, e As EventArgs) Handles b_removeautostart.Click
- Dim regKey As Microsoft.Win32.RegistryKey
- regKey = Microsoft.Win32.Registry.CurrentUser.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Run", True)
- regKey.DeleteValue("MPSync_Process", False)
- regKey.Close()
- b_processauto.Enabled = True
- b_removeautostart.Enabled = False
- End Sub
-
- Private Sub tb_servicestatus_TextChanged(sender As Object, e As EventArgs) Handles tb_processstatus.TextChanged
- b_processstart.Enabled = (tb_processstatus.Text.Contains("STOP") Or tb_processstatus.Text = "N/A")
- b_processstop.Enabled = (Not tb_processstatus.Text.Contains("STOP") And tb_processstatus.Text <> "N/A")
- If b_processstop.Enabled Then SyncNowStatus()
- End Sub
-
Private Sub b_sync_now_Click(sender As Object, e As EventArgs) Handles b_sync_now.Click
setSettings()
@@ -891,7 +765,7 @@ Public Class MPSync_settings
Private Sub MPSync_settings_FormClosed(sender As Object, e As EventArgs) Handles MyBase.FormClosed
- Using XMLwriter As MediaPortal.Profile.Settings = New MediaPortal.Profile.Settings(Config.GetFile(Config.Dir.Config, "MPSync.xml"))
+ Using XMLwriter As MediaPortal.Profile.Settings = New MediaPortal.Profile.Settings(MPSync_settings.GetConfigFileName)
XMLwriter.SetValue("Plugin", "version", _curversion)
End Using
@@ -932,4 +806,4 @@ Public Class MPSync_settings
End Sub
-End Class
\ No newline at end of file
+End Class
diff --git a/MPSync/MPSync/My Project/AssemblyInfo.vb b/MPSync/MPSync/My Project/AssemblyInfo.vb
index 3f9dd5e..100155f 100644
--- a/MPSync/MPSync/My Project/AssemblyInfo.vb
+++ b/MPSync/MPSync/My Project/AssemblyInfo.vb
@@ -13,7 +13,7 @@ Imports MediaPortal.Common.Utils
-
+
@@ -37,5 +37,5 @@ Imports MediaPortal.Common.Utils
' by using the '*' as shown below:
'
-
-
+
+
diff --git a/MPSync/MPSync/bin/Debug/DirectoryEnumerator.dll b/MPSync/MPSync/bin/Debug/DirectoryEnumerator.dll
deleted file mode 100644
index 7285fa8..0000000
Binary files a/MPSync/MPSync/bin/Debug/DirectoryEnumerator.dll and /dev/null differ
diff --git a/MPSync/MPSync/bin/Debug/DirectoryEnumerator.pdb b/MPSync/MPSync/bin/Debug/DirectoryEnumerator.pdb
deleted file mode 100644
index 80a1749..0000000
Binary files a/MPSync/MPSync/bin/Debug/DirectoryEnumerator.pdb and /dev/null differ
diff --git a/MPSync/MPSync/bin/Debug/MPSync.exe b/MPSync/MPSync/bin/Debug/MPSync.exe
deleted file mode 100644
index f196cc6..0000000
Binary files a/MPSync/MPSync/bin/Debug/MPSync.exe and /dev/null differ
diff --git a/MPSync/MPSync/bin/Debug/MPSync.exe.config b/MPSync/MPSync/bin/Debug/MPSync.exe.config
deleted file mode 100644
index e8a46ec..0000000
--- a/MPSync/MPSync/bin/Debug/MPSync.exe.config
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/MPSync/MPSync/bin/Debug/MPSync.pdb b/MPSync/MPSync/bin/Debug/MPSync.pdb
deleted file mode 100644
index 0906c1d..0000000
Binary files a/MPSync/MPSync/bin/Debug/MPSync.pdb and /dev/null differ
diff --git a/MPSync/MPSync/bin/Debug/MPSync.xml b/MPSync/MPSync/bin/Debug/MPSync.xml
deleted file mode 100644
index a1bc859..0000000
--- a/MPSync/MPSync/bin/Debug/MPSync.xml
+++ /dev/null
@@ -1,89 +0,0 @@
-
-
-
-
-MPSync
-
-
-
-
-
- A strongly-typed resource class, for looking up localized strings, etc.
-
-
-
-
- Returns the cached ResourceManager instance used by this class.
-
-
-
-
- Overrides the current thread's CurrentUICulture property for all
- resource lookups using this strongly typed resource class.
-
-
-
-
- Looks up a localized resource of type System.Drawing.Bitmap.
-
-
-
-
- Looks up a localized resource of type System.Drawing.Bitmap.
-
-
-
-
- Looks up a localized resource of type System.Drawing.Bitmap.
-
-
-
-
- Looks up a localized resource of type System.Drawing.Bitmap.
-
-
-
-
- Looks up a localized resource of type System.Drawing.Bitmap.
-
-
-
-
- Looks up a localized resource of type System.Drawing.Bitmap.
-
-
-
-
- Looks up a localized resource of type System.Drawing.Bitmap.
-
-
-
-
- Looks up a localized resource of type System.Drawing.Bitmap.
-
-
-
-
- Looks up a localized resource of type System.Drawing.Bitmap.
-
-
-
-
- Looks up a localized resource of type System.Drawing.Bitmap.
-
-
-
-
- If the plugin should have it's own button on the main menu of MediaPortal then it
- should return true to this method, otherwise if it should not be on home
- it should return false
-
- text the button should have
- image for the button, or empty for default
- image for the button, or empty for default
- subpicture for the button or empty for none
- true : plugin needs it's own button on home
- false : plugin does not need it's own button on home
-
-
-
diff --git a/MPSync/MPSync/bin/Release/Common.Utils.dll b/MPSync/MPSync/bin/Release/Common.Utils.dll
deleted file mode 100644
index 73516a1..0000000
Binary files a/MPSync/MPSync/bin/Release/Common.Utils.dll and /dev/null differ
diff --git a/MPSync/MPSync/bin/Release/Core.dll b/MPSync/MPSync/bin/Release/Core.dll
deleted file mode 100644
index 6e311a8..0000000
Binary files a/MPSync/MPSync/bin/Release/Core.dll and /dev/null differ
diff --git a/MPSync/MPSync/bin/Release/MPSync.dll b/MPSync/MPSync/bin/Release/MPSync.dll
deleted file mode 100644
index c1dd389..0000000
Binary files a/MPSync/MPSync/bin/Release/MPSync.dll and /dev/null differ
diff --git a/MPSync/MPSync/bin/Release/MPSync.dll.config b/MPSync/MPSync/bin/Release/MPSync.dll.config
deleted file mode 100644
index e8a46ec..0000000
--- a/MPSync/MPSync/bin/Release/MPSync.dll.config
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/MPSync/MPSync/bin/Release/MPSync.pdb b/MPSync/MPSync/bin/Release/MPSync.pdb
deleted file mode 100644
index 119de00..0000000
Binary files a/MPSync/MPSync/bin/Release/MPSync.pdb and /dev/null differ
diff --git a/MPSync/MPSync/bin/Release/MPSync.xml b/MPSync/MPSync/bin/Release/MPSync.xml
deleted file mode 100644
index a1bc859..0000000
--- a/MPSync/MPSync/bin/Release/MPSync.xml
+++ /dev/null
@@ -1,89 +0,0 @@
-
-
-
-
-MPSync
-
-
-
-
-
- A strongly-typed resource class, for looking up localized strings, etc.
-
-
-
-
- Returns the cached ResourceManager instance used by this class.
-
-
-
-
- Overrides the current thread's CurrentUICulture property for all
- resource lookups using this strongly typed resource class.
-
-
-
-
- Looks up a localized resource of type System.Drawing.Bitmap.
-
-
-
-
- Looks up a localized resource of type System.Drawing.Bitmap.
-
-
-
-
- Looks up a localized resource of type System.Drawing.Bitmap.
-
-
-
-
- Looks up a localized resource of type System.Drawing.Bitmap.
-
-
-
-
- Looks up a localized resource of type System.Drawing.Bitmap.
-
-
-
-
- Looks up a localized resource of type System.Drawing.Bitmap.
-
-
-
-
- Looks up a localized resource of type System.Drawing.Bitmap.
-
-
-
-
- Looks up a localized resource of type System.Drawing.Bitmap.
-
-
-
-
- Looks up a localized resource of type System.Drawing.Bitmap.
-
-
-
-
- Looks up a localized resource of type System.Drawing.Bitmap.
-
-
-
-
- If the plugin should have it's own button on the main menu of MediaPortal then it
- should return true to this method, otherwise if it should not be on home
- it should return false
-
- text the button should have
- image for the button, or empty for default
- image for the button, or empty for default
- subpicture for the button or empty for none
- true : plugin needs it's own button on home
- false : plugin does not need it's own button on home
-
-
-
diff --git a/MPSync/MPSync/bin/Release/MPSync_Process.exe b/MPSync/MPSync/bin/Release/MPSync_Process.exe
deleted file mode 100644
index a2fb586..0000000
Binary files a/MPSync/MPSync/bin/Release/MPSync_Process.exe and /dev/null differ
diff --git a/MPSync/MPSync/bin/Release/System.Data.SQLite.dll b/MPSync/MPSync/bin/Release/System.Data.SQLite.dll
deleted file mode 100644
index f72b637..0000000
Binary files a/MPSync/MPSync/bin/Release/System.Data.SQLite.dll and /dev/null differ
diff --git a/MPSync/MPSync/bin/Release/Utils.dll b/MPSync/MPSync/bin/Release/Utils.dll
deleted file mode 100644
index f691d01..0000000
Binary files a/MPSync/MPSync/bin/Release/Utils.dll and /dev/null differ
diff --git a/MPSync/MPSync/bin/Release/log4net.dll b/MPSync/MPSync/bin/Release/log4net.dll
deleted file mode 100644
index 06e778c..0000000
Binary files a/MPSync/MPSync/bin/Release/log4net.dll and /dev/null differ
diff --git a/MPSync/MPSync/bin/Release/plugins/process/MPSync.dll b/MPSync/MPSync/bin/Release/plugins/process/MPSync.dll
deleted file mode 100644
index 5b72516..0000000
Binary files a/MPSync/MPSync/bin/Release/plugins/process/MPSync.dll and /dev/null differ
diff --git a/MPSync/MPSync/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache b/MPSync/MPSync/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache
deleted file mode 100644
index 8cb40ff..0000000
Binary files a/MPSync/MPSync/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache and /dev/null differ
diff --git a/MPSync/MPSync/obj/Release/MPSync.MPSync_settings.resources b/MPSync/MPSync/obj/Release/MPSync.MPSync_settings.resources
deleted file mode 100644
index 36e0f59..0000000
Binary files a/MPSync/MPSync/obj/Release/MPSync.MPSync_settings.resources and /dev/null differ
diff --git a/MPSync/MPSync/obj/Release/MPSync.Resources.resources b/MPSync/MPSync/obj/Release/MPSync.Resources.resources
deleted file mode 100644
index 2441416..0000000
Binary files a/MPSync/MPSync/obj/Release/MPSync.Resources.resources and /dev/null differ
diff --git a/MPSync/MPSync/obj/Release/MPSync.exe b/MPSync/MPSync/obj/Release/MPSync.exe
deleted file mode 100644
index a76473a..0000000
Binary files a/MPSync/MPSync/obj/Release/MPSync.exe and /dev/null differ
diff --git a/MPSync/MPSync/obj/Release/MPSync.pdb b/MPSync/MPSync/obj/Release/MPSync.pdb
deleted file mode 100644
index 8e71e90..0000000
Binary files a/MPSync/MPSync/obj/Release/MPSync.pdb and /dev/null differ
diff --git a/MPSync/MPSync/obj/Release/MPSync.vbproj.FileListAbsolute.txt b/MPSync/MPSync/obj/Release/MPSync.vbproj.FileListAbsolute.txt
deleted file mode 100644
index d2aacd8..0000000
--- a/MPSync/MPSync/obj/Release/MPSync.vbproj.FileListAbsolute.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-E:\Rudolph\Documents\Visual Studio 2010\Projects\MPSync\MPSync\obj\Release\ResolveAssemblyReference.cache
-E:\Rudolph\Documents\Visual Studio 2010\Projects\MPSync\MPSync\obj\Release\MPSync.Resources.resources
-E:\Rudolph\Documents\Visual Studio 2010\Projects\MPSync\MPSync\obj\Release\MPSync.MPSync_settings.resources
-E:\Rudolph\Documents\Visual Studio 2010\Projects\MPSync\MPSync\obj\Release\ResGen.read.1.tlog
-E:\Rudolph\Documents\Visual Studio 2010\Projects\MPSync\MPSync\obj\Release\ResGen.write.1.tlog
-E:\Rudolph\Documents\Visual Studio 2010\Projects\MPSync\MPSync\bin\Release\MPSync.pdb
-E:\Rudolph\Documents\Visual Studio 2010\Projects\MPSync\MPSync\bin\Release\MPSync.xml
-E:\Rudolph\Documents\Visual Studio 2010\Projects\MPSync\MPSync\obj\Release\MPSync.xml
-E:\Rudolph\Documents\Visual Studio 2010\Projects\MPSync\MPSync\obj\Release\MPSync.pdb
-E:\Rudolph\Documents\Visual Studio 2010\Projects\MPSync\MPSync\bin\Release\MPSync.exe.config
-E:\Rudolph\Documents\Visual Studio 2010\Projects\MPSync\MPSync\bin\Release\MPSync.exe
-E:\Rudolph\Documents\Visual Studio 2010\Projects\MPSync\MPSync\obj\Release\MPSync.exe
-E:\Rudolph\Documents\Visual Studio 2010\Projects\MPSync\MPSync\bin\Release\System.Data.SQLite.dll
-E:\Rudolph\Documents\Visual Studio 2010\Projects\MPSync\MPSync\bin\Release\Common.Utils.dll
-E:\Rudolph\Documents\Visual Studio 2010\Projects\MPSync\MPSync\bin\Release\Core.dll
-E:\Rudolph\Documents\Visual Studio 2010\Projects\MPSync\MPSync\bin\Release\Utils.dll
-E:\Rudolph\Documents\Visual Studio 2010\Projects\MPSync\MPSync\bin\Release\Bass.Net.dll
-E:\Rudolph\Documents\Visual Studio 2010\Projects\MPSync\MPSync\bin\Release\DirectShowLib.dll
-E:\Rudolph\Documents\Visual Studio 2010\Projects\MPSync\MPSync\bin\Release\BassVisAPI.Net.dll
-E:\Rudolph\Documents\Visual Studio 2010\Projects\MPSync\MPSync\bin\Release\taglib-sharp.dll
-E:\Rudolph\Documents\Visual Studio 2010\Projects\MPSync\MPSync\bin\Release\AxInterop.WMPLib.dll
-E:\Rudolph\Documents\Visual Studio 2010\Projects\MPSync\MPSync\bin\Release\edtftpnet-1.2.2.dll
-E:\Rudolph\Documents\Visual Studio 2010\Projects\MPSync\MPSync\bin\Release\BassRegistration.dll
-E:\Rudolph\Documents\Visual Studio 2010\Projects\MPSync\MPSync\bin\Release\MediaPortal.Support.dll
-E:\Rudolph\Documents\Visual Studio 2010\Projects\MPSync\MPSync\bin\Release\Interop.WMPLib.dll
-E:\Rudolph\Documents\Visual Studio 2010\Projects\MPSync\MPSync\bin\Release\log4net.dll
-E:\Rudolph\Documents\Visual Studio 2010\Projects\MPSync\MPSync\bin\Release\Ionic.Zip.dll
diff --git a/MPSync/MPSync/obj/Release/MPSync.xml b/MPSync/MPSync/obj/Release/MPSync.xml
deleted file mode 100644
index 4143869..0000000
--- a/MPSync/MPSync/obj/Release/MPSync.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-
-
-
-
-MPSync
-
-
-
-
-
- Returns the cached ResourceManager instance used by this class.
-
-
-
- Overrides the current thread's CurrentUICulture property for all
- resource lookups using this strongly typed resource class.
-
-
-
- A strongly-typed resource class, for looking up localized strings, etc.
-
-
-
- If the plugin should have it's own button on the main menu of MediaPortal then it
- should return true to this method, otherwise if it should not be on home
- it should return false
-
- text the button should have
- image for the button, or empty for default
- image for the button, or empty for default
- subpicture for the button or empty for none
- true : plugin needs it's own button on home
- false : plugin does not need it's own button on home
-
-
-
\ No newline at end of file
diff --git a/MPSync/MPSync/obj/Release/ResGen.read.1.tlog b/MPSync/MPSync/obj/Release/ResGen.read.1.tlog
deleted file mode 100644
index b7d5ef7..0000000
Binary files a/MPSync/MPSync/obj/Release/ResGen.read.1.tlog and /dev/null differ
diff --git a/MPSync/MPSync/obj/Release/ResGen.write.1.tlog b/MPSync/MPSync/obj/Release/ResGen.write.1.tlog
deleted file mode 100644
index 2c4c4d5..0000000
Binary files a/MPSync/MPSync/obj/Release/ResGen.write.1.tlog and /dev/null differ
diff --git a/MPSync/MPSync/obj/Release/ResolveAssemblyReference.cache b/MPSync/MPSync/obj/Release/ResolveAssemblyReference.cache
deleted file mode 100644
index 9725538..0000000
Binary files a/MPSync/MPSync/obj/Release/ResolveAssemblyReference.cache and /dev/null differ
diff --git a/MPSync/MPSync/obj/Release/TempPE/My Project.Resources.Designer.vb.dll b/MPSync/MPSync/obj/Release/TempPE/My Project.Resources.Designer.vb.dll
deleted file mode 100644
index c4212fb..0000000
Binary files a/MPSync/MPSync/obj/Release/TempPE/My Project.Resources.Designer.vb.dll and /dev/null differ
diff --git a/MPSync/MPSync/obj/x86/Debug/DesignTimeResolveAssemblyReferences.cache b/MPSync/MPSync/obj/x86/Debug/DesignTimeResolveAssemblyReferences.cache
deleted file mode 100644
index a916a56..0000000
Binary files a/MPSync/MPSync/obj/x86/Debug/DesignTimeResolveAssemblyReferences.cache and /dev/null differ
diff --git a/MPSync/MPSync/obj/x86/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/MPSync/MPSync/obj/x86/Debug/DesignTimeResolveAssemblyReferencesInput.cache
deleted file mode 100644
index c1d53f6..0000000
Binary files a/MPSync/MPSync/obj/x86/Debug/DesignTimeResolveAssemblyReferencesInput.cache and /dev/null differ
diff --git a/MPSync/MPSync/obj/x86/Debug/MPSync.MPSync_settings.resources b/MPSync/MPSync/obj/x86/Debug/MPSync.MPSync_settings.resources
deleted file mode 100644
index 24ef3f9..0000000
Binary files a/MPSync/MPSync/obj/x86/Debug/MPSync.MPSync_settings.resources and /dev/null differ
diff --git a/MPSync/MPSync/obj/x86/Debug/MPSync.Resources.resources b/MPSync/MPSync/obj/x86/Debug/MPSync.Resources.resources
deleted file mode 100644
index 6ef25cf..0000000
Binary files a/MPSync/MPSync/obj/x86/Debug/MPSync.Resources.resources and /dev/null differ
diff --git a/MPSync/MPSync/obj/x86/Debug/MPSync.exe b/MPSync/MPSync/obj/x86/Debug/MPSync.exe
deleted file mode 100644
index f196cc6..0000000
Binary files a/MPSync/MPSync/obj/x86/Debug/MPSync.exe and /dev/null differ
diff --git a/MPSync/MPSync/obj/x86/Debug/MPSync.pdb b/MPSync/MPSync/obj/x86/Debug/MPSync.pdb
deleted file mode 100644
index 0906c1d..0000000
Binary files a/MPSync/MPSync/obj/x86/Debug/MPSync.pdb and /dev/null differ
diff --git a/MPSync/MPSync/obj/x86/Debug/MPSync.vbproj.FileListAbsolute.txt b/MPSync/MPSync/obj/x86/Debug/MPSync.vbproj.FileListAbsolute.txt
deleted file mode 100644
index ea4943a..0000000
--- a/MPSync/MPSync/obj/x86/Debug/MPSync.vbproj.FileListAbsolute.txt
+++ /dev/null
@@ -1,68 +0,0 @@
-E:\Users\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Debug\MPSync.exe.config
-E:\Users\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Debug\MPSync.exe
-E:\Users\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Debug\MPSync.pdb
-E:\Users\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Debug\MPSync.xml
-E:\Users\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\obj\x86\Debug\MPSync.Resources.resources
-E:\Users\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\obj\x86\Debug\MPSync.MPSync_settings.resources
-E:\Users\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\obj\x86\Debug\MPSync.vbproj.GenerateResource.cache
-E:\Users\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\obj\x86\Debug\MPSync.vbproj.CoreCompileInputs.cache
-E:\Users\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\obj\x86\Debug\MPSync.exe
-E:\Users\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\obj\x86\Debug\MPSync.xml
-E:\Users\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\obj\x86\Debug\MPSync.pdb
-E:\Users\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\obj\x86\Debug\MPSync.vbprojAssemblyReference.cache
-E:\Users\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Debug\Common.Utils.dll
-E:\Users\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Debug\Core.dll
-E:\Users\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Debug\MPSync_DirectoryEnumerator.dll
-E:\Users\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Debug\Utils.dll
-E:\Users\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Debug\log4net.dll
-E:\Users\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Debug\DirectShowLib.dll
-E:\Users\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Debug\CSScriptLibrary.dll
-E:\Users\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Debug\System.Management.Automation.dll
-E:\Users\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Debug\edtftpnet-1.2.2.dll
-E:\Users\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Debug\Microsoft.WindowsAPICodePack.Shell.dll
-E:\Users\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Debug\taglib-sharp.dll
-E:\Users\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Debug\CSCore.dll
-E:\Users\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Debug\Bass.Net.dll
-E:\Users\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Debug\AxInterop.WMPLib.dll
-E:\Users\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Debug\Interop.WMPLib.dll
-E:\Users\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Debug\MediaPortal.Support.dll
-E:\Users\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Debug\BassRegistration.dll
-E:\Users\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Debug\Microsoft.WindowsAPICodePack.dll
-E:\Users\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Debug\Ionic.Zip.dll
-E:\Users\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Debug\MPSync_DirectoryEnumerator.pdb
-E:\Users\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\obj\x86\Debug\MPSync.vbproj.CopyComplete
-E:\Users\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Debug\System.Data.SQLite.dll
-D:\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Debug\MPSync.exe.config
-D:\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Debug\MPSync.exe
-D:\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Debug\MPSync.pdb
-D:\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Debug\MPSync.xml
-D:\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Debug\Common.Utils.dll
-D:\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Debug\Core.dll
-D:\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Debug\MPSync_DirectoryEnumerator.dll
-D:\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Debug\System.Data.SQLite.dll
-D:\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Debug\Utils.dll
-D:\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Debug\log4net.dll
-D:\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Debug\DirectShowLib.dll
-D:\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Debug\CSScriptLibrary.dll
-D:\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Debug\System.Management.Automation.dll
-D:\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Debug\edtftpnet-1.2.2.dll
-D:\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Debug\Microsoft.WindowsAPICodePack.Shell.dll
-D:\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Debug\taglib-sharp.dll
-D:\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Debug\CSCore.dll
-D:\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Debug\Bass.Net.dll
-D:\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Debug\AxInterop.WMPLib.dll
-D:\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Debug\Interop.WMPLib.dll
-D:\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Debug\MediaPortal.Support.dll
-D:\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Debug\BassRegistration.dll
-D:\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Debug\Microsoft.WindowsAPICodePack.dll
-D:\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Debug\Ionic.Zip.dll
-D:\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Debug\MPSync_DirectoryEnumerator.pdb
-D:\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\obj\x86\Debug\MPSync.vbprojAssemblyReference.cache
-D:\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\obj\x86\Debug\MPSync.Resources.resources
-D:\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\obj\x86\Debug\MPSync.MPSync_settings.resources
-D:\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\obj\x86\Debug\MPSync.vbproj.GenerateResource.cache
-D:\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\obj\x86\Debug\MPSync.vbproj.CoreCompileInputs.cache
-D:\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\obj\x86\Debug\MPSync.vbproj.CopyComplete
-D:\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\obj\x86\Debug\MPSync.exe
-D:\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\obj\x86\Debug\MPSync.xml
-D:\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\obj\x86\Debug\MPSync.pdb
diff --git a/MPSync/MPSync/obj/x86/Debug/MPSync.xml b/MPSync/MPSync/obj/x86/Debug/MPSync.xml
deleted file mode 100644
index a1bc859..0000000
--- a/MPSync/MPSync/obj/x86/Debug/MPSync.xml
+++ /dev/null
@@ -1,89 +0,0 @@
-
-
-
-
-MPSync
-
-
-
-
-
- A strongly-typed resource class, for looking up localized strings, etc.
-
-
-
-
- Returns the cached ResourceManager instance used by this class.
-
-
-
-
- Overrides the current thread's CurrentUICulture property for all
- resource lookups using this strongly typed resource class.
-
-
-
-
- Looks up a localized resource of type System.Drawing.Bitmap.
-
-
-
-
- Looks up a localized resource of type System.Drawing.Bitmap.
-
-
-
-
- Looks up a localized resource of type System.Drawing.Bitmap.
-
-
-
-
- Looks up a localized resource of type System.Drawing.Bitmap.
-
-
-
-
- Looks up a localized resource of type System.Drawing.Bitmap.
-
-
-
-
- Looks up a localized resource of type System.Drawing.Bitmap.
-
-
-
-
- Looks up a localized resource of type System.Drawing.Bitmap.
-
-
-
-
- Looks up a localized resource of type System.Drawing.Bitmap.
-
-
-
-
- Looks up a localized resource of type System.Drawing.Bitmap.
-
-
-
-
- Looks up a localized resource of type System.Drawing.Bitmap.
-
-
-
-
- If the plugin should have it's own button on the main menu of MediaPortal then it
- should return true to this method, otherwise if it should not be on home
- it should return false
-
- text the button should have
- image for the button, or empty for default
- image for the button, or empty for default
- subpicture for the button or empty for none
- true : plugin needs it's own button on home
- false : plugin does not need it's own button on home
-
-
-
diff --git a/MPSync/MPSync/obj/x86/Debug/ResGen.read.1.tlog b/MPSync/MPSync/obj/x86/Debug/ResGen.read.1.tlog
deleted file mode 100644
index 70db8a6..0000000
Binary files a/MPSync/MPSync/obj/x86/Debug/ResGen.read.1.tlog and /dev/null differ
diff --git a/MPSync/MPSync/obj/x86/Debug/ResGen.write.1.tlog b/MPSync/MPSync/obj/x86/Debug/ResGen.write.1.tlog
deleted file mode 100644
index 1a642de..0000000
Binary files a/MPSync/MPSync/obj/x86/Debug/ResGen.write.1.tlog and /dev/null differ
diff --git a/MPSync/MPSync/obj/x86/Debug/ResolveAssemblyReference.cache b/MPSync/MPSync/obj/x86/Debug/ResolveAssemblyReference.cache
deleted file mode 100644
index e48ae10..0000000
Binary files a/MPSync/MPSync/obj/x86/Debug/ResolveAssemblyReference.cache and /dev/null differ
diff --git a/MPSync/MPSync/obj/x86/Debug/TempPE/My Project.Resources.Designer.vb.dll b/MPSync/MPSync/obj/x86/Debug/TempPE/My Project.Resources.Designer.vb.dll
deleted file mode 100644
index e7893ea..0000000
Binary files a/MPSync/MPSync/obj/x86/Debug/TempPE/My Project.Resources.Designer.vb.dll and /dev/null differ
diff --git a/MPSync/MPSync/obj/x86/Release/DesignTimeResolveAssemblyReferences.cache b/MPSync/MPSync/obj/x86/Release/DesignTimeResolveAssemblyReferences.cache
deleted file mode 100644
index fe5731f..0000000
Binary files a/MPSync/MPSync/obj/x86/Release/DesignTimeResolveAssemblyReferences.cache and /dev/null differ
diff --git a/MPSync/MPSync/obj/x86/Release/DesignTimeResolveAssemblyReferencesInput.cache b/MPSync/MPSync/obj/x86/Release/DesignTimeResolveAssemblyReferencesInput.cache
deleted file mode 100644
index dd6bf47..0000000
Binary files a/MPSync/MPSync/obj/x86/Release/DesignTimeResolveAssemblyReferencesInput.cache and /dev/null differ
diff --git a/MPSync/MPSync/obj/x86/Release/GenerateResource.read.1.tlog b/MPSync/MPSync/obj/x86/Release/GenerateResource.read.1.tlog
deleted file mode 100644
index 26c1cea..0000000
Binary files a/MPSync/MPSync/obj/x86/Release/GenerateResource.read.1.tlog and /dev/null differ
diff --git a/MPSync/MPSync/obj/x86/Release/GenerateResource.write.1.tlog b/MPSync/MPSync/obj/x86/Release/GenerateResource.write.1.tlog
deleted file mode 100644
index c61a23b..0000000
Binary files a/MPSync/MPSync/obj/x86/Release/GenerateResource.write.1.tlog and /dev/null differ
diff --git a/MPSync/MPSync/obj/x86/Release/MPSync.MPSync_settings.resources b/MPSync/MPSync/obj/x86/Release/MPSync.MPSync_settings.resources
deleted file mode 100644
index 24ef3f9..0000000
Binary files a/MPSync/MPSync/obj/x86/Release/MPSync.MPSync_settings.resources and /dev/null differ
diff --git a/MPSync/MPSync/obj/x86/Release/MPSync.Resources.resources b/MPSync/MPSync/obj/x86/Release/MPSync.Resources.resources
deleted file mode 100644
index 6ef25cf..0000000
Binary files a/MPSync/MPSync/obj/x86/Release/MPSync.Resources.resources and /dev/null differ
diff --git a/MPSync/MPSync/obj/x86/Release/MPSync.dll b/MPSync/MPSync/obj/x86/Release/MPSync.dll
deleted file mode 100644
index c1dd389..0000000
Binary files a/MPSync/MPSync/obj/x86/Release/MPSync.dll and /dev/null differ
diff --git a/MPSync/MPSync/obj/x86/Release/MPSync.pdb b/MPSync/MPSync/obj/x86/Release/MPSync.pdb
deleted file mode 100644
index 119de00..0000000
Binary files a/MPSync/MPSync/obj/x86/Release/MPSync.pdb and /dev/null differ
diff --git a/MPSync/MPSync/obj/x86/Release/MPSync.vbproj.CoreCompileInputs.cache b/MPSync/MPSync/obj/x86/Release/MPSync.vbproj.CoreCompileInputs.cache
deleted file mode 100644
index 9906568..0000000
--- a/MPSync/MPSync/obj/x86/Release/MPSync.vbproj.CoreCompileInputs.cache
+++ /dev/null
@@ -1 +0,0 @@
-3a887052670dcd50041d8297abb6e0ea64a3b8ea
diff --git a/MPSync/MPSync/obj/x86/Release/MPSync.vbproj.FileListAbsolute.txt b/MPSync/MPSync/obj/x86/Release/MPSync.vbproj.FileListAbsolute.txt
deleted file mode 100644
index 4ed60cf..0000000
--- a/MPSync/MPSync/obj/x86/Release/MPSync.vbproj.FileListAbsolute.txt
+++ /dev/null
@@ -1,68 +0,0 @@
-E:\Users\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Release\MPSync.pdb
-E:\Users\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Release\MPSync.xml
-E:\Users\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\obj\x86\Release\MPSync.Resources.resources
-E:\Users\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\obj\x86\Release\MPSync.MPSync_settings.resources
-E:\Users\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\obj\x86\Release\MPSync.vbproj.GenerateResource.cache
-E:\Users\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\obj\x86\Release\MPSync.vbproj.CoreCompileInputs.cache
-E:\Users\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\obj\x86\Release\MPSync.xml
-E:\Users\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\obj\x86\Release\MPSync.pdb
-E:\Users\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\obj\x86\Release\MPSync.vbprojAssemblyReference.cache
-E:\Users\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Release\MPSync.dll.config
-E:\Users\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Release\MPSync.dll
-E:\Users\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Release\Common.Utils.dll
-E:\Users\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Release\Core.dll
-E:\Users\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Release\MPSync_DirectoryEnumerator.dll
-E:\Users\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Release\System.Data.SQLite.dll
-E:\Users\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Release\Utils.dll
-E:\Users\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Release\log4net.dll
-E:\Users\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Release\DirectShowLib.dll
-E:\Users\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Release\CSScriptLibrary.dll
-E:\Users\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Release\System.Management.Automation.dll
-E:\Users\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Release\edtftpnet-1.2.2.dll
-E:\Users\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Release\Microsoft.WindowsAPICodePack.Shell.dll
-E:\Users\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Release\taglib-sharp.dll
-E:\Users\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Release\CSCore.dll
-E:\Users\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Release\Bass.Net.dll
-E:\Users\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Release\AxInterop.WMPLib.dll
-E:\Users\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Release\Interop.WMPLib.dll
-E:\Users\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Release\MediaPortal.Support.dll
-E:\Users\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Release\BassRegistration.dll
-E:\Users\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Release\Microsoft.WindowsAPICodePack.dll
-E:\Users\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Release\Ionic.Zip.dll
-E:\Users\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Release\MPSync_DirectoryEnumerator.pdb
-E:\Users\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\obj\x86\Release\MPSync.vbproj.CopyComplete
-E:\Users\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\obj\x86\Release\MPSync.dll
-D:\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Release\MPSync.pdb
-D:\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Release\MPSync.xml
-D:\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Release\Common.Utils.dll
-D:\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Release\Core.dll
-D:\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Release\MPSync_DirectoryEnumerator.dll
-D:\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Release\System.Data.SQLite.dll
-D:\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Release\Utils.dll
-D:\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Release\log4net.dll
-D:\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Release\DirectShowLib.dll
-D:\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Release\CSScriptLibrary.dll
-D:\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Release\System.Management.Automation.dll
-D:\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Release\edtftpnet-1.2.2.dll
-D:\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Release\Microsoft.WindowsAPICodePack.Shell.dll
-D:\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Release\taglib-sharp.dll
-D:\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Release\CSCore.dll
-D:\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Release\Bass.Net.dll
-D:\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Release\AxInterop.WMPLib.dll
-D:\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Release\Interop.WMPLib.dll
-D:\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Release\MediaPortal.Support.dll
-D:\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Release\BassRegistration.dll
-D:\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Release\Microsoft.WindowsAPICodePack.dll
-D:\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Release\Ionic.Zip.dll
-D:\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Release\MPSync_DirectoryEnumerator.pdb
-D:\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\obj\x86\Release\MPSync.Resources.resources
-D:\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\obj\x86\Release\MPSync.MPSync_settings.resources
-D:\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\obj\x86\Release\MPSync.vbproj.GenerateResource.cache
-D:\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\obj\x86\Release\MPSync.vbproj.CoreCompileInputs.cache
-D:\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\obj\x86\Release\MPSync.vbproj.CopyComplete
-D:\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\obj\x86\Release\MPSync.xml
-D:\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\obj\x86\Release\MPSync.pdb
-D:\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\obj\x86\Release\MPSync.vbprojAssemblyReference.cache
-D:\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Release\MPSync.dll.config
-D:\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\bin\Release\MPSync.dll
-D:\Rudolph\Documents\Visual Studio 2017\Projects\MPSync\MPSync\obj\x86\Release\MPSync.dll
diff --git a/MPSync/MPSync/obj/x86/Release/MPSync.vbproj.GenerateResource.Cache b/MPSync/MPSync/obj/x86/Release/MPSync.vbproj.GenerateResource.Cache
deleted file mode 100644
index a7dd65d..0000000
Binary files a/MPSync/MPSync/obj/x86/Release/MPSync.vbproj.GenerateResource.Cache and /dev/null differ
diff --git a/MPSync/MPSync/obj/x86/Release/MPSync.vbprojAssemblyReference.cache b/MPSync/MPSync/obj/x86/Release/MPSync.vbprojAssemblyReference.cache
deleted file mode 100644
index 2d111e3..0000000
Binary files a/MPSync/MPSync/obj/x86/Release/MPSync.vbprojAssemblyReference.cache and /dev/null differ
diff --git a/MPSync/MPSync/obj/x86/Release/MPSync.vbprojResolveAssemblyReference.cache b/MPSync/MPSync/obj/x86/Release/MPSync.vbprojResolveAssemblyReference.cache
deleted file mode 100644
index e2378fa..0000000
Binary files a/MPSync/MPSync/obj/x86/Release/MPSync.vbprojResolveAssemblyReference.cache and /dev/null differ
diff --git a/MPSync/MPSync/obj/x86/Release/MPSync.xml b/MPSync/MPSync/obj/x86/Release/MPSync.xml
deleted file mode 100644
index a1bc859..0000000
--- a/MPSync/MPSync/obj/x86/Release/MPSync.xml
+++ /dev/null
@@ -1,89 +0,0 @@
-
-
-
-
-MPSync
-
-
-
-
-
- A strongly-typed resource class, for looking up localized strings, etc.
-
-
-
-
- Returns the cached ResourceManager instance used by this class.
-
-
-
-
- Overrides the current thread's CurrentUICulture property for all
- resource lookups using this strongly typed resource class.
-
-
-
-
- Looks up a localized resource of type System.Drawing.Bitmap.
-
-
-
-
- Looks up a localized resource of type System.Drawing.Bitmap.
-
-
-
-
- Looks up a localized resource of type System.Drawing.Bitmap.
-
-
-
-
- Looks up a localized resource of type System.Drawing.Bitmap.
-
-
-
-
- Looks up a localized resource of type System.Drawing.Bitmap.
-
-
-
-
- Looks up a localized resource of type System.Drawing.Bitmap.
-
-
-
-
- Looks up a localized resource of type System.Drawing.Bitmap.
-
-
-
-
- Looks up a localized resource of type System.Drawing.Bitmap.
-
-
-
-
- Looks up a localized resource of type System.Drawing.Bitmap.
-
-
-
-
- Looks up a localized resource of type System.Drawing.Bitmap.
-
-
-
-
- If the plugin should have it's own button on the main menu of MediaPortal then it
- should return true to this method, otherwise if it should not be on home
- it should return false
-
- text the button should have
- image for the button, or empty for default
- image for the button, or empty for default
- subpicture for the button or empty for none
- true : plugin needs it's own button on home
- false : plugin does not need it's own button on home
-
-
-
diff --git a/MPSync/MPSync/obj/x86/Release/ResGen.read.1.tlog b/MPSync/MPSync/obj/x86/Release/ResGen.read.1.tlog
deleted file mode 100644
index 46b134b..0000000
--- a/MPSync/MPSync/obj/x86/Release/ResGen.read.1.tlog
+++ /dev/null
@@ -1 +0,0 @@
-ÿþ
\ No newline at end of file
diff --git a/MPSync/MPSync/obj/x86/Release/ResGen.write.1.tlog b/MPSync/MPSync/obj/x86/Release/ResGen.write.1.tlog
deleted file mode 100644
index 46b134b..0000000
--- a/MPSync/MPSync/obj/x86/Release/ResGen.write.1.tlog
+++ /dev/null
@@ -1 +0,0 @@
-ÿþ
\ No newline at end of file
diff --git a/MPSync/MPSync/obj/x86/Release/ResolveAssemblyReference.cache b/MPSync/MPSync/obj/x86/Release/ResolveAssemblyReference.cache
deleted file mode 100644
index ff57234..0000000
Binary files a/MPSync/MPSync/obj/x86/Release/ResolveAssemblyReference.cache and /dev/null differ
diff --git a/MPSync/MPSync/obj/x86/Release/TempPE/My Project.Resources.Designer.vb.dll b/MPSync/MPSync/obj/x86/Release/TempPE/My Project.Resources.Designer.vb.dll
deleted file mode 100644
index 1bed009..0000000
Binary files a/MPSync/MPSync/obj/x86/Release/TempPE/My Project.Resources.Designer.vb.dll and /dev/null differ
diff --git a/MPSync/MPSync/packages.config b/MPSync/MPSync/packages.config
new file mode 100644
index 0000000..df9958e
--- /dev/null
+++ b/MPSync/MPSync/packages.config
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/MPSync/MPSync_DirectoryEnumerator.sln b/MPSync/MPSync_DirectoryEnumerator.sln
deleted file mode 100644
index be02753..0000000
--- a/MPSync/MPSync_DirectoryEnumerator.sln
+++ /dev/null
@@ -1,25 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 15
-VisualStudioVersion = 15.0.27428.1
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DirectoryEnumerator", "FastDirectoryEnumerator\DirectoryEnumerator.csproj", "{B178092B-06CF-4FCF-9D20-69E14650136F}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Any CPU = Debug|Any CPU
- Release|Any CPU = Release|Any CPU
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {B178092B-06CF-4FCF-9D20-69E14650136F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {B178092B-06CF-4FCF-9D20-69E14650136F}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {B178092B-06CF-4FCF-9D20-69E14650136F}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {B178092B-06CF-4FCF-9D20-69E14650136F}.Release|Any CPU.Build.0 = Release|Any CPU
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
- GlobalSection(ExtensibilityGlobals) = postSolution
- SolutionGuid = {98F054CA-82D0-46E9-8496-BAAFFD564949}
- EndGlobalSection
-EndGlobal
diff --git a/MPSync/MPSync_update.xml b/MPSync/MPSync_update.xml
deleted file mode 100644
index 36e0db8..0000000
--- a/MPSync/MPSync_update.xml
+++ /dev/null
@@ -1,2409 +0,0 @@
-
-
-
-
- 2.0
-
-
-
- Default
- true
- Default
-
-
-
-
-
- SQLite
- true
- SQLite
-
-
-
-
-
-
-
-
-
-
-
-
- MediaPortal
-
-
- 1
- 1
- 6
- 27644
-
-
- 1
- 1
- 6
- 27644
-
- false
- requires MediaPortal version 1.1.6.27644 to 1.1.6.27644.
- MediaPortal
-
-
- Extension
- 284fc21c-86e3-4346-bf31-9e38c75e0242
-
- 1
- 5
- 1
- 1487
-
-
- 1
- 5
- 1
- 1487
-
- true
- requires Moving Pictures version 1.5.1.1487
- Moving Pictures
-
-
- Extension
- 5e2777c3-966c-407f-b5a9-e51205b70b3e
-
- 3
- 4
- 2
- 2018
-
-
- 3
- 4
- 2
- 2018
-
- true
- requires MP-TVSeries version 3.4.2.2018
- MP-TVSeries
-
-
-
-
-
-
-
-
-
- 1.1.6.27644
- 1.2.100.0
-
-
-
-
-
-
-
-
-
-
-
-
-
- MPSync
- 8ddbfb53-7222-41fd-a139-407eacd78464
- m3rcury
- http://www.team-mediaportal.com/extensions/utilities/cdb-sync?lang=en
- http://forum.team-mediaportal.com/threads/plugin-mpsync-mediaportal-synchronization.117417/#post-975411
- https://cdbsync-plugin.googlecode.com/svn/trunk/MPSync/MPSync_update.xml
-
- 1
- 0
- 0
- 0
-
- This plugin synchronizes your MediaPortal databases with a central database as well as thumbs folder, so that any additons can by automatically applied to any other MP seat you might have in your household.
- Stable release
- Stable
- https://cdbsync-plugin.googlecode.com/files/MPSync-v1.0.0.0.mpe1
- 2013-04-06T23:39:41
- synchronization, database, thumbs
- E:\Software\MediaPortal\MPSync\[Name]-v[Version].mpe1
-
-
-
-
- String
- The icon file of the package stored online (jpg,png,bmp)
-
-
-
- Template
- The file used to configure the extension.
- If have .exe extension the will be executed
- If have .dll extension used like MP plugin configuration
-
-
- http://www.team-mediaportal.com/components/com_mtree/img/listings/m/1889.jpg,http://www.team-mediaportal.com/components/com_mtree/img/listings/m/1900.jpg,http://www.team-mediaportal.com/components/com_mtree/img/listings/m/1901.jpg,http://www.team-mediaportal.com/components/com_mtree/img/listings/m/1902.jpg,http://www.team-mediaportal.com/components/com_mtree/img/listings/m/1895.jpg,http://www.team-mediaportal.com/components/com_mtree/img/listings/m/1898.jpg,http://www.team-mediaportal.com/components/com_mtree/img/listings/m/1886.jpg
- String
- Online stored screenshot urls separated by ;
-
-
- YES
- Bool
- Show dialog and force to uninstall previous version when updating an extension. Should only be disabled if you are using an NSIS/MSI installer.
-
-
-
-
-
-
-
-
-
-
- false
-
-
- 2.0
-
-
-
- Default
- true
- Default
-
-
-
-
-
- SQLite
- true
- SQLite
-
-
-
-
-
-
-
-
-
-
-
-
- MediaPortal
-
-
- 1
- 1
- 6
- 27644
-
-
- 1
- 1
- 6
- 27644
-
- false
- requires MediaPortal version 1.1.6.27644 to 1.1.6.27644.
- MediaPortal
-
-
- Extension
- 284fc21c-86e3-4346-bf31-9e38c75e0242
-
- 1
- 5
- 1
- 1487
-
-
- 1
- 5
- 1
- 1487
-
- true
- requires Moving Pictures version 1.5.1.1487
- Moving Pictures
-
-
- Extension
- 5e2777c3-966c-407f-b5a9-e51205b70b3e
-
- 3
- 4
- 2
- 2018
-
-
- 3
- 4
- 2
- 2018
-
- true
- requires MP-TVSeries version 3.4.2.2018
- MP-TVSeries
-
-
-
-
-
-
-
-
-
- 1.1.6.27644
- 1.2.100.0
-
-
-
-
-
-
-
-
-
-
-
-
-
- MPSync
- 8ddbfb53-7222-41fd-a139-407eacd78464
- m3rcury
- http://www.team-mediaportal.com/extensions/utilities/cdb-sync?lang=en
- http://forum.team-mediaportal.com/threads/plugin-mpsync-mediaportal-synchronization.117417/#post-975411
- https://cdbsync-plugin.googlecode.com/svn/trunk/MPSync/MPSync_update.xml
-
- 1
- 0
- 0
- 1
-
- This plugin synchronizes your MediaPortal databases with a central database as well as thumbs folder, so that any additons can by automatically applied to any other MP seat you might have in your household.
- Stable release
- Stable
- https://cdbsync-plugin.googlecode.com/files/MPSync-v1.0.0.1.mpe1
- 2013-04-08T23:39:41
- synchronization, database, thumbs
- E:\Software\MediaPortal\MPSync\[Name]-v[Version].mpe1
-
-
-
-
- String
- The icon file of the package stored online (jpg,png,bmp)
-
-
-
- Template
- The file used to configure the extension.
- If have .exe extension the will be executed
- If have .dll extension used like MP plugin configuration
-
-
- http://www.team-mediaportal.com/components/com_mtree/img/listings/m/1889.jpg,http://www.team-mediaportal.com/components/com_mtree/img/listings/m/1900.jpg,http://www.team-mediaportal.com/components/com_mtree/img/listings/m/1901.jpg,http://www.team-mediaportal.com/components/com_mtree/img/listings/m/1902.jpg,http://www.team-mediaportal.com/components/com_mtree/img/listings/m/1895.jpg,http://www.team-mediaportal.com/components/com_mtree/img/listings/m/1898.jpg,http://www.team-mediaportal.com/components/com_mtree/img/listings/m/1886.jpg
- String
- Online stored screenshot urls separated by ;
-
-
- YES
- Bool
- Show dialog and force to uninstall previous version when updating an extension. Should only be disabled if you are using an NSIS/MSI installer.
-
-
-
-
-
-
-
-
-
-
- false
-
-
- 2.0
-
-
-
- Default
- true
- Default
-
-
-
-
-
- SQLite
- true
- SQLite
-
-
-
-
-
-
-
-
-
-
-
-
- MediaPortal
-
-
- 1
- 1
- 6
- 27644
-
-
- 1
- 1
- 6
- 27644
-
- false
- requires MediaPortal version 1.1.6.27644 to 1.1.6.27644.
- MediaPortal
-
-
- Extension
- 284fc21c-86e3-4346-bf31-9e38c75e0242
-
- 1
- 5
- 1
- 1487
-
-
- 1
- 5
- 1
- 1487
-
- true
- requires Moving Pictures version 1.5.1.1487
- Moving Pictures
-
-
- Extension
- 5e2777c3-966c-407f-b5a9-e51205b70b3e
-
- 3
- 4
- 2
- 2018
-
-
- 3
- 4
- 2
- 2018
-
- true
- requires MP-TVSeries version 3.4.2.2018
- MP-TVSeries
-
-
-
-
-
-
-
-
-
- 1.1.6.27644
- 1.2.100.0
-
-
-
-
-
-
-
-
-
-
-
-
-
- MPSync
- 8ddbfb53-7222-41fd-a139-407eacd78464
- m3rcury
- http://www.team-mediaportal.com/extensions/utilities/cdb-sync?lang=en
- http://forum.team-mediaportal.com/threads/plugin-mpsync-mediaportal-synchronization.117417/#post-975411
- https://cdbsync-plugin.googlecode.com/svn/trunk/MPSync/MPSync_update.xml
-
- 1
- 0
- 0
- 2
-
- This plugin synchronizes your MediaPortal databases with a central database as well as thumbs folder, so that any additons can by automatically applied to any other MP seat you might have in your household.
- Stable release
- Stable
- https://cdbsync-plugin.googlecode.com/files/MPSync-v1.0.0.2.mpe1
- 2013-04-09T23:39:41
- synchronization, database, thumbs
- E:\Software\MediaPortal\MPSync\[Name]-v[Version].mpe1
-
-
-
-
- String
- The icon file of the package stored online (jpg,png,bmp)
-
-
-
- Template
- The file used to configure the extension.
- If have .exe extension the will be executed
- If have .dll extension used like MP plugin configuration
-
-
- http://www.team-mediaportal.com/components/com_mtree/img/listings/m/1889.jpg,http://www.team-mediaportal.com/components/com_mtree/img/listings/m/1900.jpg,http://www.team-mediaportal.com/components/com_mtree/img/listings/m/1901.jpg,http://www.team-mediaportal.com/components/com_mtree/img/listings/m/1902.jpg,http://www.team-mediaportal.com/components/com_mtree/img/listings/m/1895.jpg,http://www.team-mediaportal.com/components/com_mtree/img/listings/m/1898.jpg,http://www.team-mediaportal.com/components/com_mtree/img/listings/m/1914.jpg,http://www.team-mediaportal.com/components/com_mtree/img/listings/m/1886.jpg
- String
- Online stored screenshot urls separated by ;
-
-
- YES
- Bool
- Show dialog and force to uninstall previous version when updating an extension. Should only be disabled if you are using an NSIS/MSI installer.
-
-
-
-
-
-
-
-
-
-
- false
-
-
- 2.0
-
-
-
- Default
- true
- Default
-
-
-
-
-
- SQLite
- true
- SQLite
-
-
-
-
-
-
-
-
-
-
-
-
- MediaPortal
-
-
- 1
- 1
- 6
- 27644
-
-
- 1
- 1
- 6
- 27644
-
- false
- requires MediaPortal version 1.1.6.27644 to 1.1.6.27644.
- MediaPortal
-
-
- Extension
- 284fc21c-86e3-4346-bf31-9e38c75e0242
-
- 1
- 5
- 1
- 1487
-
-
- 1
- 5
- 1
- 1487
-
- true
- requires Moving Pictures version 1.5.1.1487
- Moving Pictures
-
-
- Extension
- 5e2777c3-966c-407f-b5a9-e51205b70b3e
-
- 3
- 4
- 2
- 2018
-
-
- 3
- 4
- 2
- 2018
-
- true
- requires MP-TVSeries version 3.4.2.2018
- MP-TVSeries
-
-
-
-
-
-
-
-
-
- 1.1.6.27644
- 1.2.100.0
-
-
-
-
-
-
-
-
-
-
-
-
-
- MPSync
- 8ddbfb53-7222-41fd-a139-407eacd78464
- m3rcury
- http://www.team-mediaportal.com/extensions/utilities/cdb-sync?lang=en
- http://forum.team-mediaportal.com/threads/plugin-mpsync-mediaportal-synchronization.117417/#post-975411
- https://cdbsync-plugin.googlecode.com/svn/trunk/MPSync/MPSync_update.xml
-
- 1
- 0
- 0
- 3
-
- This plugin synchronizes your MediaPortal databases with a central database as well as thumbs folder, so that any additons can by automatically applied to any other MP seat you might have in your household.
- Stable release
- Stable
- https://cdbsync-plugin.googlecode.com/files/MPSync-v1.0.0.3.mpe1
- 2013-04-10T23:39:41
- synchronization, database, thumbs
- E:\Software\MediaPortal\MPSync\[Name]-v[Version].mpe1
-
-
-
-
- String
- The icon file of the package stored online (jpg,png,bmp)
-
-
-
- Template
- The file used to configure the extension.
- If have .exe extension the will be executed
- If have .dll extension used like MP plugin configuration
-
-
- http://www.team-mediaportal.com/components/com_mtree/img/listings/m/1889.jpg,http://www.team-mediaportal.com/components/com_mtree/img/listings/m/1900.jpg,http://www.team-mediaportal.com/components/com_mtree/img/listings/m/1901.jpg,http://www.team-mediaportal.com/components/com_mtree/img/listings/m/1902.jpg,http://www.team-mediaportal.com/components/com_mtree/img/listings/m/1895.jpg,http://www.team-mediaportal.com/components/com_mtree/img/listings/m/1898.jpg,http://www.team-mediaportal.com/components/com_mtree/img/listings/m/1914.jpg,http://www.team-mediaportal.com/components/com_mtree/img/listings/m/1886.jpg
- String
- Online stored screenshot urls separated by ;
-
-
- YES
- Bool
- Show dialog and force to uninstall previous version when updating an extension. Should only be disabled if you are using an NSIS/MSI installer.
-
-
-
-
-
-
-
-
-
-
- false
-
-
- 2.0
-
-
-
- Default
- true
- Default
-
-
-
-
-
- SQLite
- true
- SQLite
-
-
-
-
-
-
-
-
-
-
-
-
- Extension
- 284fc21c-86e3-4346-bf31-9e38c75e0242
-
- 1
- 5
- 1
- 1487
-
-
- 9
- 9
- 9
- 9
-
- true
- requires Moving Pictures version 1.5.1.1487 or higher
- Moving Pictures
-
-
- Extension
- 5e2777c3-966c-407f-b5a9-e51205b70b3e
-
- 3
- 4
- 2
- 2018
-
-
- 9
- 9
- 9
- 9
-
- true
- requires MP-TVSeries version 3.4.2.2018 or higher
- MP-TVSeries
-
-
- MediaPortal
-
-
- 1
- 1
- 6
- 27644
-
-
- 1
- 1
- 6
- 27644
-
- true
- This version of MPSync requires MediaPortal 1.2.0 Beta or higher!
- MediaPortal
-
-
-
-
-
-
-
- MPSync
- 8ddbfb53-7222-41fd-a139-407eacd78464
- m3rcury
- http://www.team-mediaportal.com/extensions/utilities/cdb-sync?lang=en
- http://forum.team-mediaportal.com/threads/plugin-mpsync-mediaportal-synchronization.117417/#post-975411
- https://cdbsync-plugin.googlecode.com/svn/trunk/MPSync/MPSync_update.xml
-
- 1
- 0
- 0
- 6
-
- This plugin synchronizes your MediaPortal databases with a central database as well as thumbs folder, so that any additons can by automatically applied to any other MP seat you might have in your household.
- Enhanced synchronization to be based on database triggers resulting in faster synchronization and also less load on HTPC CPU.
-
-Compatibility with MediaPortal v1.4.0
- Stable
- https://cdbsync-plugin.googlecode.com/files/MPSync-v1.0.0.6.mpe1
- 2013-05-19T23:39:41
- synchronization, database, thumbs
- E:\Software\MediaPortal\MPSync\[Name]-v[Version].mpe1
-
-
-
-
- String
- The icon file of the package stored online (jpg,png,bmp)
-
-
-
- Template
- The file used to configure the extension.
- If have .exe extension the will be executed
- If have .dll extension used like MP plugin configuration
-
-
- http://www.team-mediaportal.com/components/com_mtree/img/listings/m/1889.jpg,http://www.team-mediaportal.com/components/com_mtree/img/listings/m/1900.jpg,http://www.team-mediaportal.com/components/com_mtree/img/listings/m/1901.jpg,http://www.team-mediaportal.com/components/com_mtree/img/listings/m/1902.jpg,http://www.team-mediaportal.com/components/com_mtree/img/listings/m/1895.jpg,http://www.team-mediaportal.com/components/com_mtree/img/listings/m/1898.jpg,http://www.team-mediaportal.com/components/com_mtree/img/listings/m/1914.jpg,http://www.team-mediaportal.com/components/com_mtree/img/listings/m/1886.jpg
- String
- Online stored screenshot urls separated by ;
-
-
- YES
- Bool
- Show dialog and force to uninstall previous version when updating an extension. Should only be disabled if you are using an NSIS/MSI installer.
-
-
-
-
-
-
-
-
-
-
- false
-
-
- 2.0
-
-
-
- Default
- true
- Default
-
-
-
-
-
- SQLite
- true
- SQLite
-
-
-
-
-
-
-
-
-
-
-
-
- Extension
- 284fc21c-86e3-4346-bf31-9e38c75e0242
-
- 1
- 5
- 1
- 1487
-
-
- 9
- 9
- 9
- 9
-
- true
- requires Moving Pictures version 1.5.1.1487 or higher
- Moving Pictures
-
-
- Extension
- 5e2777c3-966c-407f-b5a9-e51205b70b3e
-
- 3
- 4
- 2
- 2018
-
-
- 9
- 9
- 9
- 9
-
- true
- requires MP-TVSeries version 3.4.2.2018 or higher
- MP-TVSeries
-
-
- MediaPortal
-
-
- 1
- 1
- 6
- 27644
-
-
- 1
- 1
- 6
- 27644
-
- true
- This version of MPSync requires MediaPortal 1.2.0 Beta or higher!
- MediaPortal
-
-
-
-
-
-
-
-
-
- 1.1.6.27644
- 1.3.100.0
-
-
-
-
-
-
-
-
-
-
-
-
-
- MPSync
- 8ddbfb53-7222-41fd-a139-407eacd78464
- m3rcury
- http://www.team-mediaportal.com/extensions/utilities/cdb-sync?lang=en
- http://forum.team-mediaportal.com/threads/plugin-mpsync-mediaportal-synchronization.117417/#post-975411
- https://cdbsync-plugin.googlecode.com/svn/trunk/MPSync/MPSync_update.xml
-
- 1
- 0
- 0
- 7
-
- This plugin synchronizes your MediaPortal databases with a central database as well as thumbs folder, so that any additons can by automatically applied to any other MP seat you might have in your household.
- Enhanced synchronization to be based on database triggers resulting in faster synchronization and also less load on HTPC CPU.
-
-Compatibility with MediaPortal v1.4.0
- Stable
- https://cdbsync-plugin.googlecode.com/files/MPSync-v1.0.0.7.mpe1
- 2013-05-21T23:39:41
- synchronization, database, thumbs
- E:\Software\MediaPortal\MPSync\[Name]-v[Version].mpe1
-
-
-
-
- String
- The icon file of the package stored online (jpg,png,bmp)
-
-
-
- Template
- The file used to configure the extension.
- If have .exe extension the will be executed
- If have .dll extension used like MP plugin configuration
-
-
- http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(1)%20MPSync_settings.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(2)%20MPSync_database_paths.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(3)%20MPSync_database_advanced_settings.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(4)%20MPSync_database_other.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(5)%20MPSync_database_watched_status.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(6)%20MPSync_thumbs_paths.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(7)%20MPSync_thumbs_advanced_settings.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(8)%20MPSync_status.jpg
- String
- Online stored screenshot urls separated by ;
-
-
- YES
- Bool
- Show dialog and force to uninstall previous version when updating an extension. Should only be disabled if you are using an NSIS/MSI installer.
-
-
-
-
-
-
-
-
-
-
- false
-
-
- 2.0
-
-
-
- Default
- true
- Default
-
-
-
-
-
- SQLite
- true
- SQLite
-
-
-
-
-
-
-
-
-
-
-
-
- Extension
- 284fc21c-86e3-4346-bf31-9e38c75e0242
-
- 1
- 5
- 1
- 1487
-
-
- 9
- 9
- 9
- 9
-
- true
- requires Moving Pictures version 1.5.1.1487 or higher
- Moving Pictures
-
-
- Extension
- 5e2777c3-966c-407f-b5a9-e51205b70b3e
-
- 3
- 4
- 2
- 2018
-
-
- 9
- 9
- 9
- 9
-
- true
- requires MP-TVSeries version 3.4.2.2018 or higher
- MP-TVSeries
-
-
- MediaPortal
-
-
- 1
- 1
- 6
- 27644
-
-
- 1
- 1
- 6
- 27644
-
- true
- This version of MPSync requires MediaPortal 1.2.0 Beta or higher!
- MediaPortal
-
-
-
-
-
-
-
-
-
- 1.1.6.27644
- 1.3.100.0
-
-
-
-
-
-
-
-
-
-
-
-
-
- MPSync
- 8ddbfb53-7222-41fd-a139-407eacd78464
- m3rcury
- http://www.team-mediaportal.com/extensions/utilities/cdb-sync?lang=en
- http://forum.team-mediaportal.com/threads/plugin-mpsync-mediaportal-synchronization.117417/#post-975411
- https://cdbsync-plugin.googlecode.com/svn/trunk/MPSync/MPSync_update.xml
-
- 1
- 0
- 0
- 8
-
- This plugin synchronizes your MediaPortal databases with a central database as well as thumbs folder, so that any additons can by automatically applied to any other MP seat you might have in your household.
-
- Stable
- https://cdbsync-plugin.googlecode.com/files/MPSync-v1.0.0.8.mpe1
- 2013-05-24T23:39:41
- synchronization, database, thumbs
- E:\Software\MediaPortal\MPSync\[Name]-v[Version].mpe1
-
-
-
-
- String
- The icon file of the package stored online (jpg,png,bmp)
-
-
-
- Template
- The file used to configure the extension.
- If have .exe extension the will be executed
- If have .dll extension used like MP plugin configuration
-
-
- http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(1)%20MPSync_settings.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(2)%20MPSync_database_paths.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(3)%20MPSync_database_advanced_settings.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(4)%20MPSync_database_other.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(5)%20MPSync_database_watched_status.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(6)%20MPSync_thumbs_paths.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(7)%20MPSync_thumbs_advanced_settings.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(8)%20MPSync_status.jpg
- String
- Online stored screenshot urls separated by ;
-
-
- YES
- Bool
- Show dialog and force to uninstall previous version when updating an extension. Should only be disabled if you are using an NSIS/MSI installer.
-
-
-
-
-
-
-
-
-
-
- false
-
-
- 2.0
-
-
-
- Default
- true
- Default
-
-
-
-
-
- SQLite
- true
- SQLite
-
-
-
-
-
-
-
-
-
-
-
-
- Extension
- 284fc21c-86e3-4346-bf31-9e38c75e0242
-
- 1
- 5
- 1
- 1487
-
-
- 9
- 9
- 9
- 9
-
- true
- requires Moving Pictures version 1.5.1.1487 or higher
- Moving Pictures
-
-
- Extension
- 5e2777c3-966c-407f-b5a9-e51205b70b3e
-
- 3
- 4
- 2
- 2018
-
-
- 9
- 9
- 9
- 9
-
- true
- requires MP-TVSeries version 3.4.2.2018 or higher
- MP-TVSeries
-
-
- MediaPortal
-
-
- 1
- 1
- 6
- 27644
-
-
- 1
- 1
- 6
- 27644
-
- true
- This version of MPSync requires MediaPortal 1.2.0 Beta or higher!
- MediaPortal
-
-
-
-
-
-
-
-
-
- 1.1.6.27644
- 1.3.100.0
-
-
-
-
-
-
-
-
-
-
-
-
-
- MPSync
- 8ddbfb53-7222-41fd-a139-407eacd78464
- m3rcury
- http://www.team-mediaportal.com/extensions/utilities/cdb-sync?lang=en
- http://forum.team-mediaportal.com/threads/plugin-mpsync-mediaportal-synchronization.117417/#post-975411
- https://cdbsync-plugin.googlecode.com/svn/trunk/MPSync/MPSync_update.xml
-
- 1
- 0
- 0
- 9
-
- This plugin synchronizes your MediaPortal databases with a central database as well as thumbs folder, so that any additons can by automatically applied to any other MP seat you might have in your household.
-
- Stable
- https://cdbsync-plugin.googlecode.com/files/MPSync-v1.0.0.9.mpe1
- 2013-08-21T23:39:41
- synchronization, database, thumbs, any folder you set up.
- E:\Software\MediaPortal\MPSync\[Name]-v[Version].mpe1
-
-
-
-
- String
- The icon file of the package stored online (jpg,png,bmp)
-
-
-
- Template
- The file used to configure the extension.
- If have .exe extension the will be executed
- If have .dll extension used like MP plugin configuration
-
-
- http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(1)%20MPSync_settings.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(2)%20MPSync_database_paths.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(3)%20MPSync_database_advanced_settings.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(4)%20MPSync_database_other.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(5)%20MPSync_database_watched_status.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(6)%20MPSync_folder_list.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(7)%20MPSync_thumbs_paths.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(8)%20MPSync_thumbs_advanced_settings.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(9)%20MPSync_status.jpg
- String
- Online stored screenshot urls separated by ;
-
-
- YES
- Bool
- Show dialog and force to uninstall previous version when updating an extension. Should only be disabled if you are using an NSIS/MSI installer.
-
-
-
-
-
-
-
-
-
-
- false
-
-
- 2.0
-
-
-
- Default
- true
- Default
-
-
-
-
-
- SQLite
- true
- SQLite
-
-
-
-
-
-
-
-
-
-
-
-
- Extension
- 284fc21c-86e3-4346-bf31-9e38c75e0242
-
- 1
- 5
- 1
- 1487
-
-
- 9
- 9
- 9
- 9
-
- true
- requires Moving Pictures version 1.5.1.1487 or higher
- Moving Pictures
-
-
- Extension
- 5e2777c3-966c-407f-b5a9-e51205b70b3e
-
- 3
- 4
- 2
- 2018
-
-
- 9
- 9
- 9
- 9
-
- true
- requires MP-TVSeries version 3.4.2.2018 or higher
- MP-TVSeries
-
-
- MediaPortal
-
-
- 1
- 1
- 6
- 27644
-
-
- 1
- 1
- 6
- 27644
-
- true
- This version of MPSync requires MediaPortal 1.2.0 Beta or higher!
- MediaPortal
-
-
-
-
-
-
-
-
-
- 1.1.6.27644
- 1.3.100.0
-
-
-
-
-
-
-
-
-
-
-
-
-
- MPSync
- 8ddbfb53-7222-41fd-a139-407eacd78464
- m3rcury
- http://www.team-mediaportal.com/extensions/utilities/cdb-sync?lang=en
- http://forum.team-mediaportal.com/threads/plugin-mpsync-mediaportal-synchronization.117417/#post-975411
- https://cdbsync-plugin.googlecode.com/svn/trunk/MPSync/MPSync_update.xml
-
- 1
- 0
- 0
- 10
-
- This plugin synchronizes your MediaPortal databases with a central database as well as thumbs folder, so that any additons can by automatically applied to any other MP seat you might have in your household.
-
- Stable
- http://www.team-mediaportal.com/index.php?option=com_mtree&task=att_download&link_id=268&cf_id=24
- 2014-04-27T23:39:41
- synchronization, database, thumbs, any folder you set up.
- E:\Software\MediaPortal\MPSync\[Name]-v[Version].mpe1
-
-
-
-
- String
- The icon file of the package stored online (jpg,png,bmp)
-
-
-
- Template
- The file used to configure the extension.
- If have .exe extension the will be executed
- If have .dll extension used like MP plugin configuration
-
-
- http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(1)%20MPSync_settings.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(2)%20MPSync_database_paths.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(3)%20MPSync_database_advanced_settings.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(4)%20MPSync_database_other.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(5)%20MPSync_database_watched_status.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(6)%20MPSync_folder_list.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(7)%20MPSync_thumbs_paths.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(8)%20MPSync_thumbs_advanced_settings.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(9)%20MPSync_status.jpg
- String
- Online stored screenshot urls separated by ;
-
-
- YES
- Bool
- Show dialog and force to uninstall previous version when updating an extension. Should only be disabled if you are using an NSIS/MSI installer.
-
-
-
-
-
-
-
-
-
-
- false
-
-
- 2.0
-
-
-
- Default
- true
- Default
-
-
-
-
-
- SQLite
- true
- SQLite
-
-
-
-
-
-
-
-
-
-
-
-
- Extension
- 284fc21c-86e3-4346-bf31-9e38c75e0242
-
- 1
- 5
- 1
- 1487
-
-
- 9
- 9
- 9
- 9
-
- true
- requires Moving Pictures version 1.5.1.1487 or higher
- Moving Pictures
-
-
- Extension
- 5e2777c3-966c-407f-b5a9-e51205b70b3e
-
- 3
- 4
- 2
- 2018
-
-
- 9
- 9
- 9
- 9
-
- true
- requires MP-TVSeries version 3.4.2.2018 or higher
- MP-TVSeries
-
-
- MediaPortal
-
-
- 1
- 1
- 6
- 27644
-
-
- 1
- 1
- 6
- 27644
-
- true
- This version of MPSync requires MediaPortal 1.2.0 Beta or higher!
- MediaPortal
-
-
-
-
-
-
-
-
-
- 1.1.6.27644
- 1.3.100.0
-
-
-
-
-
-
-
-
-
-
-
-
-
- MPSync
- 8ddbfb53-7222-41fd-a139-407eacd78464
- m3rcury
- http://www.team-mediaportal.com/extensions/utilities/cdb-sync?lang=en
- http://forum.team-mediaportal.com/threads/plugin-mpsync-mediaportal-synchronization.117417/#post-975411
- https://cdbsync-plugin.googlecode.com/svn/trunk/MPSync/MPSync_update.xml
-
- 1
- 0
- 0
- 11
-
- This plugin synchronizes your MediaPortal databases with a central database as well as thumbs folder, so that any additons can by automatically applied to any other MP seat you might have in your household.
-
- Stable
- http://www.team-mediaportal.com/index.php?option=com_mtree&task=att_download&link_id=268&cf_id=24
- 2014-05-02T23:39:41
- synchronization, database, thumbs, any folder you set up.
- E:\Software\MediaPortal\MPSync\[Name]-v[Version].mpe1
-
-
-
-
- String
- The icon file of the package stored online (jpg,png,bmp)
-
-
-
- Template
- The file used to configure the extension.
- If have .exe extension the will be executed
- If have .dll extension used like MP plugin configuration
-
-
- http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(1)%20MPSync_settings.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(2)%20MPSync_database_paths.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(3)%20MPSync_database_advanced_settings.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(4)%20MPSync_database_other.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(5)%20MPSync_database_watched_status.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(6)%20MPSync_folder_list.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(7)%20MPSync_thumbs_paths.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(8)%20MPSync_thumbs_advanced_settings.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(9)%20MPSync_status.jpg
- String
- Online stored screenshot urls separated by ;
-
-
- YES
- Bool
- Show dialog and force to uninstall previous version when updating an extension. Should only be disabled if you are using an NSIS/MSI installer.
-
-
-
-
-
-
-
-
-
-
- false
-
-
- 2.0
-
-
-
- Default
- true
- Default
-
-
-
-
-
- SQLite
- true
- SQLite
-
-
-
-
-
-
-
-
-
-
-
-
- Extension
- 284fc21c-86e3-4346-bf31-9e38c75e0242
-
- 1
- 5
- 1
- 1487
-
-
- 9
- 9
- 9
- 9
-
- true
- requires Moving Pictures version 1.5.1.1487 or higher
- Moving Pictures
-
-
- Extension
- 5e2777c3-966c-407f-b5a9-e51205b70b3e
-
- 3
- 4
- 2
- 2018
-
-
- 9
- 9
- 9
- 9
-
- true
- requires MP-TVSeries version 3.4.2.2018 or higher
- MP-TVSeries
-
-
- MediaPortal
-
-
- 1
- 1
- 6
- 27644
-
-
- 1
- 1
- 6
- 27644
-
- false
- This version of MPSync is only compatible with MediaPortal 1.7 or greater. Please download version that is supported by your version of MediaPortal from the MPSync homepage.
- MediaPortal
-
-
-
-
-
-
-
-
-
- 1.6.100.0
- 1.6.100.0
-
-
-
-
-
-
-
-
-
-
-
-
-
- MPSync
- 8ddbfb53-7222-41fd-a139-407eacd78464
- m3rcury
- http://www.team-mediaportal.com/extensions/utilities/cdb-sync?lang=en
- http://forum.team-mediaportal.com/threads/plugin-mpsync-mediaportal-synchronization.117417/#post-975411
- https://cdbsync-plugin.googlecode.com/svn/trunk/MPSync/MPSync_update.xml
-
- 1
- 0
- 0
- 13
-
- This plugin synchronizes your MediaPortal databases with a central database as well as thumbs folder, so that any additons can by automatically applied to any other MP seat you might have in your household.
- Minor fixes.
- Stable
- http://www.team-mediaportal.com/index.php?option=com_mtree&task=att_download&link_id=268&cf_id=24
- 2015-02-21T23:39:41
- synchronization, database, thumbs, any folder you set up.
- E:\Software\MediaPortal\MPSync\[Name]-v[Version].mpe1
-
-
-
-
- String
- The icon file of the package stored online (jpg,png,bmp)
-
-
-
- Template
- The file used to configure the extension.
- If have .exe extension the will be executed
- If have .dll extension used like MP plugin configuration
-
-
- http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(1)%20MPSync_settings.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(2)%20MPSync_database_paths.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(3)%20MPSync_database_advanced_settings.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(4)%20MPSync_database_other.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(5)%20MPSync_database_watched_status.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(6)%20MPSync_folder_list.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(7)%20MPSync_thumbs_paths.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(8)%20MPSync_thumbs_advanced_settings.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(9)%20MPSync_status.jpg
- String
- Online stored screenshot urls separated by ;
-
-
- YES
- Bool
- Show dialog and force to uninstall previous version when updating an extension. Should only be disabled if you are using an NSIS/MSI installer.
-
-
-
-
-
-
-
-
-
-
- false
-
-
- 2.0
-
-
-
- Default
- true
- Default
-
-
-
-
-
- SQLite
- true
- SQLite
-
-
-
-
-
-
-
-
-
-
-
-
- Extension
- 284fc21c-86e3-4346-bf31-9e38c75e0242
-
- 1
- 5
- 1
- 1487
-
-
- 9
- 9
- 9
- 9
-
- true
- requires Moving Pictures version 1.5.1.1487 or higher
- Moving Pictures
-
-
- Extension
- 5e2777c3-966c-407f-b5a9-e51205b70b3e
-
- 3
- 4
- 2
- 2018
-
-
- 9
- 9
- 9
- 9
-
- true
- requires MP-TVSeries version 3.4.2.2018 or higher
- MP-TVSeries
-
-
- MediaPortal
-
-
- 1
- 1
- 6
- 27644
-
-
- 1
- 1
- 6
- 27644
-
- false
- This version of MPSync is only compatible with MediaPortal 1.7 or greater. Please download version that is supported by your version of MediaPortal from the MPSync homepage.
- MediaPortal
-
-
-
-
-
-
-
-
-
- 1.6.100.0
- 1.6.100.0
-
-
-
-
-
-
-
-
-
-
-
-
-
- MPSync
- 8ddbfb53-7222-41fd-a139-407eacd78464
- m3rcury
- http://www.team-mediaportal.com/extensions/utilities/cdb-sync?lang=en
- http://forum.team-mediaportal.com/threads/plugin-mpsync-mediaportal-synchronization.117417/#post-975411
- https://cdbsync-plugin.googlecode.com/svn/trunk/MPSync/MPSync_update.xml
-
- 1
- 0
- 0
- 14
-
- This plugin synchronizes your MediaPortal databases with a central database as well as thumbs folder, so that any additons can by automatically applied to any other MP seat you might have in your household.
- Minor fixes.
- Stable
- http://www.team-mediaportal.com/index.php?option=com_mtree&task=att_download&link_id=268&cf_id=24
- 2015-02-28T23:39:41
- synchronization, database, thumbs, any folder you set up.
- E:\Software\MediaPortal\MPSync\[Name]-v[Version].mpe1
-
-
-
-
- String
- The icon file of the package stored online (jpg,png,bmp)
-
-
-
- Template
- The file used to configure the extension.
- If have .exe extension the will be executed
- If have .dll extension used like MP plugin configuration
-
-
- http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(1)%20MPSync_settings.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(2)%20MPSync_database_paths.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(3)%20MPSync_database_advanced_settings.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(4)%20MPSync_database_other.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(5)%20MPSync_database_watched_status.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(6)%20MPSync_folder_list.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(7)%20MPSync_thumbs_paths.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(8)%20MPSync_thumbs_advanced_settings.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(9)%20MPSync_status.jpg
- String
- Online stored screenshot urls separated by ;
-
-
- YES
- Bool
- Show dialog and force to uninstall previous version when updating an extension. Should only be disabled if you are using an NSIS/MSI installer.
-
-
-
-
-
-
-
-
-
-
- false
-
-
- 2.0
-
-
-
- Default
- true
- Default
-
-
-
-
-
- SQLite
- true
- SQLite
-
-
-
-
-
-
-
-
-
-
-
-
- Extension
- 284fc21c-86e3-4346-bf31-9e38c75e0242
-
- 1
- 5
- 1
- 1487
-
-
- 9
- 9
- 9
- 9
-
- true
- requires Moving Pictures version 1.5.1.1487 or higher
- Moving Pictures
-
-
- Extension
- 5e2777c3-966c-407f-b5a9-e51205b70b3e
-
- 3
- 4
- 2
- 2018
-
-
- 9
- 9
- 9
- 9
-
- true
- requires MP-TVSeries version 3.4.2.2018 or higher
- MP-TVSeries
-
-
- MediaPortal
-
-
- 1
- 1
- 6
- 27644
-
-
- 1
- 1
- 6
- 27644
-
- false
- This version of MPSync is only compatible with MediaPortal 1.7 or greater. Please download version that is supported by your version of MediaPortal from the MPSync homepage.
- MediaPortal
-
-
-
-
-
-
-
-
-
- 1.6.100.0
- 1.6.100.0
-
-
-
-
-
-
-
-
-
-
-
-
-
- MPSync
- 8ddbfb53-7222-41fd-a139-407eacd78464
- m3rcury
- http://www.team-mediaportal.com/extensions/utilities/cdb-sync?lang=en
- http://forum.team-mediaportal.com/threads/plugin-mpsync-mediaportal-synchronization.117417/#post-975411
- http://www.team-mediaportal.com/index.php?option=com_mtree&task=att_download&link_id=268&cf_id=52
-
- 1
- 0
- 0
- 17
-
- This plugin synchronizes your MediaPortal databases with a central database as well as thumbs folder, so that any additons can by automatically applied to any other MP seat you might have in your household.
- Added file size as part of the criteria for synchronization.
- Stable
- http://www.team-mediaportal.com/index.php?option=com_mtree&task=att_download&link_id=268&cf_id=24
- 2016-03-22T23:39:41
- synchronization, database, thumbs, any folder you set up.
- D:\Software\MediaPortal\MPSync\[Name]-v[Version].mpe1
-
-
-
-
- String
- The icon file of the package stored online (jpg,png,bmp)
-
-
-
- Template
- The file used to configure the extension.
- If have .exe extension the will be executed
- If have .dll extension used like MP plugin configuration
-
-
- http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(1)%20MPSync_settings.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(2)%20MPSync_database_paths.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(3)%20MPSync_database_advanced_settings.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(4)%20MPSync_database_other.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(5)%20MPSync_database_watched_status.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(6)%20MPSync_folder_list.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(7)%20MPSync_thumbs_paths.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(8)%20MPSync_thumbs_advanced_settings.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(9)%20MPSync_status.jpg
- String
- Online stored screenshot urls separated by ;
-
-
- YES
- Bool
- Show dialog and force to uninstall previous version when updating an extension. Should only be disabled if you are using an NSIS/MSI installer.
-
-
-
-
-
-
-
-
-
-
- false
-
-
- 2.0
-
-
-
- Default
- true
- Default
-
-
-
-
-
- SQLite
- true
- SQLite
-
-
-
-
-
-
-
-
-
-
-
-
- Extension
- 284fc21c-86e3-4346-bf31-9e38c75e0242
-
- 1
- 5
- 1
- 1487
-
-
- 9
- 9
- 9
- 9
-
- true
- requires Moving Pictures version 1.5.1.1487 or higher
- Moving Pictures
-
-
- Extension
- 5e2777c3-966c-407f-b5a9-e51205b70b3e
-
- 3
- 4
- 2
- 2018
-
-
- 9
- 9
- 9
- 9
-
- true
- requires MP-TVSeries version 3.4.2.2018 or higher
- MP-TVSeries
-
-
- MediaPortal
-
-
- 1
- 1
- 6
- 27644
-
-
- 1
- 1
- 6
- 27644
-
- false
- This version of MPSync is only compatible with MediaPortal 1.7 or greater. Please download version that is supported by your version of MediaPortal from the MPSync homepage.
- MediaPortal
-
-
-
-
-
-
-
-
-
- 1.6.100.0
- 1.6.100.0
-
-
-
-
-
-
-
-
-
-
-
-
-
- MPSync
- 8ddbfb53-7222-41fd-a139-407eacd78464
- m3rcury
- http://www.team-mediaportal.com/extensions/utilities/cdb-sync?lang=en
- http://forum.team-mediaportal.com/threads/plugin-mpsync-mediaportal-synchronization.117417/#post-975411
- http://www.team-mediaportal.com/index.php?option=com_mtree&task=att_download&link_id=268&cf_id=52
-
- 1
- 0
- 0
- 21
-
- This plugin synchronizes your MediaPortal databases with a central database as well as thumbs folder, so that any additons can by automatically applied to any other MP seat you might have in your household.
- 1.Faster directory scanning for Folder Synchronisation.
-2.Possibility to limit threads for background synchronisation to reduce Memory and CPU utilisation.
-3.Ability to remove folders from target drive if these do not exist on source.
- Stable
- http://www.team-mediaportal.com/index.php?option=com_mtree&task=att_download&link_id=268&cf_id=24
- 2018-06-23T23:39:41
- synchronization, database, thumbs, any folder you set up.
- D:\Software\MediaPortal\MPSync\[Name]-v[Version].mpe1
-
-
-
-
- String
- The icon file of the package stored online (jpg,png,bmp)
-
-
-
- Template
- The file used to configure the extension.
- If have .exe extension the will be executed
- If have .dll extension used like MP plugin configuration
-
-
- http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(1)%20MPSync_settings.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(2)%20MPSync_database_paths.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(3)%20MPSync_database_advanced_settings.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(4)%20MPSync_database_other.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(5)%20MPSync_database_watched_status.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(6)%20MPSync_folder_list.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(7)%20MPSync_thumbs_paths.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(8)%20MPSync_thumbs_advanced_settings.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(9)%20MPSync_status.jpg
- String
- Online stored screenshot urls separated by ;
-
-
- YES
- Bool
- Show dialog and force to uninstall previous version when updating an extension. Should only be disabled if you are using an NSIS/MSI installer.
-
-
-
-
-
-
-
-
-
-
- false
-
-
- 2.0
-
-
-
- Default
- true
- Default
-
-
-
-
-
- SQLite
- true
- SQLite
-
-
-
-
-
-
-
-
-
-
-
-
- Extension
- 284fc21c-86e3-4346-bf31-9e38c75e0242
-
- 1
- 5
- 1
- 1487
-
-
- 9
- 9
- 9
- 9
-
- true
- requires Moving Pictures version 1.5.1.1487 or higher
- Moving Pictures
-
-
- Extension
- 5e2777c3-966c-407f-b5a9-e51205b70b3e
-
- 3
- 4
- 2
- 2018
-
-
- 9
- 9
- 9
- 9
-
- true
- requires MP-TVSeries version 3.4.2.2018 or higher
- MP-TVSeries
-
-
- MediaPortal
-
-
- 1
- 1
- 6
- 27644
-
-
- 1
- 1
- 6
- 27644
-
- false
- This version of MPSync is only compatible with MediaPortal 1.7 or greater. Please download version that is supported by your version of MediaPortal from the MPSync homepage.
- MediaPortal
-
-
-
-
-
-
-
-
-
- 1.6.100.0
- 1.6.100.0
-
-
-
-
-
-
-
-
-
-
-
-
-
- MPSync
- 8ddbfb53-7222-41fd-a139-407eacd78464
- m3rcury
- http://www.team-mediaportal.com/extensions/utilities/cdb-sync?lang=en
- http://forum.team-mediaportal.com/threads/plugin-mpsync-mediaportal-synchronization.117417/#post-975411
- http://www.team-mediaportal.com/index.php?option=com_mtree&task=att_download&link_id=268&cf_id=52
-
- 1
- 0
- 0
- 22
-
- This plugin synchronizes your MediaPortal databases with a central database as well as thumbs folder, so that any additons can by automatically applied to any other MP seat you might have in your household.
- Added some more logging and minor bug fixing
- Stable
- http://www.team-mediaportal.com/index.php?option=com_mtree&task=att_download&link_id=268&cf_id=24
- 2018-09-23T23:39:41
- synchronization, database, thumbs, any folder you set up.
- D:\Software\MediaPortal\MPSync\[Name]-v[Version].mpe1
-
-
-
-
- String
- The icon file of the package stored online (jpg,png,bmp)
-
-
-
- Template
- The file used to configure the extension.
- If have .exe extension the will be executed
- If have .dll extension used like MP plugin configuration
-
-
- http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(1)%20MPSync_settings.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(2)%20MPSync_database_paths.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(3)%20MPSync_database_advanced_settings.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(4)%20MPSync_database_other.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(5)%20MPSync_database_watched_status.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(6)%20MPSync_folder_list.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(7)%20MPSync_thumbs_paths.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(8)%20MPSync_thumbs_advanced_settings.jpg;http://cdbsync-plugin.googlecode.com/svn/wiki/screens/(9)%20MPSync_status.jpg
- String
- Online stored screenshot urls separated by ;
-
-
- YES
- Bool
- Show dialog and force to uninstall previous version when updating an extension. Should only be disabled if you are using an NSIS/MSI installer.
-
-
-
-
-
-
-
-
-
-
- false
-
-
-
\ No newline at end of file
diff --git a/MPSync_Launcher/MPSync_Launcher.sln b/MPSync_Launcher/MPSync_Launcher.sln
deleted file mode 100644
index 22c1867..0000000
--- a/MPSync_Launcher/MPSync_Launcher.sln
+++ /dev/null
@@ -1,28 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Express 2013 for Windows Desktop
-VisualStudioVersion = 12.0.21005.1
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MPSync_Launcher", "MPSync_Launcher\MPSync_Launcher.csproj", "{F8303E7F-DDB0-49AD-B960-B6B7CA00C6E1}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Any CPU = Debug|Any CPU
- Debug|x86 = Debug|x86
- Release|Any CPU = Release|Any CPU
- Release|x86 = Release|x86
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {F8303E7F-DDB0-49AD-B960-B6B7CA00C6E1}.Debug|Any CPU.ActiveCfg = Release|Any CPU
- {F8303E7F-DDB0-49AD-B960-B6B7CA00C6E1}.Debug|Any CPU.Build.0 = Release|Any CPU
- {F8303E7F-DDB0-49AD-B960-B6B7CA00C6E1}.Debug|x86.ActiveCfg = Debug|x86
- {F8303E7F-DDB0-49AD-B960-B6B7CA00C6E1}.Debug|x86.Build.0 = Debug|x86
- {F8303E7F-DDB0-49AD-B960-B6B7CA00C6E1}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {F8303E7F-DDB0-49AD-B960-B6B7CA00C6E1}.Release|Any CPU.Build.0 = Release|Any CPU
- {F8303E7F-DDB0-49AD-B960-B6B7CA00C6E1}.Release|x86.ActiveCfg = Release|x86
- {F8303E7F-DDB0-49AD-B960-B6B7CA00C6E1}.Release|x86.Build.0 = Release|x86
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/MPSync_Launcher/MPSync_Launcher.v12.suo b/MPSync_Launcher/MPSync_Launcher.v12.suo
deleted file mode 100644
index 0920d6e..0000000
Binary files a/MPSync_Launcher/MPSync_Launcher.v12.suo and /dev/null differ
diff --git a/MPSync_Launcher/MPSync_Launcher/MPSync_Launcher.csproj b/MPSync_Launcher/MPSync_Launcher/MPSync_Launcher.csproj
index 878eaac..ff842fa 100644
--- a/MPSync_Launcher/MPSync_Launcher/MPSync_Launcher.csproj
+++ b/MPSync_Launcher/MPSync_Launcher/MPSync_Launcher.csproj
@@ -10,7 +10,7 @@
PropertiesMPSync_LauncherMPSync_Launcher
- v4.0
+ v4.7.2512
@@ -33,37 +33,40 @@
falsetrue
-
+ true
- full
- false
- bin\Debug\
+ bin\Debug\x64\DEBUG;TRACE
+ full
+ x64
+ 7.3prompt
- 4
-
- pdbonly
- true
- bin\Release\
+
+ bin\Release\x64\TRACE
+ true
+ pdbonly
+ x64
+ 7.3prompt
- 4
-
+ true
- bin\x86\Debug\
+ bin\Debug\x86\DEBUG;TRACEfullx86
+ 7.3prompt
-
- bin\Release\
+
+ bin\Release\x86\TRACEtruepdbonlyx86
+ 7.3prompt
@@ -74,14 +77,14 @@
MPSync.ico
-
+ False
- C:\Program Files (x86)\Team MediaPortal\MediaPortal\Common.Utils.dll
+ ..\..\External\Common.Utils.dll
-
+ False
- C:\Program Files (x86)\Team MediaPortal\MediaPortal\Core.dll
- False
+ ..\..\External\Core.dll
+ TrueFalse
@@ -99,9 +102,9 @@
-
+ False
- C:\Program Files (x86)\Team MediaPortal\MediaPortal\Utils.dll
+ ..\..\External\Utils.dll
@@ -155,6 +158,12 @@
+
+
+ {c23857f2-6ba9-4fa4-9d15-b535c5c41564}
+ MPSync
+
+