Thursday, 29 December 2011

Application Packaging Online Training

Application Packaging Online training is going to be started shortly in 1st week of January'2012. For more information about the course please visit

Duration: 1month ( 1 hour per day)

You can contact me on +91-9963678795 or
Application Packaging Online training is going to be started shortly in 1st week of January'2012. For more information about the course please visit

Duration: 1month ( 1 hour per day)

You can contact me on +91-9963678795 or

Sunday, 11 December 2011

Monday, 5 December 2011

SCCM 2012 Release Candidate

System Center 2012 Configuration Manager provides a unified management infrastructure across physical, virtual, and mobile client environments. System Center 2012 Endpoint Protection builds on this infrastructure to provide industry-leading antimalware protection for client and server operating systems.

Application Packaging Training @ Hyderabad, January 2012 Batch

New batch of Application Packaging classroom Training at Hyderabad from 3rd January 2012

Duration: 1 Month

Interested candidates can contact me on +91-9963678795 or

visit for more information about training details.

Note: If you are looking for Online training, please contact me. 

Thursday, 10 November 2011

What is Application Repackaging

Repackaging (Customized Installation) is the process of capturing the changes made by an Installation Program (Package) and it is designed to support company standards and distribution methods. Following are the steps for repackaging an application.
  • Review the packaging requirements with the projects sponsor
  • Analyze the vendor package (Tech Review)
  • Repackage the application (Scripting)
  • Customize the package
  • Test the package
  • Release the package to end users

Friday, 28 October 2011

Application Packaging Training

New batch of Application Packaging Classroom Training at Hyderabad from 12th November 2011.
Course Duration: 1 Month ( 1hr/day)
Anyone interested?, please contact me on
visit for more information on training topics.
Note: Send me an email, if you are looking for online training details. Thanks

Saturday, 17 September 2011

Application Packaging Training @ Hyderabad, October 2011 Batch

New batch of Application Packaging Classroom Training at Hyderabad from 10th October 2011.

Course Duration: 1 Month ( 1hr/day)
Anyone interested?, please contact me on
visit for more information on training topics.

Note: Send me an email, if you are looking for online training details. Thanks

Monday, 12 September 2011

How to create Minor Upgrade MSI

Steps to create Minor Upgrade:

  1. Change the Package code and Product Version to create a minor upgrade
  2. Add feature / component by following the guide lines in Section: Requirement for Minor upgrade
  3. Add Remove or Modify files, registry keys and shortcuts.
  4. Add minor upgrade item in upgrades view (this is optional).
  5. Build and use the installer for upgrade.

Wednesday, 7 September 2011

Application Packaging Services - AppRepack Technologies

AppREPACK Technologies is a privately-owned company offering Application Packaging and Virtualization solutions.  Our work is driven by vast expertise, advanced technology and quality focus.

You will experience your requirements being met on time, within budget and with high quality; top-class solutions at competitive prices.

We can provide services on
  • Microsoft Windows Installer (MSI) using Wise Package Studio / Installshield / AdminStudio
  • Microsoft App-V
  • VMware ThinApp
  • SCCM 2007 Support
For more information, Please visit

Tuesday, 6 September 2011

What is Application Repackaging

Repackaging (Customized Installation) is the process of capturing the changes made by an Installation Program (Package) and it is designed to support company standards and distribution methods. Following are the steps for repackaging an application.

  • Review the packaging requirements with the projects sponsor
  • Analyze the vendor package (Tech Review)
  • Repackage the application (Scripting)
  • Customize the package
  • Test the package
  • Release the package to end users

Processing Options in Custom Actions

  • Synchronous
Windows Installer runs the custom action synchronously to the main installation. It waits for the custom action to complete successfully before continuing the main installation.

  • Synchronous, ignore exit code

Windows Installer runs the custom action synchronously to the main installation. It waits for the custom action to complete before continuing the main installation; the action can be either success or fail.

  • Asynch, wait at end of sequence

Windows Installer runs the custom action simultaneously with the main installation. At the end it waits for the exit code from the custom action before continuing.

  • Asynch, no wait
Windows Installer runs the custom action simultaneously with the main installation. It doesn’t wait for completion of the custom action and doesn’t check the exit code also.

Limitations of App-V

1. Device Driver: Microsoft Application Virtualization does not support sequencing of device drivers thus any application which install device driver should not be sequenced.

2. Application Size: If the maximum client cache size is set for 2 GB (The max can be 64 GB), then the maximum size of application (sft file) which can be streamed on that machine is 2 GB. All applications which have the installed footprint greater than or equal to the max client size, set by the client, should not be sequenced. Also the Max application size App-V can handle is 4GB, [Q: drive has FAT file type and the max file size FAT can handle is 4GB]. This issue is discussed in more details at

3. Shortcuts: Application should have minimum of one shortcut. If no shortcuts are present then the application should be sequenced in a suite along with the application which needs it. For example if Macromedia Flash is the application in question to be sequenced then the shortcut should be pointing to the locally installed Internet Explorer

4. Middleware: Middleware applications are not a good candidate for sequencing as they can be used as a prerequisite by multiple applications, thus should be installed locally. but if multiple version of it are needed then they should be sequenced along with the application which needs them. It is always advised to have only one version of any application/middleware in the organization thus conditions for multiple versions should be avoided With Version 4.5 most of the middle-wares can be sequenced and used as secondary packages.

5. Path hard coding: The application should not have folder/file path hard coding in the application itself. Some application hard code the path of files in registry or ini file or executable. In these cases it has been found that they can be sequenced most of the time using VFS sequencing method, but extreme care should be taken while sequencing & testing these applications. Also Configuration files such as ini, conf, txt, registries etc are good places to look for the hard coding

6. Base Build Applications: Applications which are already part of base build should not be sequenced. One can sequence them but they are of no real value as they will already be present on the client machines

7. Auto Update: Application with automatic updates should not be sequenced. Sequenced application most of the time fails to properly update itself. Also allowing auto update leads to non compliance of application version. These types of applications should only be sequenced if the auto update feature can be disabled during sequencing procedure

8. Services: Services which can be started when application starts and shuts down when application main executable shuts down can be included in sequence. Services that run as their own (like boot-time services do but there are others also) are not suitable for sequencing since under App-V all application starting happens under user’s session context.  Also applications which install services which run using specific user credentials cannot be sequenced

9. COM+: Some application which uses COM+ might not work properly in virtual environment, thus this type of applications needs be tested properly

10. COM DLL: Few application which uses COM DLL surrogate virtualization, i.e. DLL’s that run in Dllhost.exe, does not work properly in App-V Environment. Thus this type of applications needs be tested properly

11. Licensing Policies: Applications with licensing enforcement tied to machine, e.g. the license is tied to the system’s MAC address, username etc. It should not be sequenced if activation cannot be done by the user at the first launch 2009 c Mayank Johri Microsoft Application Virtualization - An Introduction to Sequencing Source Files Validation 10 of sequenced application

12. Internet Explorer & Service Packs: Internet Explorer, Windows service patches and service packs cannot & should not be sequenced

13. Network Share Application: It is not a good practice the run applications from network share as they tend to violate the enterprise desktop integrity and thus known to cause integration issues. It is advised to have to entire application inside of App-V package

14. Hosts file located in “%windir%\system32\etc” cannot be sequenced and should be updated on local machine before the sequenced application is launched

VFS Sequencing

In VFS sequencing the application and its supporting applications are installed in there default location. VFS sequencing is recommended process for sequencing DSC Sequencing.

  • Applications with hard-coded path entries can only be sequenced using this method.
  • This is the best solution for sequencing DSC based applications which copy files in sub-folder of base applications.
  • Sequenced applications run slightly slower then Q Drive based sequence
  • Some applications might not work properly, especially apps which try to evaluate the launch location at the launch time.

Dynamic Suite Composition (DSC) in App-V

Generally Middleware apps are dependency for most of the apps, so we virtualize both the apps separately and add HREF attributes of dependency appl to main appl.

Process: Sequence this dependency first and revert it to clean machine. Then before starting main applications sequencing, install dependency and start sequencing process. At the end of sequencing, open OSD in notepad, add HREF attributes of middle ware appl to main appl also add one more tag MANDATORY=”TRUE” True – Interacts with middleware appl, False – does not interact with middleware

How to resolve ICE38 Error


Component DesktopFolder installs to user profile. It must use a registry key under HKCU as its KeyPath, not a file.

In the Components Tab, find the CurrentUser component, which holds all the user's information. Pick one of the registry keys (except the one set as a keypath), right click on it and select the option 'Move'.

Move that key to the component referred on the ICE error message. Go to thatcomponent, open it and find the 'new key'. Right click on the entry and select'Set as Key' option.

Windows File Versioning Rules

At the core of any installer is the actual installation of files. But determining whether to install a file is a complex process. At the highest level, making the determination depends on whether the component to which a file belongs is marked for installation. Once the determination is made that a file should be copied, the process is complicated if another file with the same name exists in the target folder. In such situations, making the determination requires a set of rules involving the following properties:
  • Version
  • Date
  • Language
The installer only uses these rules when trying to install a file to a location that already contains a file with the same name. In this case, the Microsoft® Windows® Installer uses the following rules to determine whether to install.

Highest Version Wins — All other things being equal, the file with the highest version wins, even if the file on the machine has the highest version.

Versioned Files Win — All other things being equal, a versioned file gets installed over a non-versioned file.

Favor Product Language — All other things being equal, if the file being installed has a different language than the file on the machine, favor the file with the language that matches the product being installed. Language neutral files are treated as just another language so the product being installed is favored again.

Mismatched Multiple Languages — All other things being equal, after factoring out any common languages between the file being installed and the file on the machine, any remaining languages are favored according to what is needed by the product being installed.

Preserve Superset Languages — All other things being equal, preserve the file that supports multiple languages regardless of whether it is already on the machine or is being installed.

Non-versioned Files Are User Data — All other things being equal, if the Modified date is later than the Create date for the file on the machine, do not install the file because user customizations would be wiped out. If the Modified and Create dates are the same, install the file. If the Create date is later than the Modified date, the file is considered unmodified, install the file.

Non-versioned Files Using Companion — All other things being equal, a non-versioned file that is associated with a versioned file using the companion mechanism abides by the rules for the versioned file. The only exception is if the versioned file on the machine and the versioned file being installed have the same version and language but the companion file is missing on the machine. In this case the companion file being installed is used even though the versioned file on the machine is used.

Rules Are Global — The rules for determining when to install a file reside in one place within the installer and are global, meaning they apply to all files equally.

Windows File Protection

A common problem in the history of the Microsoft Windows operating systems has been the ability for shared system files to be overwritten by non-operating system installation programs. After such changes are made, the user may experience unpredictable system performance, ranging from application errors to operating system crashes. This problem affects several types of files--most commonly dynamic link libraries (.dll) and executable files (.exe).

In Windows 2000 and Windows XP, the Windows File Protection (WFP) feature prevents overwriting or replacement of certain system files. Overwriting shared system files can result in unpredictable system performance that ranges from application errors to operating system crashes. System instability caused by non-standard replacement of system files has been a common problem. By preventing the replacement of these essential system files, file version mismatches are avoided, and the overall stability of the system is improved.

What are MergeModules

Merge modules provide a standard method by which developers deliver shared Microsoft® Windows® Installer components and setup logic to their applications. Merge modules are used to deliver shared code, files, resources, Registry entries, and setup logic to applications as a single compound file. Developers authoring new merge modules, or using existing merge modules, should follow the standard outlined in this section.

A merge module is similar in structure to a simplified Windows Installer .msi file. However, a merge module cannot be installed alone, it must be merged into an installation package using a merge tool. Developers wanting to use merge modules must obtain one of the freely distributed merge tools, such as Mergemod.dll, or purchase a merge tool from an independent software vendor. Developers can create new merge modules by using many of the same software tools used to create a Windows Installer installation package, such as the database table editor Orca provided with the Windows Installer SDK.

When a merge module is merged into the .msi file of an application, all the information and resources required to install the components delivered by the merge module are incorporated into the application's .msi file. The merge module is then no longer required to install these components and the merge module does not need to be accessible to a user. Because all the information needed to install the components is delivered as a single file, the use of merge modules can eliminate many instances of version conflicts, missing Registry entries, and improperly installed files.

Advantages of MSI Packaging

Following are the advantages over legacy setup

Transaction based operation: All installation operations are transactional. For each operation that Windows Installer performs, it generates an equivalent undo operation that would undo the change made to the system. If a failure occurs during the middle of an installation, Windows Installer can roll back the machine to its original state.

Self-healing: Windows Installer supports "self-healing" abilities for applications. Applications can detect common installation problems at launch, like missing files or registry keys, and automatically repair themselves.

Installation on demand: Windows Installer supports on-demand installations of application features. For example, the spelling checker in Microsoft Office Word may not be installed by default, but a user can trigger an on-demand installation of this feature.

Installation in locked-down environments: In fully locked-down environments, users don't generally have permission or the ability to install applications. In most cases, they don't have write-access to the Program Files folder of their computers or to the HKEY_LOCAL_MACHINE registry location. If an administrator approves an installation package by means of Group Policy, for instance, Windows Installer can perform an installation on the user's behalf.

Managed Application: Windows Installer provides a set of standard Win32® application programming interfaces (APIs) and automation interfaces for applications and administrators to use for querying the installation state on the machine. The APIs allow querying of the current state, verification of the existing state, repair of a corrupted state, and transition from one state to another.

ActiveSetup Implementation

If you are using Windows Installer for per-machine-based installations, it could be the case that your setup contains components with user-related resources that have no entry-points to initiate the install-on-demand/self healing function of MSI. This, of course, will mean that when deployed the package will not install the user resources required to run the application properly.

But wait, don’t lose hope! In such a case you can use the Active Setup for a self healing on demand. It needs just one registry key in your msi file.

This registry key can be assigned to any Component that installs per-machine resources or you can create one component just for this key.

How it works:
The value in the StubPath key will be executed at a special time during which the Active Setup tasks are running and no other Windows Installer processes are running in the background that could cause the repair not to run (which would be the case if you attempted to run this command in the Run-Once registry key).
The command will thereby perform a repair for HKCU registry keys and missing files.

If this command runs successfully, it will create a registry key in HKCU and the command will not run again. However, if you wish to trigger this command again, because of a small update, then use the Version Key and increment its value each time you wish to run this command again when a user logs in.

Important Note:
Remember to use this command only if your setup does not contain any entry-point that would not allow the repair on demand, because this repair will run when a user on the target workstation logs in after the installation has been run. That means, even if the user doesn’t use the installed application, it will run the repair. And as you may already know, those repairs can take some time depending on the workstation’s hardware configuration and the size of the package.

SetACL Permissions Examples

Using SetACL to provide permissions

Command1: Providing registry permissions to Authenticated Users group

1.  setacl.exe "MACHINE\SOFTWARE\AHouse\GEPUIS ORBIX" /registry /grant "Authenticated Users" /full /i:cont_obj_inh /p:yes /r:cont_obj /silent

OR using S-ID

"MACHINE\SOFTWARE\AHouse\GEPUIS ORBIX" /registry /set "S-1-5-11" /full /sid /silent

Command2: Providing Folder permissions to Authenticated Users group

setacl.exe "c:\AudioTools\GIMP" /dir /set "S-1-5-11" /change /sid /silent

Change the group name / S-ID according to your requirement

Why multiple MSIExec.exe processes running on machine during aninstallation

A number of MSIExec processes can be running during an installation. The reason for this is that Windows Installer uses a client-server model for performing installations. Additionally for security reasons, Windows Installer hosts DLL and script custom actions in a "sandbox" process. Depending on how the install was initiated, one of the MSIExec processes can be the client process. Another MSIExec process is Windows Installer service. Any remaining MSIExec processes are usually sandbox processes for hosting custom actions. The determination as to which MSIExec process will serve as the sandbox process for a script or DLL custom action depends in part on whether the custom action will run elevated or impersonated and whether the custom action is 32-bit or 64-bit.

Difference Between Execute Immediate and Execute Deferred

  • Deferred custom actions can only be sequenced between the InstallInitialize and InstallFinalize actions in execute sequence tables. Immediate custom actions, on the other hand, can be sequenced anywhere within any of the sequence tables.
  • Deferred custom actions cannot access the installation database. In fact, deferred custom actions have very limited access to the installation session because an installation script can be executed outside of the installation session that created it. Immediate custom actions have access to the installation database and can read and set installation properties, modify feature and component states, and add temporary columns, rows, and tables among other things.
  • While both deferred and immediate custom actions can run in the context of the user initiating the installation, only deferred custom actions can run elevated using the system context.

  • Deferred custom actions are not executed immediately. Instead they are scheduled to run later during the execution script. The execution script isn't processed until the InstallExecute, InstallExecuteAgain, or InstallFinalize action is run.

Monday, 5 September 2011

SCCM 2007 Ceritification Dumps

Please visit following link to get latest dumps on SCCM 2007 Certification 70-401 

Kaviza VDI-in-a-box

VDI-in-a-box brought to you by Citrix makes desktop virtualization easy and affordable without sacrificing performance. An all-in-one software appliance with many platform and end-point options, VDI-in-a-box deploys quickly on inexpensive off-the-shelf servers, and delivers high-availability without requiring shared storage. VDI-in-a-box eliminates over 66% of VDI infrastructure costs and delivers virtual desktops for less than the cost of PCs.

For more information, visit

Windows Intune

Your employees depend on you to keep their PCs running at their best, whether they are in the office or on the road. Windows Intune simplifies and helps businesses manage and secure PCs using Windows cloud services andWindows 7. The Windows Intune cloud service delivers management and security capabilities through a single Web-based console so you can keep your computers and users operating at peak performance from anywhere. Give your users the best Windows experience with Windows 7 Enterprise or standardize your PCs on the Windows version of your choice. Windows Intune fits your business by giving you big tech results with a small tech investment. The result? Less hassle, and peace of mind knowing that your employees' PCs are well-managed and highly secure.

Windows Intune can be used by in-house IT professionals or by solution providers to manage the PCs of multiple businesses.

Whether you are in search of a solution that can deliver the essentials of management and protection for all your PCs or just those hard-to-reach PCs—highly distributed workers, non-domain joined PCs, field employees, or recent acquisitions—Windows Intune can help.

For more information please visit

Tuesday, 30 August 2011

VBScript to Check 32bit or 64bit Operating System

VBScript to check if Operating Systems is 32bit or 64bit

Dim WshShell
Set WshShell = CreateObject("WScript.Shell")
Bits = GetObject("winmgmts:root\cimv2:Win32_Processor='cpu0'").AddressWidth
msgbox Bits

Hide ARP entry of an MSI

VBScript to hide ARP entry of an MSI. In place of [ProductCode] give the product code of the msi for which you want to hide the ARP entry.

Dim WSHShell,strRegKey 
Set WSHShell = WScript.CreateObject("WScript.Shell") 
WSHShell.Regwrite "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\[ProductCode]\SystemComponent","1","REG_DWORD"

VBScript to find MAC Address of a machine

VBScript to find the MAC Address of Network Adaptors attached to a computer.
On Error Resume Next

Dim strComputer
Dim objWMIService
Dim colItems

strComputer = "."

Set objWMIService = GetObject("winmgmts:" _ 
	& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colItems = objWMIService.ExecQuery _
    ("Select * from Win32_NetworkAdapterConfiguration")

For Each objItem in colItems
    Wscript.Echo "MAC Address: " & objItem.MACAddress

VBScript to Check Free Disk Space

Following script helps to find free disk space available on C-Drive, change the Drive letter in the script if you want to find free disk space of any other drive.

strComputer = "." 
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") 
Set colItems = objWMIService.ExecQuery( _
    "SELECT * FROM Win32_LogicalDisk WHERE DeviceID = 'C:'",,48) 
For Each objItem in colItems 
    Bytes = objItem.FreeSpace

If Bytes >= 1073741824 Then
	SetBytes = Round(FormatNumber(Bytes / 1024 / 1024 / 1024, 2), 0) & " GB"
ElseIf Bytes >= 1048576 Then
	SetBytes = Round(FormatNumber(Bytes / 1024 / 1024, 2), 0) & " MB"
ElseIf Bytes >= 1024 Then
	SetBytes = Round(FormatNumber(Bytes / 1024, 2), 0) & " KB"
ElseIf Bytes < 1024 Then
	SetBytes = Bytes & " Bytes"
	SetBytes = "0 Bytes"
End If

Wscript.Echo "OUTPUT = " & SetBytes


SendKeys using VBScript

Following script is an example of how to use SendKeys function available in VBScript to pass automated clicks to an application.

Application Window Name should be changed in the script according to application that you are working on.

On Error Resume Next

Set WshShell = CreateObject("WScript.Shell")
strWindowNameEN = "Application Window Name"

successEN = False

successEN = WshShell.AppActivate(strWindowNameEN)
Loop Until (successEN = True)

If (successEN) Then
WshShell.AppActivate strWindowNameEN
End IF

WshShell.SendKeys "{TAB}"
WshShell.SendKeys "{ENTER}"

Add entries to Hosts File

Following script can be used to append entries in HOSTS file. A text file containing the entry to be appended should be placed in INPUT location as in below script

 Const ForReading = 1, ForWriting = 2, ForAppending = 8
Dim TargetFile,objWshShell,objFSO, Input, ProgramFiles, WinDir
Dim objTextFile, Target
Set objWshShell = CreateObject("WScript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")
ProgramFiles = ObjWshShell.ExpandEnvironmentStrings("%ProgramFiles%")
WinDir = ObjWshShell.ExpandEnvironmentStrings("%WinDir%")
Set Targetfile = objFSO.GetFile(WinDir & "\system32\drivers\etc\hosts")
Set Input = objFSO.GetFile(ProgramFiles & "\Input.txt")

Set objTextFile = objFSO.OpenTextFile (Input, ForReading)
Set Target = CreateObject("Scripting.FileSystemObject")
Set TargetFile = Target.OpenTextFile (TargetFile, ForAppending, True)
Do Until objTextFile.AtEndOfStream
Input = objTextFile.ReadLine
objFSO.DeleteFile(ProgramFiles & "\Input.txt")

How to Package Drive Applications using DPInst.exe

DPInst supports the following command-line switches that set the DPInst configuration flags that are described in Setting DPInst Configuration Flags and additional switches that further modify DPInst operation:

Sets the installAllOrNone flag to ON, which configures DPInst to install drivers in a driver package only if all of the drivers in the installation package can be installed.

Configures DPInst, if DPInst is called at a command prompt, to display the text of log messages in the Command Prompt window.

Sets the deleteBinaries flag to ON, which configures DPInst to delete the binary files that were copied to a system when a driver package was installed.

Note   Starting with Windows 7, the /d switch is ignored by the operating system. Binary files, which were copied to a system when a driver package was installed, can no longer be deleted by using DPInst.

Sets the enableNotListedLanguages flag to ON, which configures DPInst to enable all of the supported languages that are not explicitly enabled by language XML elements in a DPInst descriptor file.

Sets the forceIfDriverIsNotBetter flag to ON, which configures DPInst to install a driver on a device even if the driver that is currently installed on the device is a better match than the new driver.

/h/?, or /help
Configures DPInst to display help information about DPInst command-line options. If DPInst was called at a command prompt, DPInst displays the help text in the Command Prompt window; otherwise, DPInst displays the help text in a message box.

/l language-ID
Configures DPInst to display the text, bitmaps, and icon for the language that is specified by a language-ID value. The language-ID value can be specified in either hexadecimal or decimal format. For a list of the languages and corresponding language identifiers, see DPInst Localization Support.

If DPInst supports the specified language and runs on a Windows operating system in which the language is installed, DPInst will use the specified language. For more information about how to use the /L switch, see Testing Language Customization.

Sets the legacyMode flag to ON. In legacy mode, DPInst accepts unsigned driver packages without performing signature verification. However, be aware that Windows driver signing requirements apply to the installation of a driver package from the DIFx driver store. These requirements depend on the Windows version, the signature type, the driver package type, and the driver signing options that are set for a computer.

/q or /s
Sets the quietInstall flag to ON, which suppresses the display of wizard pages, user dialog boxes, and other user messages that DPInst and Windows generate. ThequietInstall flag works with the presence of an end-user license agreement (EULA) page and the suppressEulaPage flag.

Sets the promptIfDriverIsNotBetter flag to ON, which configures DPInst to display a user dialog box if a new driver is not a better match to a device than a driver that is currently installed on the device. The user dialog box informs a user of this situation and provides an option to replace the driver that is currently installed on the device with the new driver.

/path DPInst-working-directory
Sets the DPInst working directory to DPInst-working-directory. DPInst searches for driver packages in the DPInst working directory and in subdirectories under the working directory that are specified by subDirectory XML elements in a DPInst descriptor file. For more information about how to set the DPInst working directory and specifying subdirectories under the working directory, see Specifying the Location of a Driver Package.

Sets the suppressAddRemovePrograms flag to ON, which configures DPInst to suppress the addition of entries to Programs and Features in Control Panel. These entries represent the driver packages and driver package groups that DPInst installs.

Note  In versions of Windows earlier than Windows Vista, DPInst added the entry for the driver package or driver package group to Add or Remove Programs in Control Panel.

Sets the suppressEulaPage flag to ON, which configures DPinst to suppress the display of a EULA page. The suppressEulaPage flag works with the quietInstall flag and the suppressWizard flag.

Sets the scanHardware flag to ON, which configures DPInst to install a driver package for a Plug and Play (PnP) function driver only if the driver package matches a device that is currently configured in a computer and if the driver package is a better match for the device than the driver package that is currently installed on the device.

Sets the suppressWizard flag to ON, which suppresses the display of wizard pages and other user messages that DPInst generates. The suppressWizard flag works with the presence of a EULA page and the suppressEulaPage flag.

/u inf-file-path
Configures DPInst to uninstall a driver package whose INF file is specified by inf-file-path. The path that is specified by inf-file-path is relative to the directory that containsDPInst.exe.


The following command includes the /q and /se command-line switches, which configure DPInst to operate in quiet-install mode, whether a eula XML element is included in a DPInst descriptor file. This command suppresses all of the wizard pages, user dialog boxes, and other user messages that DPInst and Windows generate.

dpinst.exe /q /se

The following command includes the /q command-line switch, which configure DPInst to operate in quiet-install mode. However, DPInst will operate in quiet-install mode only if aeula XML element is not included in a DPInst descriptor file. If a eula element is included, DPInst does not operate in quiet-install mode.

dpinst.exe /q

The following command includes a /se command-line switch, which suppresses the display of only the EULA page.

dpinst.exe /se

The following command includes the /q and /se command-line switches, which configure DPInst to operate in quiet-install mode, including suppressing the EULA page. The command also includes the /f command-line switch, which forces the installation of a new driver package for a device that is configured in a computer, even if the driver package that is currently installed on the device is a better match for the device than the new driver package.

dpinst.exe /q /se /f

The following command includes the /sh command-line switch, which configures DPInst to install a driver package on a device that is configured in a computer only if the new driver package is a better match for the device than the driver package that is currently installed on the device. This command facilitates using an installation package to batchinstall driver packages for devices that are configured in a computer. Although the installation package might contain a large number of driver packages, DPInst will install only driver packages that are better matches for the devices than the driver packages that are currently installed on the devices.

dpinst.exe /sh

The following command includes the /u command-line switch, followed by the Abc.inf INF file, and the /d command-line switch. The /u command-line switch uninstalls the driver package that is associated with the Abc.inf INF file from all of the devices on which the package is installed. The /d command-line switch deletes the binaries that were copied to the system when the package was installed and deletes the package from the DIFx driver store. If the driver package is signed, the corresponding catalog file must be present in the same directory in which Abc.inf is located.

dpinst.exe /u abc.inf /d

Difference between Execute Immediate and Execute Deferred

Immediate Execution
You use this option if the custom action should be executed during Windows Installer’s first pass through the installation database, which executes before any scripts. Custom actions run in Immediate Execution mode can change properties, feature states, component states, target directories, or schedule system operations. They can also be placed in the UI Sequence or in the Execute Sequence. If your custom action requires install files or registry keys, then it should be executed after the InstallFinalize sequence.

Deferred Execution
You use this option if the custom action should be executed later, during the install script installation. This is the best option if your custom action depends on a file that is installed with the installation and if the custom action changes the system directly. Deferred custom actions cannot change properties in the Property table, call another system service, or change the system directly. A custom action using Deferred Execution can only be placed in the Execute Sequence after the InstallInitialize sequence and before the InstallFinalize sequence. When using a custom action set to Deferred Execution, the session handle and the property data set during the installation sequence are not available

VMWare ThinApp 4.6.2 released

VMWare ThinApp 4.6.2 is released and can be download at VMWare ThinApp

The ThinApp 4.6.2 release adds the following features to improve usability, performance, and provide updates:

  • Multiple enhancements have been made in the ThinDirect component, and outstanding known issues addressed, to improve performance and reliability.

  • ThinDirect now supports the redirection of all browser pages except a specified list of URLs, instead of only supporting the redirection of only a list of specified URLs.

  • New parameters have been added to the thinreg utility to enhance search and exclude functionality. See New Parameters in thinreg.exe.

  • The thinreg utility can now uninstall applications without dependence on .vbs file association to run the uninstall script.

  • Microsoft Office 2007 application startup times have been improved by approximately 30%.

  • The IgnoreDDEMessages parameter has been added to the Package.ini file. This parameter, which is automatically set for virtualized Internet Explorer 6 packages, causes an application to ignore any DDE messages that it receives, meaning that it can be used to ensure Document Open operations always launch in the native application and not an open virtual application.

Monday, 29 August 2011

How To Register DLL

Following Command can be used to register DLL/OCX Files

regsvr32 /s <Path to DLL file to be registered>

Use, regsvr32 /? on command line to see more options available to register DLLs

ICE Errors Reference

The following list provides links to each individual ICE. These ICEs are used to validate installation packages.

ICEBrief description of ICE
ICE01:Simple test of ICE mechanism.
ICE02:Circular reference test for File-Component, Registry-Component KeyPaths.
ICE03:Basic data and foreign key validation.
ICE04Validates file sequence numbers against the Media table's LastSequence numbers.
ICE05Validates for "required" entries in particular tables.
ICE06Validates for missing column or tables in the database. Any column defined in the _Validation table must be found in the database.
ICE07Validates that fonts are installed to the FontsFolder
ICE08Checks for duplicate GUIDs in the ComponentId column of the Component table.
ICE09Validates that the permanent bit is set for every component marked for installation into the SystemFolder.
ICE10Ensures that advertise feature states among children and parents are compatible.
ICE11ICE11 validates the Source column of the Custom Action table for Nested Installation custom actions. The Source column must contain a valid GUID (MSI product code).
ICE12Validates type 35 and type 51 custom actions and their locations in the sequence tables.
ICE13Validates that dialogs are not listed as actions in the execute sequence tables. Dialog actions are only allowed in the user interface sequence tables.
ICE14Validates that feature parents do not have msidbFeatureAttributesFollowParent bit set. Also validates that the entries in the Feature and Feature_Parent columns are not the same in the same record.
ICE15Validates that a circular reference exists between every entry in the MIME table and the corresponding extension in the Extension table.
ICE16Validates that the ProductName in the Property table is not greater than 63 characters in length.
ICE17Validates control type dependencies in the Control table. Covers PushButtons, RadioButtonGroups, ListBoxes, ListViews, and ComboBoxes
ICE18Validates the KeyPath column of the Component table when it is NULL. In this case, the key path is a Directory.
ICE19Validates the advertising tables: Class, TypeLib, Extension, PublishComponents, and Shortcut.
ICE20Validates that the required dialogs are in the Dialog table.
ICE21Validates that all components in the Component table map to a feature in the FeatureComponents table.
ICE22Validates that the Feature_ and Component_ columns in the PublishComponent table.
ICE23Validates the tab order of controls in all dialog boxes.
ICE24Validates certain properties in the Property table.
ICE25Verifies merge module dependencies and merge module exclusions.
ICE26Validates required and prohibited actions in the sequence tables.
ICE27Validates the organization and order of the sequence tables.
ICE28Validates actions that must not be separated by ForceReboot.
ICE29Validates that your stream names remain unique if truncated to the 62 character limit.
ICE30Validates that the installation of components containing the same file never installs the file more than once in the same directory.
ICE31Validates the text styles listed in the Text column of the control table.
ICE32Compares the column definitions to validates that keys and foreign keys are of the same size and type.
ICE33Checks for entries in the registry table that belong in other tables.
ICE34Validates that every group of radio buttons has a default.
ICE35Validates that any files from a cabinet file cannot be set to run from source
ICE36Validates that icons listed in the Icon table are used the Class, ProgID, or Shortcut tables.
ICE38Validates that components installed under the user's profile use a registry key under HKCU as their key path.
ICE39Validates the Summary Information stream of the database.
ICE40Performs various miscellaneous checks
ICE41Validates that entries in the Extension and Class tables refer to components belonging to the referenced feature.
ICE42Checks that Class table entries don't have EXEs set as InProc, and that only LocalServer contexts have arguments and DefInProc values.
ICE43Checks that non-advertised shortcuts are in components with HKCU reg keys as the key paths.
ICE44Checks that dialog events in the ControlEvent table (NewDialog, SpawnDialog, SpawnWaitDialog) reference valid Dialogs in the Dialog table.
ICE45Checks for reserved bits that are set.
ICE46Checks for custom properties that only differ from defined properties by their case.
ICE47Checks for features with more than 1600 components per feature on Windows NT/Windows 2000 and more than 800 components per feature on Windows 95 and Windows 98.
ICE48Checks for directories that are hard-coded to local paths.
ICE49Checks for non-REG_SZ default values in the registry table.
ICE50Checks that advertised shortcuts have correct icons and context menus.
ICE51Checks that TTC/TTF fonts do not have titles, but that all other fonts do.
ICE52Checks for non-public properties in the AppSearch table.
ICE53Checks for registry entries that write private installer information or policy values.
ICE54Checks for components using companion files as their key path file.
ICE55Checks that LockPermission objects exist and have valid permissions.
ICE56Validates that the directory structure of the .msi file has a single valid root.
ICE57Validates that individual components do not mix per-machine and per-user data.
ICE58Checks that your Media table does not have more than 80 rows.
ICE59Checks that advertised shortcuts belong to components that are installed by the target feature of the shortcut.
ICE60Checks that if a file in the File table is not a font and has a version, then it also has a language.
ICE61Checks the Upgrade table.
ICE62Performs extensive checks on the IsolatedComponent table for data that may cause unexpected behavior.
ICE63Checks for proper sequencing of the RemoveExistingProducts action.
ICE64Checks that new directories in the user profile are removed in roaming scenarios
ICE65Checks that the Environment table does not have invalid prefix or append values.
ICE66Uses the tables in the database to determine which schema your database should use.
ICE67Checks that the target of a non-advertised shortcut belongs to the same component as the shortcut itself, or that the attributes of the target component ensure that it does not change installation locations.
ICE68Checks that all custom action types needed for an installation are valid.
ICE69Checks that all substrings of the form [$componentkey] within a Formatted string do not cross-reference components.
ICE70Verifies that integer values for registry entries are specified correctly
ICE71ICE71 verifies that the Media table contains an entry with DiskId equal to 1.
ICE72ICE72 ensures that the only custom actions used in the AdvtExecuteSequence table are type 19, type 35, and type 51 custom actions
ICE73ICE73 verifies that your package does not reuse package codes or product codes of the Windows Installer SDK samples. See Package Codes and Product Codes.
ICE74ICE74 verifies that the FASTOEM property has not been authored into the Property Table.
ICE75ICE75 verifies that all custom action types that use an installed file as their source are sequenced after the CostFinalize action.
ICE76ICE76 verifies that no files in the BindImage table reference SFP (WFP) catalogs.
ICE77ICE77 verifies that in-script custom actions are sequenced after the InstallInitialize action and before the InstallFinalize action.
ICE78ICE78 verifies that that the AdvtUISequence table either does not exist or is empty.
ICE79ICE79 validates references to components and features entered in the database fields using the Condition data type.
ICE80ICE80 validates that Template Summary Property and Page Count Summary Property correctly specify the presence of 64-bit components or custom action scripts.
ICE81Validates the MsiDigitalCertificate table and MsiDigitalSignature table.
ICE82Validates the InstallExecuteSequence table.
ICE83Validates the MsiAssembly table.
ICE84Checks the sequence tables to verify that required standard actions have not been set with conditions.
ICE85Validates that the SourceName column of the MoveFile table is a valid long file name.
ICE86Issues a warning if the package uses the AdminUser property in database column of the Condition type.
ICE87Validates that the following properties have not been authored in the Property Table.
ICE89Validates that the value in the Progid_Parent column in ProgId table is a valid foreign key into the ProgId column in ProgId table.
ICE90Posts a warning if it finds that a shortcut's directory has been specified as a public property.
ICE91Posts a warning if a file, .ini file, or shortcut file is installed into a per-user profile directory that does not vary based on the ALLUSERS property.
ICE92Verifies that a component without a Component Id GUID is not also specified as a permanent component.
ICE93Issues a warning if a custom action uses the same name as a standard action.
ICE94Issues a warning if there are any unadvertised shortcuts pointing to an assembly file in the global assembly cache.
ICE95Checks the Control table and BBControl table to verify that the billboard controls fit onto all the billboards.
ICE96Verifies that the PublishFeatures action and the PublishProduct action are entered in the AdvtExecuteSequence table.

VBScript to Delete File/Folder from User Profiles

Following VBScript can be used to delete files/folders from Each and every User profile
Dim FSfolder
Dim subfolder
Dim i 

set objshell = CreateObject("")
Set FSO = CreateObject("Scripting.FileSystemObject")
Profile = strSysDrive & "C:\Documents and Settings"
Set FSfolder = FSO.GetFolder(Profile) 'getting the user profile folders

For Each subfolder In FSfolder.SubFolders

   If (subfolder.Name <> "All Users" And  subfolder.Name <> "Default User"_
   and subfolder.Name <> "LocalService" and subfolder.Name <> "NetworkService") Then

	folder1=Profile & "\" & subfolder.Name & "\Application Data\Sample"


   end if



Function DeleteThisFolder(FolderName)

    If FSO.FolderExists(FolderName) Then
	     objshell.Run "CMD.EXE /C RD /S /Q """ & FolderName & """",0,True
    End If

End Function