具有Win32 GUI和VPN服务提供商的Windows桌面打包项目

时间:2018-07-17 13:07:59

标签: win32gui desktop-bridge project-centennial

我的UWP应用程序是认可的VPN服务提供商。项目解决方案的布局是-

  • MyVPN(通用Windows)->带有最小XAML GUI的应用程序,可引导用户进入操作系统 Settings 应用程序以启动VPN连接。
  • MyVpnPluginAppBg(通用Windows)->一个dll,当用户通过操作系统 Settings 应用程序启动连接时,该dll已加载到我的进程(MyVPN.exe)中。

这是通过Appx Manifest文件中的以下设置实现的-

<Applications>
 <Extensions>
   <Extension Category="windows.backgroundTasks" Executable="MyVPN.exe" EntryPoint="MyVpnPluginAppBg.VpnBackgroundTask">
      <BackgroundTasks>
         <Task Type="controlChannel" />
         <uap:Task Type="vpnClient" />
      </BackgroundTasks>
   </Extension>   
  </Extensions>
</Applications>

<!-- This "vpnClient" background task is required for VPN plug-in applications as it will be invoked by the platform whenever the plug-in
needs to perform work (i.e. connect, encapsulate, etc) -->

<Extensions>
  <Extension Category="windows.activatableClass.inProcessServer">
    <InProcessServer>
      <Path>MyVpnPluginAppBg.dll</Path>
      <ActivatableClass ActivatableClassId="MyVpnPluginAppBg.VpnBackgroundTask" ThreadingModel="both" />
      <ActivatableClass ActivatableClassId="MyVpnPluginAppBg.TemporaryBackgroundTask" ThreadingModel="both" />
    </InProcessServer>
  </Extension>
</Extensions>

在Visual Studio 15.7.5中,我尝试使用Windows应用程序打包项目功能。我没有使用什么也不做的MyVPN.exe(XAML UI),而是引入了具有更多功能的桌面GUI(因为使用的大多数API都是Win32特定的,并且UWP不允许使用)。新的项目布局为-

  • MyVPNWin32GUI
  • MyVpnPluginAppBg(通用Windows)
  • 包装

我将Package项目中的Appx设置更改为改为使用MyVPNWin32GUI.exe。程序包安装正常,MyVPNWin32GUI.exe运行正常。但是,当我通过“设置”应用启动VPN连接时,未加载我的VPN插件。我相信问题是后台任务没有作为软件包安装的一部分进行注册。尝试从系统应用程序启动VPN连接时,我在系统日志中看到-

服务器MyCompany.MyProductName_4.7.18.0_x86__edjcgkw48dhxt!App.AppXvmk8xta1bs44hd5a11546za1aq3mjk1r.mca没有在所需的超时时间内向DCOM注册。

是否可以通过Win32 32可执行文件,UWP dll,桌面打包项目来实现我以前的UWP应用和UWP dll所做的工作?

0 个答案:

没有答案