The Bookshelf Application
When trying to package…
Locate the MSI in the %TEMP%, once you launch the EXE
setup.msi /qn /norestart
Or, just use the EXE
setup.exe /v”/qn”
You will run into a snag with the application eula; not the setup eula, but the actual application eula. The settings are stored in the user profile.
Even if you run the setup silently, this happens upon app launch:
App Eula (you don’t want to see this)
This setting, along with several others, are stored in the BookShelf Prefs file.
BookShelf Prefs
I captured the Bookmark Prefs from a reference machine and added it to a compiled package. I used this script I created a while back to actually copy the file to each user profile:
on error resume next Set objShell = CreateObject("Wscript.Shell") Set objFSO = CreateObject("Scripting.FileSystemObject") Const HKEY_LOCAL_MACHINE = &H80000002 Const OverwriteExisting = TRUE Const POPUP_TITLE = "User To SID Conversion" 'SETS CURRENT DIRECTORY TO VARIABLE strCurrentDirectory = objShell.CurrentDirectory strComputer = "." Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Set objRegistry=GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv") strKeyPath = "SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\ProfileList" objRegistry.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubkeys For Each objSubkey In arrSubkeys on error resume next strValueName = "ProfileImagePath" strSubPath = strKeyPath & "\" & objSubkey objRegistry.GetExpandedStringValue HKEY_LOCAL_MACHINE,strSubPath,strValueName,strValue Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Set objAccount = objWMIService.Get("Win32_SID.SID='" & objSubkey & "'") strUser = objAccount.AccountName 'strDomain = objAccount.ReferencedDomainName'returns referenced domain 'DISPLAY PROFILE NAME & SID objSubkey = trim(objSubkey)'trims whitespace strUser = trim(strUser)'trims whitespace 'msgbox "objSubkey: " & objSubkey'returns SID 'msgbox strUser'returns username 'LOGIC TO DETERMINE IF REGISTRY ACCOUNT IS TO BE LOADED if strUser = "SYSTEM" then strUser="" if strUser = "LOCAL SERVICE" then strUser="" if strUser = "NETWORK SERVICE" then strUser="" 'if strUser = "ADMINISTRATOR" then strUser="" if strUser <> "" then on error resume next Wscript.Sleep 1000 target = "C:\Users\" & strUser & "\Documents\My Books\VitalSource Bookshelf\User Data\" 'Copy file If (objFSO.FileExists(strCurrentDirectory & "\Bookshelf Prefs")) Then objShell.Run "%comspec% /c copy /y " & chr(34) & strCurrentDirectory & "\Bookshelf Prefs" & chr(34) & " " & chr(34) & target & chr(34),0,true end if end if Next