You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by be...@apache.org on 2013/05/23 04:07:48 UTC

[1/3] git commit: [CB-2448] Added upgrade script for cordova projects

Updated Branches:
  refs/heads/master 342198f52 -> e34ac8ccb


[CB-2448] Added upgrade script for cordova projects


Project: http://git-wip-us.apache.org/repos/asf/cordova-wp8/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-wp8/commit/69c61b08
Tree: http://git-wip-us.apache.org/repos/asf/cordova-wp8/tree/69c61b08
Diff: http://git-wip-us.apache.org/repos/asf/cordova-wp8/diff/69c61b08

Branch: refs/heads/master
Commit: 69c61b08b9a9a3981bc523acb8cc6f6f46836334
Parents: 342198f
Author: Benn Mapes <be...@gmail.com>
Authored: Wed May 22 16:08:27 2013 -0700
Committer: Benn Mapes <be...@gmail.com>
Committed: Wed May 22 16:14:51 2013 -0700

----------------------------------------------------------------------
 bin/update.bat |    9 ++
 bin/update.js  |  353 +++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 362 insertions(+), 0 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-wp8/blob/69c61b08/bin/update.bat
----------------------------------------------------------------------
diff --git a/bin/update.bat b/bin/update.bat
new file mode 100644
index 0000000..9da7e3c
--- /dev/null
+++ b/bin/update.bat
@@ -0,0 +1,9 @@
+@ECHO OFF
+SET full_path=%~dp0
+IF EXIST %full_path%update.js (
+        cscript "%full_path%update.js" %* //nologo
+) ELSE (
+    ECHO.
+    ECHO ERROR: Could not find 'update.js' in 'bin' folder, aborting...>&2
+    EXIT /B 1
+)
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-wp8/blob/69c61b08/bin/update.js
----------------------------------------------------------------------
diff --git a/bin/update.js b/bin/update.js
new file mode 100644
index 0000000..f2acd6f
--- /dev/null
+++ b/bin/update.js
@@ -0,0 +1,353 @@
+/*
+       Licensed to the Apache Software Foundation (ASF) under one
+       or more contributor license agreements.  See the NOTICE file
+       distributed with this work for additional information
+       regarding copyright ownership.  The ASF licenses this file
+       to you under the Apache License, Version 2.0 (the
+       "License"); you may not use this file except in compliance
+       with the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+       Unless required by applicable law or agreed to in writing,
+       software distributed under the License is distributed on an
+       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+       KIND, either express or implied.  See the License for the
+       specific language governing permissions and limitations
+       under the License.
+*/
+
+var fso           = WScript.CreateObject("Scripting.FileSystemObject");
+var wscript_shell = WScript.CreateObject("WScript.Shell");
+var shell         = WScript.CreateObject("shell.application");
+var args          = WScript.Arguments;
+// working dir
+var ROOT = WScript.ScriptFullName.split('\\bin\\update.js').join('');
+//Get version number
+var VERSION = read(ROOT+'\\VERSION').replace(/\r\n/,'').replace(/\n/,'');
+var plugins_folder = "\\Plugins";
+var template_folder = "\\templates\\standalone";
+// anything thats missing to the project
+var overwrite = false;
+var replace = false;
+
+// usage function
+function Usage() {
+    Log("WARNING : Make sure to back up your project before updating!")
+    Log("Usage: update Path-To-Project ");//[ -f | -r ] ");
+    Log("    Path-To-Old-Project : The path the project you would like to update.");
+    //Log("                     -f : Will forcefully overwrite and add all core components of the application.");
+    //Log("                     -r : Will create an updated project, only keeping the www assets. *NOTE: no native code will be preserved*");
+    Log("examples:");
+    Log("    update C:\\Users\\anonymous\\Desktop\\MyProject");
+}
+
+// logs messaged to stdout and stderr
+function Log(msg, error) {
+    if (error) {
+        WScript.StdErr.WriteLine(msg);
+    }
+    else {
+        WScript.StdOut.WriteLine(msg);
+    }
+}
+
+// executes a commmand in the shell
+function exec(command) {
+    Log("Command : " + command);
+    var oShell=wscript_shell.Exec(command);
+    while (oShell.Status === 0) {
+        WScript.sleep(100);
+    }
+}
+
+// executes a commmand in the shell
+function exec_verbose(command) {
+    Log("Command: " + command);
+    var oShell=wscript_shell.Exec(command);
+    while (oShell.Status == 0) {
+        //Wait a little bit so we're not super looping
+        WScript.sleep(100);
+        //Print any stdout output from the script
+        if (!oShell.StdOut.AtEndOfStream) {
+            var line = oShell.StdOut.ReadAll();
+            Log(line);
+        }
+    }
+    //Check to make sure our scripts did not encounter an error
+    if (!oShell.StdErr.AtEndOfStream) {
+        var line = oShell.StdErr.ReadAll();
+        Log(line, true);
+        WScript.Quit(2);
+    }
+}
+
+var ForReading = 1, ForWriting = 2, ForAppending = 8;
+var TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0;
+
+// returns the contents of a file
+function read(filename) {
+    if (fso.FileExists(filename)) {
+        var f=fso.OpenTextFile(filename, 1, 2);
+        var s=f.ReadAll();
+        f.Close();
+        return s;
+    }
+    else {
+        Log('Cannot read non-existant file : ' + filename, true);
+        WScript.Quit(2);
+    }
+    return null;
+}
+
+// writes the contents to the specified file
+function write(filename, contents) {
+    var f=fso.OpenTextFile(filename, ForWriting, TristateTrue);
+    f.Write(contents);
+    f.Close();
+}
+
+// replaces the matches of regexp with replacement
+function replaceInFile(filename, regexp, replacement) {
+    var text = read(filename).replace(regexp,replacement);
+    write(filename,text);
+}
+
+// returns true if the given path is the root of a cordova windows phone project
+// currently returns true if the folder contains a .csproj file.
+function is_windows_phone_project(path) {
+    if (fso.FolderExists(path)) {
+        var proj_folder = fso.GetFolder(path);
+        var proj_files = new Enumerator(proj_folder.Files);
+        for (;!proj_files.atEnd(); proj_files.moveNext()) {
+            if (fso.GetExtensionName(proj_files.item()) == 'csproj') {
+                return true;  
+            }
+        }
+    }
+    return false;
+}
+
+// returns the name of the application
+function get_app_name(path) {
+    var WMAppManifest = read(path + '\\Properties\\WMAppManifest.xml').split('\n');
+    for (line in WMAppManifest) {
+        if (WMAppManifest[line].match(/Title\=\"/)) {
+            return WMAppManifest[line].split('Title="')[1].split('"')[0];
+        }
+    }
+    Log("Error : unable to find applicaiton name in the project.", true);
+    Log(" Path : " + path, true);
+    WScript.Quit(2);
+}
+
+// returns the name of the application package
+function get_package_name(path) {
+    var WMAppManifest = read(path + '\\Properties\\WMAppManifest.xml').split('\n');
+    for (line in WMAppManifest) {
+        if (WMAppManifest[line].match(/Title\=\"/)) {
+            return WMAppManifest[line].split('Title="')[1].split('"')[0];
+        }
+    }
+    Log("Error : unable to find applicaiton name in the project.", true);
+    Log(" Path : " + path, true);
+    WScript.Quit(2);
+}
+
+// returns the GUID ame of the application
+function get_app_GUID(path) {
+    var AppXAML = read(path + '\\App.xaml').split('\n');
+    for (line in AppXAML) {
+        if (AppXAML[line].match(/x\:Class\=\"/)) {
+            return AppXAML[line].split('Class="')[1].split('"')[0];
+        }
+    }
+    Log("Error : unable to find package name in the project.", true);
+    Log(" Path : " + path, true);
+    WScript.Quit(2);
+}
+
+// updates the cordova.js and all references in the given project with this repositories version
+function update_cordova_js(path) {
+    // remove old cordova.js
+    var www_contents = shell.NameSpace(path + '\\www').Items();
+    for(i = 0; i < www_contents.Count; i++)
+    {
+        if(www_contents.Item(i).Name.match(/cordova\-(\d+)[.](\d+)[.](\d+)(rc\d)?[.]js/))
+        {
+            fso.DeleteFile(path + '\\www\\' + www_contents.Item(i).Name);
+        }
+    }
+    // update version file
+    copy_to(ROOT + "\\VERSION",  path + "\\VERSION");
+    // copy over new cordova.js
+    copy_to(ROOT + template_folder + "\\www\\cordova.js", path + "\\www\\cordova.js");
+
+    // update corodva references
+    var cordova_regex = /cordova-(\d+)[.](\d+)[.](\d+)(rc\d)?/g; //Matches *first* cordova-x.x.x[rcx] (just ad g at end to make global)
+    // update references in index.html
+    replaceInFile(path + '\\www\\index.html', cordova_regex,  "cordova");
+    version_regex = /return\s*\"(\d+)[.](\d+)[.](\d+)(rc\d)?/; //Matches return "x.x.x[rcx]
+    // update references in Device.cs
+    replaceInFile(path + '\\Plugins\\Device.cs', version_regex,  "return \"" + VERSION);
+}
+
+// Copies assets that need to be saved from source to desination.
+// TODO : Add all critical assets here
+function save_restore(source, destination) {
+    fso.CreateFolder(destination + '\\www');
+    copy_to(source + '\\www', destination + '\\www');
+    copy_to(source + '\\SplashScreenImage.jpg', destination + '\\SplashScreenImage.jpg');
+    copy_to(source + '\\Background.png', destination + '\\Background.png');
+    copy_to(source + '\\ApplicationIcon.png', destination + '\\ApplicationIcon.png');
+    copy_to(source + '\\config.xml', destination + '\\config.xml');
+}
+
+// deletes the path element if it exists
+function delete_if_exists(path) {
+    if (fso.FolderExists(path)) {
+        fso.DeleteFolder(path);
+    }
+    else if (fso.FileExists(path)) {
+        fso.DeleteFile(path);
+    }
+}
+
+// copies a folder or file from source to destination
+function copy_to(source, destination) {
+    // check that source exists
+    if (!fso.FolderExists(source)) {
+        if (!fso.FileExists(source)) {
+            Log("Error : Could not copy file/folder because it doesn't exist.", true);
+            Log("      File/Folder : " + source, true);
+            WScript.Quit(2);
+        }
+    }
+    // if source is a folder, then copy all folder contents
+    if (fso.FolderExists(source)) {
+        fso.CopyFolder(source, destination, true);
+    } 
+    // if it's a file, just copy it.
+    else { 
+        exec('%comspec% /c copy /Y /V ' + source + ' ' + destination);
+    }
+}
+
+// updates the cordova.js in project along with the cordova tooling.
+function update_project(path) {
+    // update cordova folder
+    delete_if_exists(path + '\\cordova');
+    fso.CreateFolder(path + '\\cordova');
+    copy_to(ROOT + template_folder + '\\cordova', path + '\\cordova');
+    // clean project (all generated files)
+    exec(path + '\\cordova\\clean.bat');
+
+    // update core cordovalib
+    delete_if_exists(path + '\\cordovalib');
+    fso.CreateFolder(path + '\\cordovalib');
+    copy_to(ROOT + template_folder + '\\cordovalib', path + '\\cordovalib');
+
+    // update core plugins
+    // TODO : Remove for 3.0.0
+    delete_if_exists(path + '\\Plugins');
+    fso.CreateFolder(path + '\\Plugins');
+    copy_to(ROOT + template_folder + '\\Plugins', path + '\\Plugins');
+
+    // update cordova.js
+    update_cordova_js(path);
+}
+
+// Replaces the current project with a newly created project, keeping important assets to preserve the app.
+// TODO: Things that need to be kept other then www
+// - WMAppManifest (capabilities etc...)
+// - GUID (for marketplace apps etc...)
+// - Splashscreen and other images etc...
+// - Find more things that should be kept
+function replace_project(path) {
+    //create new project and move www assets into it.
+    Log("WARNING : Upgrading your app with the \'-r\' flag will delete all native and plugin");
+    Log(" components of your application and replace them with the updated core components given");
+    Log(" by this platforms \'bin\\create\' script.  It is *HIGHLY RECOMMENDED* to back up your app");
+    Log(" before continuing. The name and package name along with all of the www assets will be");
+    Log(" preserved. Are you sure you wish to continue? (Y/N)");
+    var response;
+    while (response != 'Y') {
+        response = WScript.StdIn.ReadLine();
+        if (response == 'N') {
+            WScript.Quit(2);
+        } else if (response != "Y") {
+            Log("Error :  did not recognize '" + response + "'");
+            Log("Are you sure you wish to continue? (Y/N)");
+        }
+    }
+    // place all assets to be preserved in a temperary folder
+    delete_if_exists(ROOT + '\\temp');
+    fso.CreateFolder(ROOT + '\\temp');
+    save_restore(path, ROOT + '\\temp');
+
+    // get app name from WMAppManifest
+    var app_name = get_app_name(path);
+    // get package name from App.xaml
+    var package_name = get_package_name(path);
+    // get the GUID so that app stays the same
+    var app_GUID = get_app_GUID(path);
+    // delete previous project
+    delete_if_exists(path);
+    // create the new project from the current repository
+    exec(ROOT + '\\bin\\create.bat ' + path + ' ' + app_name + ' ' + package_name);
+    // remove default www assets
+    delete_if_exists(path + '\\www');
+    // move www assets back to project folder
+    save_restore(ROOT + '\\temp', path);
+    // cleanup temp folder
+    delete_if_exists(ROOT + '\\temp');
+}
+
+
+
+if (args.Count() > 0) {
+    if(args.Count() > 2) {
+        Log("Error : too many arguments provided.", true);
+        WScript.Quit(1);
+    }
+
+    if (args(0).indexOf("--help") > -1 ||
+          args(0).indexOf("/?") > -1 ) {
+        Usage();
+        WScript.Quit(1);
+    }
+    else if (fso.FolderExists(args(0)) && is_windows_phone_project(args(0))) {
+        if(args.Count() > 1) {
+            /*if(args(1) == '-f' || args(1) == '--force') {
+                //TODO: do something for this
+                Log("ERROR : NOT IMPLEMENTED", true);
+                WScript.Quit(2);
+            }
+            else if(args(1) == '-r' || args(1) == '--replace') {
+                replace_project(args(0));
+            }
+            else {
+                Log('Error : \'' + args(1) + '\' is not regognized as an update option', true);
+            }*/
+            Usage();
+            Log('Error : too many arguments', true);
+        } else if (args.Count() == 1) {
+            update_project(args(0));
+        }
+    }
+    else if (fso.FolderExists(args(0))) {
+        Log("The path provided is not a path to a cordova windows phone project.", true);
+        Log(" Please provide the path to the root folder of your cordova windows phone project.", true);
+        WScript.Quit(2);
+    }
+    else {
+        Log("The given path to the project does not exist.", true);
+        Log(" Please provide a path to the project you would like to update.", true);
+        Usage();
+        WScript.Quit(2);
+    }
+}
+else {
+    Usage();
+    WScript.Quit(1);
+}
\ No newline at end of file


[3/3] git commit: Updated distribution tools

Posted by be...@apache.org.
Updated distribution tools


Project: http://git-wip-us.apache.org/repos/asf/cordova-wp8/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-wp8/commit/e34ac8cc
Tree: http://git-wip-us.apache.org/repos/asf/cordova-wp8/tree/e34ac8cc
Diff: http://git-wip-us.apache.org/repos/asf/cordova-wp8/diff/e34ac8cc

Branch: refs/heads/master
Commit: e34ac8ccbb66f63c11568a40e212227f6cf6b179
Parents: 3609339
Author: Benn Mapes <be...@gmail.com>
Authored: Wed May 22 18:51:17 2013 -0700
Committer: Benn Mapes <be...@gmail.com>
Committed: Wed May 22 18:58:21 2013 -0700

----------------------------------------------------------------------
 bin/create.js                                |   33 ++++++--
 templates/standalone/cordova/lib/clean.js    |   37 +++++----
 templates/vs/MyTemplateStandAlone.vstemplate |   33 ++++++++-
 tooling/scripts/buildjs.js                   |   36 +++++----
 tooling/scripts/dist.js                      |   83 +++++++++++++--------
 tooling/scripts/package.js                   |   50 ++++++++++++-
 tooling/scripts/reversion.js                 |   10 ---
 tooling/scripts/win-zip.js                   |   43 -----------
 8 files changed, 196 insertions(+), 129 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-wp8/blob/e34ac8cc/bin/create.js
----------------------------------------------------------------------
diff --git a/bin/create.js b/bin/create.js
index a7694cf..d5e7c46 100644
--- a/bin/create.js
+++ b/bin/create.js
@@ -43,7 +43,9 @@ var args = WScript.Arguments,
     USE_DLL = false,
     PROJECT_PATH, 
     PACKAGE, 
-    NAME;
+    NAME,
+    GUID;
+
 
     // get version number
 var VERSION=read(ROOT+'\\VERSION').replace(/\r\n/,'').replace(/\n/,'');
@@ -148,7 +150,7 @@ function build_dll(path) {
 }
 
 // creates new project in path, with the given package and app name
-function create(path, namespace, name) {
+function create(path, namespace, name, guid) {
     Log("Creating Cordova-WP7 Project:");
     Log("\tApp Name : " + name);
     Log("\tNamespace : " + namespace);
@@ -156,8 +158,12 @@ function create(path, namespace, name) {
 
     // Copy the template source files to the new destination
     fso.CopyFolder(ROOT + CREATE_TEMPLATE, path);
-
-    var newProjGuid = genGuid();
+    var newProjGuid;
+    if (guid) {
+        newProjGuid = guid;
+    } else {
+        newProjGuid = genGuid();
+    }
     // replace the guid in the AppManifest
     replaceInFile(path + "\\Properties\\WMAppManifest.xml","$guid1$",newProjGuid);
     // replace safe-project-name in AppManifest
@@ -172,10 +178,11 @@ function create(path, namespace, name) {
     replaceInFile(path + "\\MainPage.xaml.cs",/\$safeprojectname\$/g,namespace);
     replaceInFile(path + "\\CordovaAppProj.csproj",/\$safeprojectname\$/g,namespace);
     if (NAME != "CordovaAppProj") {
-        replaceInFile(path + "\\CordovaSolution.sln",/CordovaAppProj/g,NAME);
+        var valid_name = NAME.replace(/(\.\s|\s\.|\s+|\.+)/g, '_');
+        replaceInFile(path + "\\CordovaSolution.sln", /CordovaAppProj/g, valid_name);
         // rename project and solution
-        exec('%comspec% /c ren ' + path + "\\CordovaSolution.sln " + NAME + '.sln');
-        exec('%comspec% /c ren ' + path + "\\CordovaAppProj.csproj " + NAME + '.csproj');
+        exec('%comspec% /c ren ' + path + "\\CordovaSolution.sln " + valid_name + '.sln');
+        exec('%comspec% /c ren ' + path + "\\CordovaAppProj.csproj " + valid_name + '.csproj');
     }
 
     //copy .dll if necessary
@@ -242,7 +249,17 @@ if (args.Count() > 0) {
         NAME = "CordovaAppProj";
     }
 
-    create(PROJECT_PATH, PACKAGE, NAME);
+    if (args.Count() > 3) {
+        var guid_regex = /\{{0,1}([0-9a-fA-F]){8}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){12}\}/;
+        if (args(3).substr(0,7) == "--guid=" && args(3).match(guid_regex)) {
+            GUID = args(3).split
+        } else {
+            Log("Did not recognize argument '" + args(3) + "'. If your trying to add a GUID make sure it's in the proper format.");
+            WScript.Quit(2);
+        }
+    }
+
+    create(PROJECT_PATH, PACKAGE, NAME, GUID);
 }
 else {
     Usage();

http://git-wip-us.apache.org/repos/asf/cordova-wp8/blob/e34ac8cc/templates/standalone/cordova/lib/clean.js
----------------------------------------------------------------------
diff --git a/templates/standalone/cordova/lib/clean.js b/templates/standalone/cordova/lib/clean.js
index 3a8c871..caa1957 100644
--- a/templates/standalone/cordova/lib/clean.js
+++ b/templates/standalone/cordova/lib/clean.js
@@ -50,32 +50,37 @@ function Log(msg, error) {
 
 // cleans any generated files in the cordova project
 function clean_project(path) {
-    if (fso.FolderExists(path + "\\obj")) {
-        fso.DeleteFolder(path + "\\obj");
-    }
-    if (fso.FolderExists(path + "\\Bin")) {
-        fso.DeleteFolder(path + "\\Bin");
+    delete_if_exists(path + "\\obj");
+    delete_if_exists(path + "\\Bin");
+    // delete AppName.csproj.user as well? Service References?
+    var proj_folder = fso.GetFolder(path);
+    var proj_files = new Enumerator(proj_folder.Files);
+    for (;!proj_files.atEnd(); proj_files.moveNext()) {
+        if (fso.GetExtensionName(proj_files.item()).match(/user/)) {
+            fso.DeleteFile(proj_files.item());
+        }
     }
-    //TODO: delete CordovaAppProj.csproj.user as well? Service References?
 }
 
 // cleans any files generated by build --debug
 function clean_debug(path) {
-    if (fso.FolderExists(path + "\\obj\\Debug")) {
-        fso.DeleteFolder(path + "\\obj\\Debug");
-    }
-    if (fso.FolderExists(path + "\\Bin\\Debug")) {
-        fso.DeleteFolder(path + "\\Bin\\Debug");
-    }
+    delete_if_exists(path + "\\obj\\Debug");
+    delete_if_exists(path + "\\Bin\\Debug");
 }
 
 // cleans any files generated by build --release
 function clean_release(path) {
-    if (fso.FolderExists(path + "\\obj\\Release")) {
-        fso.DeleteFolder(path + "\\obj\\Release");
+    delete_if_exists(path + "\\obj\\Release");
+    delete_if_exists(path + "\\Bin\\Release");
+}
+
+// deletes the path element if it exists
+function delete_if_exists(path) {
+    if (fso.FolderExists(path)) {
+        fso.DeleteFolder(path);
     }
-    if (fso.FolderExists(path + "\\Bin\\Release")) {
-        fso.DeleteFolder(path + "\\Bin\\Release");
+    else if (fso.FileExists(path)) {
+        fso.DeleteFile(path);
     }
 }
 

http://git-wip-us.apache.org/repos/asf/cordova-wp8/blob/e34ac8cc/templates/vs/MyTemplateStandAlone.vstemplate
----------------------------------------------------------------------
diff --git a/templates/vs/MyTemplateStandAlone.vstemplate b/templates/vs/MyTemplateStandAlone.vstemplate
index d7e4a70..ab5a43b 100644
--- a/templates/vs/MyTemplateStandAlone.vstemplate
+++ b/templates/vs/MyTemplateStandAlone.vstemplate
@@ -96,7 +96,7 @@
       <ProjectItem ReplaceParameters="false" TargetFileName="SplashScreenImage.jpg">SplashScreenImage.jpg</ProjectItem>
       <ProjectItem ReplaceParameters="false" TargetFileName="VERSION">VERSION</ProjectItem>
       <Folder Name="www" TargetFolderName="www">
-        <ProjectItem ReplaceParameters="true" TargetFileName="cordova-2.7.0.js">cordova-2.7.0.js</ProjectItem>
+        <ProjectItem ReplaceParameters="true" TargetFileName="cordova.js">cordova.js</ProjectItem>
         <Folder Name="css" TargetFolderName="css">
           <ProjectItem ReplaceParameters="true" TargetFileName="index.css">index.css</ProjectItem>
         </Folder>
@@ -108,6 +108,37 @@
           <ProjectItem ReplaceParameters="true" TargetFileName="index.js">index.js</ProjectItem>
         </Folder>
       </Folder>
+      <Folder Name="cordova" TargetFolderName="cordova">
+        <ProjectItem ReplaceParameters="false" TargetFileName="build.bat">build.bat</ProjectItem>
+        <ProjectItem ReplaceParameters="false" TargetFileName="clean.bat">clean.bat</ProjectItem>
+        <ProjectItem ReplaceParameters="false" TargetFileName="log.bat">log.bat</ProjectItem>
+        <ProjectItem ReplaceParameters="false" TargetFileName="run.bat">run.bat</ProjectItem>
+        <ProjectItem ReplaceParameters="false" TargetFileName="version.bat">version.bat</ProjectItem>
+        <Folder Name="lib" TargetFolderName="lib">
+          <ProjectItem ReplaceParameters="false" TargetFileName="build.js">build.js</ProjectItem>
+          <ProjectItem ReplaceParameters="false" TargetFileName="clean.js">clean.js</ProjectItem>
+          <ProjectItem ReplaceParameters="false" TargetFileName="deploy.js">deploy.js</ProjectItem>
+          <ProjectItem ReplaceParameters="false" TargetFileName="install-device.bat">install-device.bat</ProjectItem>
+          <ProjectItem ReplaceParameters="false" TargetFileName="install-emulator.bat">install-emulator.bat</ProjectItem>
+          <ProjectItem ReplaceParameters="false" TargetFileName="list-devices.bat">list-devices.bat</ProjectItem>
+          <ProjectItem ReplaceParameters="false" TargetFileName="list-emulator-images.bat">list-emulator-images.bat</ProjectItem>
+          <ProjectItem ReplaceParameters="false" TargetFileName="list-started-emulators.bat">list-started-emulators.bat</ProjectItem>
+          <ProjectItem ReplaceParameters="false" TargetFileName="log.js">log.js</ProjectItem>
+          <ProjectItem ReplaceParameters="false" TargetFileName="start-emulator.bat">start-emulator.bat</ProjectItem>
+          <ProjectItem ReplaceParameters="false" TargetFileName="target-list.js">target-list.js</ProjectItem>
+          <Folder Name="CordovaDeploy" TargetFolderName="CordovaDeploy">
+            <ProjectItem ReplaceParameters="false" TargetFileName="CordovaDeploy.sln">CordovaDeploy.sln</ProjectItem>
+            <Folder Name="CordovaDeploy" TargetFolderName="CordovaDeploy">
+              <ProjectItem ReplaceParameters="false" TargetFileName="app.config">app.config</ProjectItem>
+              <ProjectItem ReplaceParameters="false" TargetFileName="CordovaDeploy.csproj">CordovaDeploy.csproj</ProjectItem>
+              <ProjectItem ReplaceParameters="false" TargetFileName="Program.cs">Program.cs</ProjectItem>
+              <Folder Name="Properties" TargetFolderName="Properties">
+                <ProjectItem ReplaceParameters="false" TargetFileName="AssemblyInfo.cs">AssemblyInfo.cs</ProjectItem>
+              </Folder>
+            </Folder>
+          </Folder>
+        </Folder>
+      </Folder>
     </Project>
   </TemplateContent>
 </VSTemplate>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cordova-wp8/blob/e34ac8cc/tooling/scripts/buildjs.js
----------------------------------------------------------------------
diff --git a/tooling/scripts/buildjs.js b/tooling/scripts/buildjs.js
index 78e213c..9cd74fc 100644
--- a/tooling/scripts/buildjs.js
+++ b/tooling/scripts/buildjs.js
@@ -28,9 +28,6 @@ var args = WScript.Arguments,
     TEMPLATES_PATH = '\\templates',
     //Sub folder for standalone project
     STANDALONE_PATH = TEMPLATES_PATH + '\\standalone',
-    //Sub folder for full project
-    FULL_PATH = TEMPLATES_PATH + '\\full',
-    CUSTOM_PATH = TEMPLATES_PATH + '\\custom',
     //Sub folder containing framework
     FRAMEWORK_PATH = '\\framework',
     //Subfolder containing example project
@@ -41,9 +38,6 @@ var args = WScript.Arguments,
     VERSION = read(ROOT+'\\VERSION').replace(/\r\n/,'').replace(/\n/,''),
     BUILD_DESTINATION;
 
-function Log(msg) {
-    WScript.StdOut.WriteLine(msg);
-}
 
 // help function
 function Usage()
@@ -61,6 +55,16 @@ function Usage()
     Log("");
 }
 
+// logs messaged to stdout and stderr
+function Log(msg, error) {
+    if (error) {
+        WScript.StdErr.WriteLine(msg);
+    }
+    else {
+        WScript.StdOut.WriteLine(msg);
+    }
+}
+
 // returns the contents of a file
 function read(filename) {
     //Log('Reading in ' + filename);
@@ -104,7 +108,7 @@ function exec_verbose(command) {
     if(!oShell.StdErr.AtEndOfStream)
     {
         var err_line = oShell.StdErr.ReadAll();
-        WScript.StdErr.WriteLine(err_line);
+        Log(err_line, true);
         WScript.Quit(1);
     }
 }
@@ -137,10 +141,8 @@ function build_js(path)
 
     //copy the javascript wherever it needs to go.
     wscript_shell.CurrentDirectory = path + '\\temp\\cordova-js\\pkg';
-    exec('%comspec% /c copy /Y cordova.windowsphone.js ' + path + STANDALONE_PATH + '\\www\\cordova-' + VERSION + '.js');
-    exec('%comspec% /c copy /Y cordova.windowsphone.js ' + path + FULL_PATH + '\\www\\cordova-' + VERSION + '.js');
-    exec('%comspec% /c copy /Y cordova.windowsphone.js ' + path + CUSTOM_PATH + '\\www\\cordova-' + VERSION + '.js');
-    exec('%comspec% /c copy /Y cordova.windowsphone.js ' + path + EXAMPLE_PATH + '\\www\\cordova-' + VERSION + '.js');
+    exec('%comspec% /c copy /Y cordova.windowsphone.js ' + path + STANDALONE_PATH + '\\www\\cordova.js');
+    exec('%comspec% /c copy /Y cordova.windowsphone.js ' + path + EXAMPLE_PATH + '\\www\\cordova.js');
 
     //TODO: Delete old cordova.js (done in reversion.js)
 
@@ -159,10 +161,10 @@ function set_path(some_arg)
         }
         else
         {
-            Log("ERROR: The given path is not a cordova-wp8 repo, or");
-            Log(" does not exist. If your trying to reversion a");
-            Log(" cordova repo other then this one, please provide");
-            Log(" it's path in the form: -p:C:\\Path\\to\\repo");
+            Log("ERROR: The given path is not a cordova-wp8 repo, or", true);
+            Log(" does not exist. If your trying to reversion a", true);
+            Log(" cordova repo other then this one, please provide", true);
+            Log(" it's path in the form: -p:C:\\Path\\to\\repo", true);
             WScript.Quit(1);
         }
         
@@ -198,8 +200,8 @@ if(args.Count() > 0)
     else if(set_path(arg(0))) {} //do nothing
     else
     {
-        Log("The provided version number is invalid, please provide");
-        Log(" a version number in the format Major.Minor.Fix[rc#]");
+        Log("The provided version number is invalid, please provide", true);
+        Log(" a version number in the format Major.Minor.Fix[rc#]", true);
         Usage();
         WScript.Quit(1);
     }

http://git-wip-us.apache.org/repos/asf/cordova-wp8/blob/e34ac8cc/tooling/scripts/dist.js
----------------------------------------------------------------------
diff --git a/tooling/scripts/dist.js b/tooling/scripts/dist.js
index 9dd93e6..e6d9fce 100644
--- a/tooling/scripts/dist.js
+++ b/tooling/scripts/dist.js
@@ -36,7 +36,7 @@ var fso = WScript.CreateObject('Scripting.FileSystemObject'),
     wscript_shell = WScript.CreateObject("WScript.Shell");
 
 //Replace root directory or create new directory?
-var REPLACE = false;
+var replace = false;
 
 //Set up directory structure of current release
     //arguments passed in
@@ -58,9 +58,6 @@ var current_script = "dist";
 /****************  FUNCTIONS  ********************/
 /*************************************************/
 
-function Log(msg) {
-    WScript.StdOut.WriteLine(msg);
-}
 
 // help function
 function Usage()
@@ -68,12 +65,22 @@ function Usage()
   Log("");
   Log("This is a command line tool for building new releases. It will package a new release");
   Log(" of a cordova-wp8 project, reversioning it to match the VERSION file in the root directory.");
-  Log("Usage: dist [ <NEW_PATH_FOR_BUILD> | -f ] ");
-  Log("                       -f : force tool to reversion the current repositoy.");
-  Log("     <NEW_PATH_FOR_BUILD> : path to create the new reversioned repositoy in.");
+  Log("Usage: dist [ <PATH_TO_NEW_REPO> | -f ] ");
+  Log("                       -f : reversion the repositoy this script is in.");
+  Log("       <PATH_TO_NEW_REPO> : path to create the new reversioned repositoy in.");
   Log("");
 }
 
+// logs messaged to stdout and stderr
+function Log(msg, error) {
+    if (error) {
+        WScript.StdErr.WriteLine(msg);
+    }
+    else {
+        WScript.StdOut.WriteLine(msg);
+    }
+}
+
 
 // returns the contents of a file
 function read(filename) {
@@ -110,8 +117,8 @@ function exec(command) {
     if(!oShell.StdErr.AtEndOfStream)
     {
         var err_line = oShell.StdErr.ReadAll();
-        WScript.StdErr.WriteLine(err_line);
-        WScript.StdErr.WriteLine("ERROR: Could not complete distribution, failed while running: " + current_script);
+        Log(err_line, true);
+        Log("ERROR: Could not complete distribution, failed while running: " + current_script, true);
         WScript.Quit(1);
     }
 }
@@ -128,29 +135,43 @@ function space()
 /**************  MAIN SCRIPT  ********************/
 /*************************************************/
 
-if(REPLACE)
-{
-    BUILD_DESTINATION = ROOT;
-}
-else if(args.Count() > 0)
-{
-    if(args(0) == '-f') {
-        REPLACE = true;
-        BUILD_DESTINATION = ROOT;
-    } else {
-       BUILD_DESTINATION = args(0);
-      //Support help flags
-      if(BUILD_DESTINATION.indexOf("--help") > -1 ||
-           BUILD_DESTINATION.indexOf("/?") > -1 )
-      {
-          Usage();
-          WScript.Quit(1);
-      }
-    }
+if (args.Count() > 0) {
+    if (args.Count() == 1) {
+        // support help flags
+        if (args(0).indexOf("--help") > -1 ||
+              args(0).indexOf("/?") > -1 ) {
+            Usage();
+            WScript.Quit(1);
+        }
+        else if (args(0) == '-f') {
+          BUILD_DESTINATION = ROOT;
+          replace = true;
+        }
+        else {
+          BUILD_DESTINATION = args(0);
+        }
 
+    }
+    else if (args.Count() == 2) {
+        if (args(0) == '-f') {
+            replace = true;
+            BUILD_DESTINATION = args(1);
+        } else {
+           BUILD_DESTINATION = args(0);
+           if (args(1) == '-f') {
+              replace = true;
+           }
+           else {
+              Log('WARNING : "' + args(1) + '" is not regognized, attempting to continue distribution.');
+           }
+        }
+    }
+    else {
+        Log("Error : too many arguments provided.", true);
+        WScript.Quit(1);
+    }
 }
-else
-{
+else {
     Usage();
     WScript.Quit(1);
 }
@@ -161,7 +182,7 @@ else
 /*************************************************/
 /** - Copy source code to new directory         **/
 /*************************************************/
-if (!REPLACE) {
+if (!replace) {
   current_script = "new.js";
   exec('cscript ' + ROOT + SCRIPTS + '\\new.js ' + BUILD_DESTINATION + ' //nologo');
   space();

http://git-wip-us.apache.org/repos/asf/cordova-wp8/blob/e34ac8cc/tooling/scripts/package.js
----------------------------------------------------------------------
diff --git a/tooling/scripts/package.js b/tooling/scripts/package.js
index 57a7340..71b61b5 100644
--- a/tooling/scripts/package.js
+++ b/tooling/scripts/package.js
@@ -43,7 +43,6 @@ var ADD_TO_VS = false;
 // build the dll?
 var BUILD_DLL = false;
 
-function Log(msg) { WScript.StdOut.WriteLine(msg); }
 
 // help function
 function Usage()
@@ -57,6 +56,16 @@ function Usage()
     Log("");
 }
 
+// logs messaged to stdout and stderr
+function Log(msg, error) {
+    if (error) {
+        WScript.StdErr.WriteLine(msg);
+    }
+    else {
+        WScript.StdOut.WriteLine(msg);
+    }
+}
+
 // returns the contents of a file
 function read(filename) {
     //Log('Reading in ' + filename);
@@ -100,7 +109,7 @@ function exec_verbose(command) {
     if(!oShell.StdErr.AtEndOfStream)
     {
         var err_line = oShell.StdErr.ReadAll();
-        WScript.StdErr.WriteLine(err_line);
+        Log(err_lin, true);
         WScript.Quit(1);
     }
 }
@@ -121,7 +130,7 @@ function package_templates()
     exec('%comspec% /c copy /Y ' + BUILD_DESTINATION + TEMPLATES_PATH + '\\vs\\pg_templatePreview.jpg ' + BUILD_DESTINATION + STANDALONE_PATH + '\\__PreviewImage.jpg');
     exec('%comspec% /c copy /Y ' + BUILD_DESTINATION + '\\VERSION ' + BUILD_DESTINATION + STANDALONE_PATH);
 
-    exec_verbose('cscript ' + BUILD_DESTINATION + '\\tooling\\scripts\\win-zip.js ' + template_path + ' ' + BUILD_DESTINATION + STANDALONE_PATH + '\\');
+    zip_project(template_path, BUILD_DESTINATION + STANDALONE_PATH);
 
 
     if(ADD_TO_VS)
@@ -139,6 +148,41 @@ function package_templates()
   }
 }
 
+function zip_project(zip_path, project_path) 
+{    
+    // create empty ZIP file and open for adding
+    var file = fso.CreateTextFile(zip_path, true);
+
+    // create twenty-two byte "fingerprint" for .zip
+    file.write("PK");
+    file.write(String.fromCharCode(5));
+    file.write(String.fromCharCode(6));
+    file.write('\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0');
+    file.Close();
+
+    // open .zip foder and copy contents of project_path to zip_path
+    var zipFolder = shell.NameSpace(zip_path);
+    var sourceItems = shell.NameSpace(project_path).items();
+    if (zipFolder !== null) {
+        zipFolder.CopyHere(sourceItems, 4|20|16);
+        var maxTime = 5000;
+        while(zipFolder.items().Count < sourceItems.Count)
+        {
+            maxTime -= 100;
+            if(maxTime > 0 ) {    
+                WScript.Sleep(100);
+            }
+            else {
+                Log('Failed to create .zip file.', true);
+                break;
+            }
+        }
+    }
+    else {
+        Log('Failed to create .zip file.', true);
+    }
+}
+
 // builds the new cordova dll and copys it to the full template (only done because of the version referance in Device.cs)
 function build_dll()
 {

http://git-wip-us.apache.org/repos/asf/cordova-wp8/blob/e34ac8cc/tooling/scripts/reversion.js
----------------------------------------------------------------------
diff --git a/tooling/scripts/reversion.js b/tooling/scripts/reversion.js
index a726817..702733b 100644
--- a/tooling/scripts/reversion.js
+++ b/tooling/scripts/reversion.js
@@ -141,18 +141,9 @@ function updateVersionNumbers() {
     // update standalone project
     exec('%comspec% /c copy /Y /V ' + BUILD_DESTINATION + "\\VERSION " + BUILD_DESTINATION + STANDALONE_PATH + "\\VERSION");
     var cordova_regex = /cordova-(\d+)[.](\d+)[.](\d+)(rc\d)?/g; //Matches *first* cordova-x.x.x[rcx] (just ad g at end to make global)
-    replaceInFile(BUILD_DESTINATION + STANDALONE_PATH + '\\CordovaAppProj.csproj', cordova_regex,  "cordova-" + VERSION);
-    replaceInFile(BUILD_DESTINATION + STANDALONE_PATH + '\\www\\index.html', cordova_regex,  "cordova-" + VERSION);
     version_regex = /return\s*\"(\d+)[.](\d+)[.](\d+)(rc\d)?/; //Matches return "x.x.x[rcx]
-
-    WScript.StdOut.WriteLine("path = " + BUILD_DESTINATION + CORDOVA_LIB + '\\Plugins\\Device.cs');
     replaceInFile(BUILD_DESTINATION + CORDOVA_LIB + '\\..\\Plugins\\Device.cs', version_regex,  "return \"" + VERSION);
 
-    // update example proj
-    replaceInFile(BUILD_DESTINATION + EXAMPLE_PATH + '\\CordovaExample.csproj', cordova_regex,  "cordova-" + VERSION);
-    version_regex = /VERSION\s*\=\s*\'(\d+)[.](\d+)[.](\d+)(rc\d)?/;  //Matches VERSION = x.x.x[rcx]
-    replaceInFile(BUILD_DESTINATION + EXAMPLE_PATH + '\\www\\cordova-current.js', version_regex,  "VERSION = \'" + VERSION);
-
     // update template discription
     version_regex = /Cordova\s*(\d+)[.](\d+)[.](\d+)(rc\d)?\s*Windows/g; //Matches version: x.x.x[rcx]
     replaceInFile(BUILD_DESTINATION + TEMPLATES_PATH + '\\vs\\description.txt', version_regex,  "Cordova " + VERSION + " Windows");
@@ -163,7 +154,6 @@ function updateVersionNumbers() {
 
     replaceInFile(BUILD_DESTINATION + TEMPLATES_PATH + '\\vs\\MyTemplateStandAlone.vstemplate', name_regex,  'CordovaWP8_' + VERSION.replace(/\./g, '_'));
     replaceInFile(BUILD_DESTINATION + TEMPLATES_PATH + '\\vs\\MyTemplateStandAlone.vstemplate', discript_regex,  "Cordova " + VERSION);
-    replaceInFile(BUILD_DESTINATION + TEMPLATES_PATH + '\\vs\\MyTemplateStandAlone.vstemplate', cordova_regex,  "cordova-" + VERSION);
 }
 
 // delete all cordova.js and generated files (templates) from old version numbers

http://git-wip-us.apache.org/repos/asf/cordova-wp8/blob/e34ac8cc/tooling/scripts/win-zip.js
----------------------------------------------------------------------
diff --git a/tooling/scripts/win-zip.js b/tooling/scripts/win-zip.js
deleted file mode 100644
index 7a79f43..0000000
--- a/tooling/scripts/win-zip.js
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Script for zipping the contents of a directory.
- */
-
-// get commman line arguments
-var objArgs = WScript.Arguments;
-var zipPath = objArgs(0);
-var sourcePath = objArgs(1);
-
-
-// create empty ZIP file and open for adding
-var fso = new ActiveXObject("Scripting.FileSystemObject");
-var file = fso.CreateTextFile(zipPath, true);
-
-// create twenty-two byte "fingerprint" for .zip
-file.write("PK");
-file.write(String.fromCharCode(5));
-file.write(String.fromCharCode(6));
-file.write('\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0');
-file.Close();
-
-// open .zip foder and copy contents of sourcePath
-var objShell = new ActiveXObject("shell.application");
-var zipFolder = objShell.NameSpace(zipPath);
-var sourceItems = objShell.NameSpace(sourcePath).items();
-if (zipFolder !== null) {
-    zipFolder.CopyHere(sourceItems, 4|20|16);
-    var maxTime = 5000;
-    while(zipFolder.items().Count < sourceItems.Count)
-    {
-        maxTime -= 100;
-        if(maxTime > 0 ) {    
-            WScript.Sleep(100);
-        }
-        else {
-            WScript.StdErr.WriteLine('Failed to create .zip file.');
-            break;
-        }
-    }
-}
-else {
-	WScript.StdErr.WriteLine('Failed to create .zip file.');
-}
\ No newline at end of file


[2/3] git commit: reverted .csproj file to explicitly list all plugins

Posted by be...@apache.org.
reverted .csproj file to explicitly list all plugins


Project: http://git-wip-us.apache.org/repos/asf/cordova-wp8/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-wp8/commit/36093399
Tree: http://git-wip-us.apache.org/repos/asf/cordova-wp8/tree/36093399
Diff: http://git-wip-us.apache.org/repos/asf/cordova-wp8/diff/36093399

Branch: refs/heads/master
Commit: 3609339939859e504fcd928dd91a9684220cb35f
Parents: 69c61b0
Author: Benn Mapes <be...@gmail.com>
Authored: Wed May 22 18:50:29 2013 -0700
Committer: Benn Mapes <be...@gmail.com>
Committed: Wed May 22 18:50:29 2013 -0700

----------------------------------------------------------------------
 templates/standalone/CordovaAppProj.csproj |   70 +++++++++++++++++------
 1 files changed, 52 insertions(+), 18 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-wp8/blob/36093399/templates/standalone/CordovaAppProj.csproj
----------------------------------------------------------------------
diff --git a/templates/standalone/CordovaAppProj.csproj b/templates/standalone/CordovaAppProj.csproj
index 91d22dc..c2e7345 100644
--- a/templates/standalone/CordovaAppProj.csproj
+++ b/templates/standalone/CordovaAppProj.csproj
@@ -151,22 +151,6 @@
       <Generator>MSBuild:Compile</Generator>
       <SubType>Designer</SubType>
     </Page>
-    <Page Include="Plugins\UI\AudioRecorder.xaml">
-      <Generator>MSBuild:Compile</Generator>
-      <SubType>Designer</SubType>
-    </Page>
-    <Page Include="Plugins\UI\ImageCapture.xaml">
-      <Generator>MSBuild:Compile</Generator>
-      <SubType>Designer</SubType>
-    </Page>
-    <Page Include="Plugins\UI\NotificationBox.xaml">
-      <Generator>MSBuild:Compile</Generator>
-      <SubType>Designer</SubType>
-    </Page>
-    <Page Include="Plugins\UI\VideoRecorder.xaml">
-      <Generator>MSBuild:Compile</Generator>
-      <SubType>Designer</SubType>
-    </Page>
     <Page Include="MainPage.xaml">
       <SubType>Designer</SubType>
       <Generator>MSBuild:Compile</Generator>
@@ -222,9 +206,59 @@
   <ItemGroup>
     <Service Include="{508349B6-6B84-4DF5-91F0-309BEEBAD82D}" />
   </ItemGroup>
+<ItemGroup>
+    <Compile Include="Plugins\Accelerometer.cs" />
+    <Compile Include="Plugins\AudioFormatsHelper.cs" />
+    <Compile Include="Plugins\AudioPlayer.cs" />
+    <Compile Include="Plugins\Battery.cs" />
+    <Compile Include="Plugins\Camera.cs" />
+    <Compile Include="Plugins\Capture.cs" />
+    <Compile Include="Plugins\Compass.cs" />
+    <Compile Include="Plugins\Contacts.cs" />
+    <Compile Include="Plugins\DebugConsole.cs" />
+    <Compile Include="Plugins\Device.cs" />
+    <Compile Include="Plugins\File.cs" />
+    <Compile Include="Plugins\FileTransfer.cs" />
+    <Compile Include="Plugins\GeoLocation.cs" />
+    <Compile Include="Plugins\Globalization.cs" />
+    <Compile Include="Plugins\ImageExifHelper.cs" />
+    <Compile Include="Plugins\InAppBrowser.cs" />
+    <Compile Include="Plugins\Media.cs" />
+    <Compile Include="Plugins\MimeTypeMapper.cs" />
+    <Compile Include="Plugins\NetworkStatus.cs" />
+    <Compile Include="Plugins\Notification.cs" />
+    <Compile Include="Plugins\UI\AudioCaptureTask.cs" />
+    <Compile Include="Plugins\UI\AudioRecorder.xaml.cs" >
+      <DependentUpon>AudioRecorder.xaml</DependentUpon>
+    </Compile>
+    <Compile Include="Plugins\UI\ImageCapture.xaml.cs" >
+      <DependentUpon>ImageCapture.xaml</DependentUpon>
+    </Compile>
+    <Compile Include="Plugins\UI\NotificationBox.xaml.cs" >
+      <DependentUpon>NotificationBox.xaml</DependentUpon>
+    </Compile>
+    <Compile Include="Plugins\UI\VideoCaptureTask.cs" />
+    <Compile Include="Plugins\UI\VideoRecorder.xaml.cs" >
+      <DependentUpon>VideoRecorder.xaml</DependentUpon>
+    </Compile>
+  </ItemGroup>
   <ItemGroup>
-    <Compile Include="Plugins\*" />
-    <Compile Include="Plugins\UI\*.cs" />
+    <Page Include="Plugins\UI\AudioRecorder.xaml">
+      <Generator>MSBuild:Compile</Generator>
+      <SubType>Designer</SubType>
+    </Page>
+    <Page Include="Plugins\UI\ImageCapture.xaml">
+      <Generator>MSBuild:Compile</Generator>
+      <SubType>Designer</SubType>
+    </Page>
+    <Page Include="Plugins\UI\NotificationBox.xaml">
+      <Generator>MSBuild:Compile</Generator>
+      <SubType>Designer</SubType>
+    </Page>
+    <Page Include="Plugins\UI\VideoRecorder.xaml">
+      <Generator>MSBuild:Compile</Generator>
+      <SubType>Designer</SubType>
+    </Page>
   </ItemGroup>
   <Import Project="$(MSBuildExtensionsPath)\Microsoft\$(TargetFrameworkIdentifier)\$(TargetFrameworkVersion)\Microsoft.$(TargetFrameworkIdentifier).$(TargetFrameworkVersion).Overrides.targets" />
   <Import Project="$(MSBuildExtensionsPath)\Microsoft\$(TargetFrameworkIdentifier)\$(TargetFrameworkVersion)\Microsoft.$(TargetFrameworkIdentifier).CSharp.targets" />