首页 > 解决方案 > 如何让应用程序在 WinPE 中运行?

问题描述

试图让一个简单的 Windows Forms vb.net 应用程序在 WInPE 中运行。没有编译只是读取一个文本文件,提示用户输入,创建一个文本文件(批处理文件)然后运行批处理文件。

我已将 .net 包添加到 Wim

set PF=C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\x86\WinPE_OCs\
dism /Add-Package /Image:"f:\WimMount\WIM" /PackagePath:"%PF%WinPE-WMI.cab"
dism /Add-Package /Image:"f:\WimMount\WIM" /PackagePath:"%PF%en-us\WinPE-WMI_en-us.cab"
dism /Add-Package /Image:"f:\WimMount\WIM" /PackagePath:"%PF%WinPE-NetFx.cab"
dism /Add-Package /Image:"f:\WimMount\WIM" /PackagePath:"%PF%en-us\WinPE-NetFx_en-us.cab"

如果我使用 64 位 WinPE,则在调用 .exe 时不会发生任何事情。如果我使用 32 位 WinPE,则返回以下内容: xxxx 与您正在运行的 windows 版本不兼容

我尝试编译为任何 CPU、任何带有 Prefer32-Bit Checked、x86 和 x64 的 CPU。

我什至尝试过一个不起作用的 VB6 应用程序。我知道我在多年前使用 VB6 完成了这项工作,并且已经阅读了所需要的只是将包添加到 PE 环境中,但似乎无法让它工作。

标签: .netwinpe

解决方案


您的添加看起来与我的不同。我在我的项目中运行 ac# windows forms 应用程序,所以我知道这至少是可能的。确保您没有在您的应用程序中使用不受最低 .net 支持支持的东西。您不能使用的一个重要的、令人惊讶的部分是标准文件对话框。这可能是您的 32 位实验接近但不太成功的原因。

这是我输入的内容。您可以看到添加的形状有点不同:

cd /d "%adk%\Windows Preinstallation Environment\amd64\WinPE_OCs"
dism /image:C:\Mount /add-package /packagepath:"WinPE-Scripting.cab" /packagepath:"en-us\WinPE-Scripting_en-us.cab"
dism /image:C:\Mount /add-package /packagepath:"WinPE-WMI.cab" /packagepath:"en-us\WinPE-WMI_en-us.cab"
dism /image:C:\Mount /add-package /packagepath:"WinPE-NetFx.cab" /packagepath:"en-us\WinPE-NetFx_en-us.cab"
dism /image:C:\Mount /add-package /packagepath:"WinPE-SecureStartup.cab" /packagepath:"en-us\WinPE-SecureStartup_en-us.cab"
dism /image:C:\Mount /add-package /packagepath:"WinPE-EnhancedStorage.cab" /packagepath:"en-us\WinPE-EnhancedStorage_en-us.cab"
dism /image:C:\Mount /add-package /packagepath:"WinPE-Dot3Svc.cab" /packagepath:"en-us\WinPE-Dot3Svc_en-us.cab"
dism /unmount-wim /commit /mountdir:c:\mount

正如您可以从显示的第一行中推断出的,这是一个 x64 winpe……我们只需编译到任何 cpu。


推荐阅读