【发布时间】:2012-02-10 14:48:49
【问题描述】:
我使用 WinZip 自解压存档 (SFX) 分发我的软件。
我知道this 和that。但这些似乎不适用于 SFX 场景。
在安装时,SFX 解压缩并启动一个包含的程序(由我编写),它会执行安装。这包括在 Windows 控制面板下为程序列表创建注册表项。此外,该程序具有清单。 所以它应该是“Vista-aware”的。 SFX 可执行文件还包括一个清单。
问题是程序兼容性助手 (PCA) 抛出了它的消息
"This program might not have installed correctly" 无论如何。
所以我的客户告诉我我是一个糟糕的程序员......
我在 Google 上搜索了很多,并阅读了很多关于 PCA 的信息,包括许多 Microsoft 网站。
那些告诉我要做:
- 嵌入清单
- 为 Windows 控制面板下的程序列表创建注册表项
我的清单如下所示:
<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<applicationRequestMinimum>
<defaultAssemblyRequest permissionSetReference="Custom" />
<PermissionSet class="System.Security.PermissionSet" version="1" Unrestricted="true" ID="Custom" SameSite="site" />
</applicationRequestMinimum>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
</requestedPrivileges>
</security>
</trustInfo>
</asmv1:assembly>
那么我哪里做错了?
PCA 还有其他事情要做吗?
SFX 可执行文件是否必须包含其他内容?
【问题讨论】:
-
自解压请求提升吗?它有
setup.exe的名字吗?上面的清单是来自您的安装程序还是 SFX? -
是的,SFX 需要提升的安装权限,并且名称中包含“setup”。上面的清单是我自己的,SFX 也包含清单,但我不知道如何更改它。
-
您确定 SFX 中的清单已请求执行级别吗?如果有,则不应显示兼容性对话框。
-
是的,SFX 清单包含 requestExecutionLevel,level="requireAdministrator"。无论如何都会出现对话框。我认为 PCA 会在 windows 控制面板/程序中寻找一个创建的条目,它不是由 SFX 编写的。
-
当应用程序具有声明的requestedExecutionLevel 清单时,不应用PCA。安装程序检测仅针对没有清单的应用程序执行。所以肯定少了点什么。此外,您可以通过清单声明您的应用与 Vista/7 兼容。
标签: windows-7 installation uac self-extracting winzip