Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
451 views
in Technique[技术] by (71.8m points)

automation - connect to windows phone 8 using console application

I am very new to windows phone development. I want to develop an app that will be launched when I connect my windows 8 phone to my laptop. I was following this tutorial (http://justinangel.net/WindowsPhone7EmulatorAutomation) and was able to connect to my windows 7 phone/emulator but I am not able to connect to my windows 8 phone or emulator. Is there any other way to connect to windows 8 phone?

Please let me know if there is any possible solution for this,

Thank you

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

I didn't get a chance to update this blog post yet. Delvis Gomez (A colleague on of mine) has updated the final code sample and OKed distributing it freely. I'll update that blog post for WP8 in the future, but in the meanwhile here's a pretty well documented code snippet on how to automate the WP8 Emulator.

Also, make sure to add a reference to the new DLLs needed like Microsoft.SmartDevice.MultiTargeting.Connectivity.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.IO;
using System.Reflection;

// Libraries needed to connect to the Windows Phone X Emulator
using Microsoft.SmartDevice.Connectivity;
using Microsoft.SmartDevice.Connectivity.Interface;
using Microsoft.SmartDevice.MultiTargeting.Connectivity;
using System.Globalization;
using System.Collections.ObjectModel;


namespace AutomatedUnitTestDriver
{
    class Program
    {
        static void Main(string[] args)
        {
            MultiTargetingConnectivity connectivity = new MultiTargetingConnectivity(CultureInfo.CurrentUICulture.LCID);

            // Get a connectable device for a specific Device ID (from the CoreCon datastore)
            string deviceId = "5E7661DF-D928-40ff-B747-A4B1957194F9";
            ConnectableDevice connectableDevice = connectivity.GetConnectableDevice(deviceId);
            Console.WriteLine("Found Connectable Device '" + connectableDevice.Name + "' for Device id {" + connectableDevice.Id + "}.");

            // Connect to the Device
            Console.WriteLine("Connecting to Device...");
            IDevice iDevice = connectableDevice.Connect();
            Console.WriteLine("Done!");

            // Check if the application is already install, if it is remove it (From WMAppManifect.xml)
            Guid appID = new Guid("{b6635769-b7ac-41a5-915d-5a7b0ae34481}"); 

            if (iDevice.IsApplicationInstalled(appID))
            {
                Console.WriteLine("Uninstalling application...");
                iDevice.GetApplication(appID).Uninstall();
                Console.WriteLine("Done!");
            }

            Guid productId = appID;
            Guid instanceId = appID;
            string applicationGenre = "NormalApp";
            string iconPath = @"C:ShareLatestAPITestCodeAutomatedAutomatedUnitTestsBinDebugApplicationIcon.png";
            string xapPackage = @"C:ShareLatestAPITestCodeAutomatedAutomatedUnitTestsBinDebugAutomatedUnitTests.xap";

            // Install the application 
            Console.WriteLine("Installing the application...");
            IRemoteApplication remoteApplication = iDevice.InstallApplication(appID, appID, applicationGenre, iconPath, xapPackage);
            Console.WriteLine("Done!");

            // Launch the application
            Console.WriteLine("Starting the application...");
            remoteApplication.Launch();

            int startStopWaitTime = 1000;   // msec
            int executionWaitTime = 180000; // msec

            // Note that IRemoteApplication has a 'IsRunning' method but it is not implemented.
            // So, for the moment we sleep few msec.
            Thread.Sleep(startStopWaitTime);
            Console.WriteLine("Done!");

            // Allow application to complete 
            Console.WriteLine("Application is running! Waiting few seconds...");
            Thread.Sleep(executionWaitTime);

            try
            {
                IRemoteIsolatedStorageFile remoteIsolatedStorageFile = remoteApplication.GetIsolatedStore();
                string sourceDeviceFilePath = (object)Path.DirectorySeparatorChar + "TestResults.trx";
                string targetDesktopFilePath = @"C:ShareLatestAPITestCodeAutomatedAutomatedUnitTestsBinDebug" + "TestResults.trx";
                remoteIsolatedStorageFile.ReceiveFile(sourceDeviceFilePath, targetDesktopFilePath,true);
            }
            catch (Exception exception)
            {
                Console.WriteLine("Exception '" + exception.Message + "' reading file from device.");
            }

            // Terminate application
            Console.WriteLine("Terminating the application...");
            remoteApplication.TerminateRunningInstances();

            Thread.Sleep(startStopWaitTime);
            Console.WriteLine("
Done!");

            // Disconnect from the emulator
            Console.WriteLine("Disconnecting Device...");
            iDevice.Disconnect();
            Console.WriteLine("
Done!");
        }
    }
}

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...