[This is preliminary documentation and subject to change.]
Gather information concerning the users, and save private data to be used during the later call to MigrateUserNT.
LONG
CALLBACK
MigrateUser9x(
IN HWND ParentWnd,
IN LPCSTR AnswerFile,
IN HKEY UserRegKey,
IN LPCSTR UserName,
LPVOID Reserved
);
Note You should not display a user interface unless absolutely necessary.
If this parameter is NULL, Setup is running in an unattended mode and your DLL must not display user interface elements or prompt the user for input.
ERROR_SUCCESS if the target application is installed for the specified user. Also return ERROR_SUCCESS if your migration DLL needs further processing during the Windows NT phase.
ERROR_NOT_INSTALLED if your target application is not installed for the specified user account and that user's registry does not require any processing. However, Setup will continue to call MigrateUser9x for the rest of the users and MigrateSystem9x if this function returns ERROR_NOT_INSTALLED.
ERROR_CANCELLED if the user wants to exit Setup. You should specify this return value only if ParentWnd is not set to NULL.
All other return values (Win32 error values) are considered initialization errors. Setup reports the error to the user and prompts to abort or continue the upgrade.
Exceptions generated by your migration DLL cause Setup to report RPC error messages. Setup provides more information in SETUPERR.LOG.
A DLL must always check for the value of ParentWnd in MigrateUser9x before proceeding since its value determines whether UI can be displayed to the user.
Do not use the MigrateUser9x function for user account modification. Use it only for information gathering about user accounts. To modify user-specific settings, save the data collected to your provided working directory and then use the MigrateUserNT function to perform the modifications.
Use the DLL working directory provided by the Initialize9x WorkingDirectory parameter to store any user-specific configuration information you may want to keep track of. Remember to use the UserName parameter to differentiate the information about the various users.