【问题标题】:How do I Sideload a Windows App for All Users on Already Deployed Windows Images?如何在已部署的 Windows 映像上为所有用户旁加载 Windows 应用程序?
【发布时间】:2016-12-01 19:05:05
【问题描述】:

我们有一个面向 Windows 8.1 和 Windows 10 的企业 Windows 应用商店应用。我们目前正在使用旁加载来部署该应用。我们需要能够为特定设备上的所有用户部署应用程序。

根据这篇技术网文章:

https://technet.microsoft.com/en-us/library/dn613833(v=ws.11).aspx

您可以使用 DISM 为设备上的所有用户配置应用程序,但仅适用于尚未登录该设备的用户:

预置的应用程序被注入到映像中,并为每个应用程序安装 用户首次登录时的用户。

我想做的是为特定设备上的所有当前用户安装我们的应用,无论他们之前是否登录过该设备。

我进行了大量研究,但没有找到任何详细说明如何完成此任务的信息。

Windows 商店应用程序目前可以做到这一点吗?

【问题讨论】:

    标签: windows-store-apps windows-8.1 windows-applications sideloading dism


    【解决方案1】:

    我通过使用计划任务在用户登录时为他们安装应用程序解决了这个问题。这是我的计划任务的 xml - 随时将此 xml 导入任务计划程序以查看格式化版本:

    <?xml version="1.0" encoding="UTF-16"?>
    <Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
      <RegistrationInfo>
        <Date>2016-08-11T15:22:07.0657007</Date>
        <Author>YourNameHere</Author>
        <Description>This task installs and updates the app</Description>
        <URI>\app_install_task</URI>
      </RegistrationInfo>
      <Triggers>
        <LogonTrigger>
          <Enabled>true</Enabled>
        </LogonTrigger>
      </Triggers>
      <Principals>
        <Principal id="Author">
          <GroupId>S-1-5-32-545</GroupId>
          <RunLevel>HighestAvailable</RunLevel>
        </Principal>
      </Principals>
      <Settings>
        <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
        <DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>
        <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
        <AllowHardTerminate>true</AllowHardTerminate>
        <StartWhenAvailable>false</StartWhenAvailable>
        <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
        <IdleSettings>
          <StopOnIdleEnd>true</StopOnIdleEnd>
          <RestartOnIdle>false</RestartOnIdle>
        </IdleSettings>
        <AllowStartOnDemand>true</AllowStartOnDemand>
        <Enabled>true</Enabled>
        <Hidden>false</Hidden>
        <RunOnlyIfIdle>false</RunOnlyIfIdle>
        <WakeToRun>false</WakeToRun>
        <ExecutionTimeLimit>PT1H</ExecutionTimeLimit>
        <Priority>7</Priority>
      </Settings>
      <Actions>
        <Exec>
          <Command>C:\Windows\System32\GroupPolicy\User\Scripts\Logon\your_app_bundle\install.exe</Command>
        </Exec>
      </Actions>
    </Task>
    

    我必须采取一些额外的步骤才能使这尽可能无缝:

    1. 我将应用程序的安装包移动到 C:\Windows\System32\GroupPolicy\User\Scripts\Logon\ 以便任务调度程序始终可以访问它
    2. 我使用 PowerGUI(可在线免费获得)将我的 Powershell 安装脚本编译为 .exe,以便安装在后台运行 - 安装运行时不会弹出 Powershell 窗口
    3. 我还添加了一些 Powershell 代码来检查应用程序是否已经安装,这样安装程序就不会在用户每次登录时运行 - 它只会在应用程序未安装或应用程序版本时安装应用程序不同(这表明应用需要更新)

    如果其他人遇到更简单的方法来完成此操作,请告诉我 - 我很乐意在未来简化此过程。

    【讨论】:

    • 嗨@Eric 我必须为我们的产品实现相同的功能。你有这个更简单的版本吗?请回复任何形式的帮助将得到应用
    • 我没有。对不起。
    • 这是一个很好的解决方案,但需要大量的实施和步骤才能实现。我们还可以通过 powershell 启用/禁用任务,这样它就可以在企业环境中与 SCCM 一起使用,但它是最佳实践选项吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-11
    • 2013-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-02
    • 2016-01-23
    相关资源
    最近更新 更多