Mengotomatiskan peluncuran Windows 10 aplikasi UWP

Pengantar

Pengembang memiliki beberapa opsi untuk mencapai peluncuran otomatis aplikasi Platform Windows Universal (UWP). Dalam makalah ini kita akan menjelajahi metode peluncuran aplikasi dengan menggunakan aktivasi protokol dan meluncurkan aktivasi.

Aktivasi protokol memungkinkan aplikasi untuk mendaftarkan dirinya sebagai handler untuk protokol tertentu.

Aktivasi peluncuran adalah peluncuran normal aplikasi, seperti peluncuran dari petak peta aplikasi.

Dengan setiap metode aktivasi, Anda memiliki opsi untuk menggunakan baris perintah atau aplikasi peluncur. Untuk semua metode aktivasi, jika aplikasi saat ini berjalan, aktivasi akan membawa aplikasi ke latar depan (yang mengaktifkannya kembali) dan memberikan argumen aktivasi baru. Ini memungkinkan fleksibilitas untuk menggunakan perintah aktivasi untuk memberikan pesan baru ke aplikasi. Penting untuk dicatat bahwa proyek perlu dikompilasi dan disebarkan untuk metode aktivasi untuk menjalankan aplikasi yang baru diperbarui.

Aktivasi protokol

Ikuti langkah-langkah berikut untuk menyiapkan aktivasi protokol untuk aplikasi:

  1. Buka file Package.appxmanifest di Visual Studio.

  2. Pilih tab Deklarasi.

  3. Di bawah menu drop-down Deklarasi yang Tersedia , pilih Protokol, lalu pilih Tambahkan.

  4. Di bawah Properti, di bidang Nama , masukkan nama unik untuk meluncurkan aplikasi.

    Aktivasi protokol

  5. Simpan file dan sebarkan proyek.

  6. Setelah proyek disebarkan, aktivasi protokol harus diatur.

  7. Buka Panel Kontrol\Semua Item Panel Kontrol\Program Default dan pilih Kaitkan tipe file atau protokol dengan program tertentu. Gulir ke bagian Protokol untuk melihat apakah protokol tercantum.

Sekarang setelah aktivasi protokol disiapkan, Anda memiliki dua opsi (baris perintah atau aplikasi peluncur) untuk mengaktifkan aplikasi dengan menggunakan protokol .

Baris perintah

Aplikasi dapat diaktifkan protokol dengan menggunakan baris perintah dengan perintah mulai diikuti dengan nama protokol yang ditetapkan sebelumnya, titik dua (":"), dan parameter apa pun. Parameter dapat berupa string arbitrer apa pun; namun, untuk memanfaatkan kemampuan Pengidentifikasi Sumber Daya Seragam (URI), disarankan untuk mengikuti format URI standar:

scheme://username:password@host:port/path.extension?query#fragment

Objek Uri memiliki metode penguraian string URI dalam format ini. Untuk informasi selengkapnya, lihat Kelas Uri (MSDN).

Contoh:

>start bingnews:
>start myapplication:protocol-parameter
>start myapplication://single-player/level3?godmode=1&ammo=200

Aktivasi baris perintah protokol mendukung karakter Unicode hingga batas karakter 2038 pada URI mentah.

Aplikasi peluncur

Untuk peluncuran, buat aplikasi terpisah yang mendukung WinRT API. Kode C++ untuk diluncurkan dengan aktivasi protokol dalam program peluncur ditampilkan dalam sampel berikut, di mana PackageURI adalah URI untuk aplikasi dengan argumen apa pun; misalnya myapplication: atau myapplication:protocol activation arguments.

bool ProtocolLaunchURI(Platform::String^ URI)
{
       IAsyncOperation<bool>^ protocolLaunchAsyncOp;
       try
       {
              protocolLaunchAsyncOp = Windows::System::Launcher::LaunchUriAsync(ref new 
Uri(URI));
       }
       catch (Platform::Exception^ e)
       {
              Platform::String^ dbgStr = "ProtocolLaunchURI Exception Thrown: " 
+ e->ToString() + "\n";
              OutputDebugString(dbgStr->Data());
              return false;
       }

       concurrency::create_task(protocolLaunchAsyncOp).wait();

       if (protocolLaunchAsyncOp->Status == AsyncStatus::Completed)
       {
              bool LaunchResult = protocolLaunchAsyncOp->GetResults();
              Platform::String^ dbgStr = "ProtocolLaunchURI " + URI 
+ " completed. Launch result " + LaunchResult + "\n";
              OutputDebugString(dbgStr->Data());
              return LaunchResult;
       }
       else
       {
              Platform::String^ dbgStr = "ProtocolLaunchURI " + URI + " failed. Status:" 
+ protocolLaunchAsyncOp->Status.ToString() + " ErrorCode:" 
+ protocolLaunchAsyncOp->ErrorCode.ToString() + "\n";
              OutputDebugString(dbgStr->Data());
              return false;
       }
}

Aktivasi protokol dengan aplikasi peluncur memiliki batasan yang sama untuk argumen sebagai aktivasi protokol dengan baris perintah. Keduanya mendukung karakter Unicode hingga batas karakter 2038 pada URI mentah.

Luncurkan aktivasi

Anda juga dapat meluncurkan aplikasi dengan menggunakan aktivasi peluncuran. Tidak diperlukan penyiapan, tetapi ID Model Pengguna Aplikasi (AUMID) dari aplikasi UWP diperlukan. AUMID adalah nama keluarga paket diikuti dengan tanda seru dan ID aplikasi.

Cara terbaik untuk mendapatkan nama keluarga paket adalah dengan menyelesaikan langkah-langkah berikut:

  1. Buka file Package.appxmanifest .

  2. Pada tab Kemasan , masukkan Nama paket.

    Luncurkan aktivasi

  3. Jika Nama keluarga paket tidak tercantum, buka PowerShell dan jalankan >get-appxpackage MyPackageName untuk menemukan PackageFamilyName.

ID aplikasi dapat ditemukan dalam file Package.appxmanifest (dibuka dalam tampilan XML) di bawah <Applications> elemen .

Baris perintah

Alat untuk melakukan aktivasi peluncuran aplikasi UWP diinstal dengan Windows 10 SDK. Ini dapat dijalankan dari baris perintah, dan dibutuhkan AUMID aplikasi untuk diluncurkan sebagai argumen.

C:\Program Files (x86)\Windows Kits\10\App Certification Kit\microsoft.windows.softwarelogo.appxlauncher.exe <AUMID>

Ini akan terlihat seperti ini:

"C:\Program Files (x86)\Windows Kits\10\App Certification Kit\microsoft.windows.softwarelogo.appxlauncher.exe" MyPackageName_ph1m9x8skttmg!AppId

Opsi ini tidak mendukung argumen baris perintah.

Aplikasi peluncur

Anda dapat membuat aplikasi terpisah yang mendukung penggunaan COM untuk digunakan untuk peluncuran. Contoh berikut menunjukkan kode C++ untuk diluncurkan dengan aktivasi peluncuran dalam program peluncur. Dengan kode ini, Anda dapat membuat objek ApplicationActivationManager dan memanggil ActivateApplication yang melewati AUMID yang ditemukan sebelumnya dan argumen apa pun. Untuk informasi selengkapnya tentang parameter lain, lihat IApplicationActivationManager::ActivateApplication method (MSDN).

#include <ShObjIdl.h>
#include <atlbase.h>

HRESULT LaunchApp(LPCWSTR AUMID)
{
     HRESULT hr = CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED);
     if (FAILED(hr))
     {
            wprintf(L"LaunchApp %s: Failed to init COM. hr = 0x%08lx \n", AUMID, hr);
     }
     {
            CComPtr<IApplicationActivationManager> AppActivationMgr = nullptr;
            if (SUCCEEDED(hr))
            {
                   hr = CoCreateInstance(CLSID_ApplicationActivationManager, nullptr,  
CLSCTX_LOCAL_SERVER, IID_PPV_ARGS(&AppActivationMgr));
                   if (FAILED(hr))
                   {
                         wprintf(L"LaunchApp %s: Failed to create Application Activation 
Manager. hr = 0x%08lx \n", AUMID, hr);
                   }
            }
            if (SUCCEEDED(hr))
            {
                   DWORD pid = 0;
                   hr = AppActivationMgr->ActivateApplication(AUMID, nullptr, AO_NONE, 
&pid);
                   if (FAILED(hr))
                   {
                         wprintf(L"LaunchApp %s: Failed to Activate App. hr = 0x%08lx 
\n", AUMID, hr);
                   }
            }
     }
     CoUninitialize();
     return hr;
}

Perlu dicatat bahwa metode ini mendukung argumen yang diteruskan, tidak seperti metode sebelumnya untuk peluncuran (yaitu, menggunakan baris perintah).

Menerima argumen

Untuk menerima argumen yang diteruskan pada aktivasi aplikasi UWP, Anda harus menambahkan beberapa kode ke aplikasi. Untuk menentukan apakah aktivasi protokol atau aktivasi peluncuran terjadi, ganti peristiwa Aktif dan periksa jenis argumen, lalu dapatkan string mentah atau nilai objek Uri yang telah diurai sebelumnya.

Contoh ini menunjukkan cara mendapatkan string mentah.

void OnActivated(IActivatedEventArgs^ args)
{
		// Check for launch activation
		if (args->Kind == ActivationKind::Launch)
		{
			auto launchArgs = static_cast<LaunchActivatedEventArgs^>(args);	
			Platform::String^ argval = launchArgs->Arguments;
			// Manipulate arguments …
		}

		// Check for protocol activation
		if (args->Kind == ActivationKind::Protocol)
		{
			auto protocolArgs = static_cast< ProtocolActivatedEventArgs^>(args);
			Platform::String^ argval = protocolArgs->Uri->ToString();
			// Manipulate arguments …
		}
}

Ringkasan

Singkatnya, Anda dapat menggunakan berbagai metode untuk meluncurkan aplikasi UWP. Tergantung pada persyaratan dan kasus penggunaan, metode yang berbeda mungkin lebih cocok daripada yang lain.

Lihat juga