2024年6月1日发(作者:)
创建再分发安装
调用再分发程序包之前,请首先让您的安装例程安装您的应用程序文件,并进行所需的设置。
1.
安装 。您可以使用 /Q:A 标志执行安静的无人参与安装,并在应用程序(例
2.
如: /Q:A )安装期间不显示再分发安装的用户界面。然后您的例程必须检测
结束时是否需要重新启动重新启动。
命令行参数
将 作为应用程序的一部分进行安装时,管理员或开发人员可以通过使用下列命
令,来控制安装 UI 显示和重新启动重新启动行为:
/Q:A
此命令指定无人参与安装,并且不出现任何 UI 或警告。
注 下一节中的代码示例说明了如何在程序包运行结束之后确定成功还是失败,以及是否需要重
新启动。
检测 的安装状态
下面的代码可用于 Windows Media Format SDK runtime 再分发或 Windows Media
Player 再分发程序包。
安装状态将作为 HRESULT 存储在下列位置:
HKCU, SoftwareMicrosoftMediaPlayerSetup, REG_SZ, value InstallResult
HRESULT 值可用于确定安装是否成功以及是否需要重新启动。
下面的 C++ 示例代码可包含在一个调用安装应用程序中。此代码会根据组件再分发程序包中
Windows Media 安装写入的 HRESULT 值,将 fSuccess 和 fRebootNeeded 变量设置
为合适的 true 或 false。
1#include
2#include
3
4// If NS_S_REBOOT_REQUIRED is undefined, use 0xD2AF9.
5#ifndef NS_S_REBOOT_REQUIRED
6#define NS_S_REBOOT_REQUIRED 0xd2af9
7#endif
8
9int main( void )
10{
11 HKEY hKey = NULL;
12 BOOL fSuccess = FALSE;
13 BOOL fRebootNeeded = FALSE;
14
15if( ERROR_SUCCESS == RegOpenKeyExA(
16 HKEY_CURRENT_USER,
17 "SoftwareMicrosoftMediaPlayerSetup
",
18 0, KEY_QUERY_VALUE, &hKey ))
19 {
20 char szResult[64];
21 DWORD dwResult = sizeof( szResult );
22
23if( ERROR_SUCCESS == RegQueryValueExA(
24 hKey, "InstallResult", NULL, NULL,
25 (LPBYTE)szResult, &dwResult ) )
26 {
27 sscanf( szResult, "%x", &dwResult );
28 fSuccess = SUCCEEDED( dwResult );
29 fRebootNeeded = ( NS_S_REBOOT_REQUIRED == dwResult );
30 }
31
32 RegCloseKey( hKey );
33 }
34
35 if( fSuccess )
36 {


发布评论