我试图以编程方式运行命令行工具DISM.exe.当我手动运行它时它可以工作,但是当我尝试使用以下代码生成它时:
var systemPath = Environment.GetFolderPath(Environment.SpecialFolder.System);
var dism = new Process();
dism.StartInfo.FileName = Path.Combine(systemPath, "Dism.exe");
dism.StartInfo.Arguments = "/Online /Get-Features /Format:Table";
dism.StartInfo.Verb = "runas";
dism.StartInfo.UseShellExecute = false;
dism.StartInfo.RedirectStandardOutput = true;
dism.Start();
var result = dism.StandardOutput.ReadToEnd();
dism.WaitForExit();
Run Code Online (Sandbox Code Playgroud)
然后我的result出现:
错误:11
您无法使用32位版本的DISM为正在运行的64位操作系统提供服务.请使用与您的计算机体系结构相对应的DISM版本.
我实际上已经意识到导致这种情况的原因了:我的项目设置为编译x86平台.(例如,请参阅此问题,尽管没有一个答案提到这一点).但是,不幸的是,目前我们仍然需要继续瞄准这个平台,我无法通过切换到任何CPU来解决这个问题.
所以我的问题是如何以独立于其父平台的方式以编程方式生成流程 - 即保持我的项目以x86为目标,但启动一个流程,该流程将针对其所在机器的正确平台.
我有一个调用 dism.exe 程序的程序,它在后台运行一些命令。现在,我只检查返回码 0 或其他任何内容,以显示进程失败或成功。为了获得准确的返回错误,我可以用什么交叉检查返回代码。DISM 引用了哪些返回?
我必须检查是否启用了一些Windows功能才能安装我的软件.
我可以检查它或使用dism命令行工具安装它.
我创建了一个自定义操作来执行此操作,但有没有办法以"WIX本机方式"执行此操作?
<Property Id="dism" Value="dism.exe" />
<CustomAction Id="InstallMSMQContainer" Property="dism" ExeCommand=" /online /enable-feature /featurename:MSMQ-Container /featurename:MSMQ-Server /featurename:MSMQ-ADIntegration" Return="check" Impersonate="yes" Execute="oncePerProcess"/>
<InstallUISequence>
<Custom Action="InstallMSMQContainer" After="CostFinalize" Overridable="yes">NOT Installed</Custom>
</InstallUISequence>
Run Code Online (Sandbox Code Playgroud)
问题是命令启动命令提示符,这对最终用户来说非常难看.我怎样才能让它变得更好?我不知道我是否需要一个bootstraper来执行此操作(如安装.NET Framework).
是否存在管理这些事情的延伸?
我现在正在使用WIX 3.7.
我试图使用一个蝙蝠来启用IIS在Windows 7(专业)64位机器上运行asp.net应用程序,似乎经常遇到这个问题.我以管理员身份运行bat文件.我正在使用的bat文件中的条目如下:
%systemroot%\sysnative\dism /online /enable-feature /all /featurename:IIS-ASPNET45
Run Code Online (Sandbox Code Playgroud)
根据我阅读的文档,所有开关应该启用运行ASP.net 4.5所需的所有父功能.我也试过使用just IIS-ASPNET而且IIS-ASPNET40所有人都收到了同样的错误.
Error 87 the all option is not recognised in this context
Run Code Online (Sandbox Code Playgroud)
我最初尝试单独运行我的应用程序所需的每个功能,但遇到类似的问题.
我已经在PC上为所有用户安装了我自己的通用Windows应用程序,在审核模式下登录时使用DISM工具.执行此操作后,我重新启动进入OOBE(使用命令),创建一个新用户并尝试启动此应用程序.sysprep
结果是没有任何反应 - 应用程序无法启动(也在任务管理器中检查).在Windows的事件查看器中,我找到了一个关于AppxDeploymentFailureBlue的条目,每次我尝试启动该应用程序时都会出现该条目- 但它不提供有关该问题或其原因的任何进一步信息.我试图在线查找这个错误代码,但我能找到的是关于Windows应用程序或Windows内置应用程序的损坏版本的一些讨论 - 这不是这里的情况.
此外,这个应用程序有一个StartupTask,它无法正常启动似乎阻止其他应用程序在启动任务/应用程序列表中注册自己(如果未安装该应用程序,则它们已成功注册).
我们有一个针对Windows 8.1和Windows 10的企业Windows商店应用程序.我们目前正在使用sideloading来部署应用程序.我们需要能够为特定设备上的所有用户部署应用程序.
根据这篇technet文章:
https://technet.microsoft.com/en-us/library/dn613833(v=ws.11).aspx
您可以使用DISM为设备上的所有用户配置应用程序,但仅适用于尚未登录该设备的用户:
配置的应用程序将注入映像中,并在用户首次登录时为每个用户安装.
我想要做的是为特定设备上的所有当前用户安装我们的应用程序,无论他们之前是否已登录该设备.
我做了很多研究,但我没有找到任何有关如何实现这一目标的细节.
目前Windows商店应用程序是否可以使用?
windows-applications windows-store-apps sideloading windows-8.1 dism
dism ×6
.net ×2
c# ×2
appx ×1
batch-file ×1
iis ×1
sideloading ×1
uwp ×1
windows ×1
windows-8.1 ×1
wix ×1
wix3.7 ×1