Pages

Tuesday, 26 June 2012

Application Packaging Interview Questions - Windows Basics



Application Packaging Interview Questions related to Windows Basics


Windows Basics

  • Explain Windows Installer(MSI) architecture
  • Can we make Operating system not to install MSIs?
  • How to set Windows to create log files automatically when MSIs are installed?
  • What is the use of MSIs present in C:\Windows\Installer folder?
  • How to identify if a setup is installing drivers?
  • What is a host file? Can we include host file inside MSI?
  • What are Environment Variables, and what is their usage?
  • Name the locations where Environment Variables can be found on Windows OS?
  • How to find whether a Setup is a Legacy or MSI?
  • Disadvantages of Legacy apps?
  • Advantages of MSI apps?
  • Disadvantages of MSI apps?
  • What is the use of Windows Installer Service?
  • What is ActiveSetup?
  • Is ActiveSetup part of MSI or Windows OS?
  • What is Run Key?
  • What is the difference Run, RunOnce and ActiveSetup?
  • What is a File Association or File Extension?
  • What is a ProgID?
  • What is Windows Registry or simply Registry?
  • How are HKCR and HKLM related?
  • How are HKCU and HKU related?
  • What is SID? and what is present inside SID?
  • What is the location of ARP entries in Registy?
  • Where are services located in registry?
  • What is ODBC? 
  • What ODBC entries are required by an application to successfully connect to Database?
  • Versions of WindowsXP, Vista, 7, 2003 Server, 2008 Server Operating Systems?
  • Difference between WindowsXP and Windows7?
  • Is it possible to install MSI file on  clean Windows98 system? and why?
  • When was MSI technology came into existence?
  • What is Event Viewer?
  • command to identify SID of currently logged in user?
  • Can we install two MSIs at a time? and why?
  • Registry Path for ProductCodes of MSIs installed on Windows?
  • What is System Account on Windows?
  • Which is master account on Windows?
  • What is the extension of shortcut file ?
  • How to remove small "arrow" mark for shortcuts on desktop?
  • How to make an application not to create an entry in Add/Remove Programs?
  • How to hide Remove Button for application entry in ARP using Registry?
  • How to hide Change/Modify Button for application entry in ARP using Registry?
  • How to hide Repair Button for application entry in ARP using Registry?
  • Location of AllUsers desktop shortcuts on WindowsXP and Windows7?
  • Location of AllUsers StartMenu shortcuts on WindowsXP and Windows7?
  • What are Local, LocalLow, Roaming folders on Windows 7? and how they are related to WindowsXP folders?
  • What is UAC in Windows7?
  • What is session zero isolation in Windows7?
  • How to set UAC not be displayed for installing MSIs?
  • Differences between 32it and 64bit Operating Systems?
  • How to identify if a application is 32bit or 64bit ?
  • Where are 32bit files stored in 64bit OS?
  • Where are 32bit application related registries stored on 64bit OS HKLM registry?
  • How to detect if OS is 32bit or 64bit?
  • Command to Shutdown computer on WinXP and Win7?
  • Command to Restart computer on WinXP and Win7 ?
  • What is DLL hell?
  • What is Windows File Protection? What is the location where Windows protected files are stored?
  • What is File Versioning?
  • If a machine has DLL of version 2.0 and your application has same DLL with version 3.0, what happens to the file during installation ? 


Search this blog for Answers












Monday, 25 June 2012

Setup is unable to connect to SQL server error while installing SCCM 2012


 Setup is unable to connect to SQL Server with the connection information provided. Verify the following:

- The SQL Server and instance names are entered correctly
- The specified SQL Server instance is not configured to use dynamic ports
- If a firewall is enabled on the SQL Server, inbound rules exist to allow connections to the correct ports if not manually create them 
- The account used to run Setup has permissions to connect to the specified SQL server instance
- the account should administrative privileges on the machine





Resolution: 

Open the “SQL Server Configuration manager” and Naviagte to The Protocols of your SQL Instance in the “SQL Server Network Configuration”
Enable “Named Pipes” and “TCP/IP”
Restart the SQL Service Instance within the SQL Server Services:


This seems to be a common issue during the SCCM 2012 setup:  
Verify also that you are running the one of the supported  SQL versions:
- SQL Server 2008 SP2 with Cumulative Update 9
- SQL Server 2008 SP3 with Cumulative Update 4
- SQL Server 2008 R2 with SP1 and Cumulative Update 6
- SQL Express no longer valid for SCCM 2012

Friday, 22 June 2012

What is Deferred Custom Action





The purpose of a deferred execution custom action is to delay the execution of a system change to the time when the installation script is executed.



This differs from a regular custom action, or a standard action, in which the installer executes the action immediately upon encountering it in a sequence table or in a call to MsiDoAction.


A deferred execution custom action enables a package author to specify system operations at a particular point within the execution of the installation script.


The installer does not execute a deferred execution custom action at the time the installation sequence is processed. Instead the installer writes the custom action into the installation script.


1. Should be placed between install initialize and install finalize.
2. Does not have access to MSIDATABASE in deferred execution.




MSI Upgrade Table



The Upgrade table contains information that’s used when an Installer database is used to make a major upgrade to an existing product. This table contains following columns:



UpgradeCode:
The UpgradeCode property in this column specifies the upgrade code of all products that are to be detected by the FindRelatedProducts action. Unlike the ProductCode, different products may share the same UpgradeCode.

VersionMin:
This column specifies the minimum version to be upgraded. Lower boundary of the range of product versions detected by FindRelatedProducts. A null value means there is no lower bound on the version to be upgraded.

VersionMax:
This column specifies the maximum version to be upgraded. Upper boundary of the range of product versions detected by the FindRelatedProducts action. A null value means there is no upper bound on the version to be upgraded.

Language:
This column contains the set of languages detected by FindRelatedProducts that are to be upgraded and are separated by semicolons. A null value means that any language can be upgraded.

Attributes:
This column can contain any combination of the bit flags as shown in below tables:
Bit flag ( decimal) 
Attribute
1
To enable the MigrateFeatureStates action
2
To detect but not change previous versions
4
To install the new version even if the old version can’t be removed
256
To include VersionMin in the versions upgraded
512
To include VersionMax in the version to be upgraded
1024
To upgrade all languages except those listed in the Language column

Remove:
This column contains a comma-delimited set of names of existing features to be removed.

ActionProperty:
When the FindRelatedProducts action detects a related product installed on the system, it appends the product code to the property specified in this field. The property specified in this column must be a public property and the package author must add the property to the SecureCustomProperties property. Each row in the Upgrade table must have a unique ActionProperty value. After FindRelatedProducts, the value of this property is a list product codes, separated by semicolons (;), detected on the system. 


MSI Registry Table



This table holds all the miscellaneous (that is, not directly related to COM or COM+) information that the Installer needs to write to the Registry to install the application. The Registry table is used by the WriteRegistryValues action. This table contains the following columns:



Registry:
This column is an arbitrary key for the table which is used to identify a registry record.

Root:
This column indicates the Registry hive to be written to. It must have one of the values shown in below table.

Constant

Value

Explanation

None (Empty)

-1
i) For a per-user installation, writes to HKEY_CURRENT_USER.
ii) For a per-machine installation, Writes to HKEY_LOCAL_MACHINE.

msidbRegistryRootClassesRoot

0

HKEY_CLASSES_ROOT

msidbRegistryRootCurrentUser

1
HKEY_CURRENT_USER

msidbRegistryRootLocalMachine

2
HKEY_LOCAL_MACHINE

msidbRegistryRootUsers

3
HKEY_USERS


Key:
The Registry key to be written.

Name:
This column contains the name of the Registry value being written. If the column is null, then the value is written to the default for the Registry key. If the Value column is null, then this column should contain one of the special characters
Special Character
Corresponding Action
+
To create the key when the component is
Installed.

-
To delete the key when the component is uninstalled

*
To create the key on installation and delete it on uninstallation


Value:
This is the actual data to write to the Registry value.
Special Character.
Meaning
If the value starts with #x

Stored as a hexadecimal value.

If the value starts with #%

Stored as an expandable string.

If the value starts with #

Stored as an integer.

The special string [~] is stored as a null.

If this string occurs, the value is stored as a list of strings.

If the string starts with [~]
The value is appended to any existing value.

If the string ends with [~]
The value is prepended to any existing value.

If the value starts with ##
Stored as a string starting with a single # sign.


Component:
This is a foreign key to the Component table that identifies the component controlling this Registry operation.