遷移桌面程序到MS Store(3)——開機自啓動

  遷移桌面程序的時候,有可能你會遇到這麼個需求——開機自啓動。Windows傳統桌面程序的傳統陋習。不論什麼奇葩軟件都想要開機自啓動,默認就給你打開,一開機哐哐哐什麼雷,什麼企鵝都蹦出來,也無論你用不用。
  可是上班呢,老闆是給錢的,只要有需求,節操什麼的不重要。今天咱們就來看怎麼弄開機自啓動……(大霧)
  固然咱們這裏介紹的,是可讓用戶隨時禁用的。還有就是MS Store在審覈時,會讓你寫須要自啓動的理由。原生的UWP APP還會有一個要求受權的對話框。
  首先咱們仍是和上一篇同樣,建好一個空的WPF(WinForm也行)工程和一個Packaging工程。假設咱們這裏叫AutoLaunchApp和AutoLaunchPackaging。記得在Packaging工程的Applications下添加對AutoLaunchApp的引用。
  接下來右鍵Package.appxmanifest文件,選擇open with…再選擇XML(Text)Editor打開。git

  

  在這個XML文件中,在最上方的Package添加命名空間github

xmlns:desktop="http://schemas.microsoft.com/appx/manifest/desktop/windows10"

  

  以後就能夠經過desktop來添加desktop:Extension和desktop:StartupTask節點。這裏的屬性值介紹見下表:windows

Category: windows.startupTask
Executable: 轉制的exe文件名,咱們這裏是AutoLaunchApp.exe
EntryPoint: Windows.FullTrustApplication
TaskId: 給StartupTask起個名字,方便在C#代碼裏關閉和開啓Task
Enabled: 默認是否開啓自啓動
DisplayName: 顯示在Windows任務管理器裏的名字app

  

  最簡單的自啓動任務到此就完成了。經過Visual Studio部署安裝後(不要按F5運行),就能夠在任務管理器中找到AutoLaunchApp。此時會發現Status的狀態是Disabled。此時的StartupTask實際是沒有激活的。在這種狀況下從新啓動電腦,並不會開機自啓動AutoLaunchApp。ide

  

  此時若是咱們運行一次AutoLaunchApp,則會將Status置爲Enabled,從而啓用開機自啓動的功能。
  那有的同窗就較真了,我原來的桌面程序,不用運行一次,安裝完畢直接重啓電腦就能夠實現開機自啓動。你這個不符合要求。說實話這個問題是挺頭疼的,但也不是沒有辦法解決。
  我這裏提供一個很簡單的方法,特別適合於不走商店流程(也就是sideload,常見於經過企業IT部署),而是經過獨立的msi之類的安裝包安裝的狀況。
  首先我麼須要經過Packaging工程的Package.appxmanifest文件,來給AutoLaunchApp增長一個Protocol。這裏咱們在tab頁中選擇Declarations,而後在Available Declarations中選擇Protocol,點擊Add。在Name一欄隨便填個縮寫alpp(Auto Launch Packaging Protocol)。3d

  

  完成後從新部署,而後咱們就能夠經過這個縮寫來進行URI啓動APP的操做了。若是此時咱們在CMD中輸入「start alpp:」,回車後會發現AutoLaunchApp被啓動。
  接下來咱們須要經過安裝包的腳本向註冊表插入這個cmd的script。
  [HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce]code

  

  這樣的話,咱們會有一個一次性的CMD script在Windows啓動時被執行。而後經過CMD script來啓動AutoLaunchApp,激活StartupTask。
  本篇咱們討論瞭如何開機自啓動轉制的desktop APP,下一篇會討論如何在APP的設置裏開啓/禁用自啓動的選項,謝謝將鼠標滾動到這裏的同窗。
  GitHub:
  https://github.com/manupstairs/DesktopBridgeSamples.gitorm

相關文章
相關標籤/搜索