Microsoft KB Archive/870712

= Frequently asked questions about how to deploy .NET Framework applications by using Windows Installer =

Article ID: 870712

Article Last Modified on 8/28/2007

-

APPLIES TO


 * Microsoft Windows Installer 2.0
 * Microsoft Windows Installer 3.0
 * Microsoft Windows Installer 3.1

-





SUMMARY
This article describes different ways to build distributable applications and to deploy them by using Microsoft Windows Installer. It also discusses how to obtain some of the tools that you can use to build and to distribute your applications. This article contains links to many resources for more information about tools and methods for creating and for distributing applications that you build by using the Microsoft .NET Framework.



INTRODUCTION
This article contains many frequently asked questions (FAQs) about how to deploy various kinds of applications, such as Microsoft Windows applications and Web applications. It also contains information about resolutions and workarounds for problems that you may experience. Additionally, this article contains links to step-by-step procedures for deploying various kinds of applications.



MORE INFORMATION
Q1: How do I install Microsoft SQL Server Desktop Engine 2000 (also known as MSDE 2000) together with my application?

A1: To do this, you must include the MSDE merge modules in your deployment package. To download the MSDE merge modules, visit the following Microsoft Web site:

http://www.microsoft.com/downloads/details.aspx?familyid=90dcd52c-0488-4e46-afbf-acace5369fa3

For more information, visit the following Microsoft Developer Network (MSDN) Web sites:

http://msdn2.microsoft.com/en-us/library/aa902673(SQL.80).aspx

http://msdn2.microsoft.com/en-us/library/aa214937(SQL.80).aspx

Q2: How do I turn off the Repair option for a file that I expect my users to modify?

A2: To do this, modify the Windows Installer package (.msi) file after you build it. You can use the Orca database table editor (Orca.exe) or Windows Installer Automation to delete the Keypath entry in the Component table of your Windows Installer package.

For each file that you do not want the Windows Installer to repair automatically, you must use the File table to determine the Component value for the rows to modify in the Component table. If you do this, the repair will run only if the parent folder is missing.

Q3: Where can I find an overview that helps me deploy a Microsoft .NET Framework application?

A3: For information about how to do this, visit the following MSDN Web site:

http://msdn2.microsoft.com/en-us/library/ms954585.aspx

Q4: Where can I download the Microsoft Windows Installer Software Development Kit (SDK)?

A4: Visit the following Microsoft Web site:

http://www.microsoft.com/downloads/details.aspx?FamilyId=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5

Q5: Where can I obtain a bootstrapping application that will help me install the .NET Framework together with my application?

A5: You can download the bootstrapping application from either one of the following Microsoft Web sites:

http://msdn2.microsoft.com/en-us/library/ms994336.aspx

http://www.codeplex.com

Q6: Where can I find some examples of how to use Setup projects?

A6: For information about deployment walkthroughs, visit the following MSDN Web site:

http://msdn2.microsoft.com/en-us/library/tw8kdk75(vs.71).aspx

Q7: How do I modify the security information on a computer during the installation process?

A7: For information about how to do this, visit the following MSDN Web site:

http://msdn2.microsoft.com/en-us/library/ms951290.aspx

Q8: Where can I obtain the Help file or the updates for Crystal Reports?

A8: Visit the following Business Objects Web site:

http://support.crystaldecisions.com/updates/

Q9: How do I resolve an “unrecoverable build error” that occurs when I try to build a Setup project?

A9: For information about how to do this, click the following article number to view the article in the Microsoft Knowledge Base:

329214 &quot;Unrecoverable build error&quot; error message when you build Setup and Deployment projects

Q10: I receive an error message while validating HRESULT = '80040155'. This problem occurs when I try to build a Setup project. How can I resolve this problem?

A10: For information about how to do this, click the following article number to view the article in the Microsoft Knowledge Base:

329214 &quot;Unrecoverable build error&quot; error message when you build Setup and Deployment projects

Q11: How do I modify the settings for a Microsoft Internet Information Services (IIS) folder that is not available on a Web folder in the File System Editor?

A11: For information about how to modify IIS settings by using a custom action, visit the following MSDN Web site:

http://msdn2.microsoft.com/en-us/library/aa289522(VS.71).aspx

Q12: What are the differences between deploying an application that was built by using Microsoft Visual Studio .NET and deploying an application that was built by using Microsoft Visual Basic 6.0?

A12: For information about the differences in the deployment process between these kinds of applications, visit the following MSDN Web site:

http://msdn2.microsoft.com/en-us/library/aa289503(VS.71).aspx

Q13: How do I deploy a hybrid Visual Basic application?

Note A hybrid Visual Basic application is an application that contains both Visual Basic 6.0 components and Microsoft Visual Basic .NET components.

A13: For information about how to deploy a hybrid Visual Basic 6.0 application, visit the following MSDN Web site:

http://msdn2.microsoft.com/en-us/library/aa289181(VS.71).aspx

Q14: Where can I find more information about No-Touch Deployment?

A14: Visit the following MSDN Web site:

http://msdn2.microsoft.com/en-us/library/aa289511(VS.71).aspx

Q15: How do I deploy ASP.NET applications?

A15: For information about how to do this, visit the following MSDN Web site:

http://msdn.microsoft.com/msdnmag/issues/02/11/ASPColumn/toc.asp

Q16 How do I debug a custom action or a custom installer class?

A16 To do this, you can use one of the following methods:
 * Add a System.Diagnostics.Debugger.Launch method call to your code file. This method opens the Just In Time debugging window. You can use this method to attach a new debugger to your code or to open a new debugger when your code runs.
 * Add a MessageBox.Show(“Debug Me”) method call to your code file. When the Debug Me message box appears, use an instance of Visual Studio .NET to attach the debugger to the MessageBox process, and then step into the debugger.
 * Set your debugging preferences to start InstalUtil.exe and to pass your assembly as a parameter to InstalUtil.exe. When you run your application, the control stops at the breakpoint that you have set. InstallUtil.exe will run your custom actions.

Q17: When I start Visual Studio .NET, a Windows Installer repair dialog box appears. How can I resolve this problem?

A17: For information about how to resolve this problem, click the following article number to view the article in the Microsoft Knowledge Base:

313900 FIX: A Windows Installer Repair dialog box appears when you start Visual Studio .NET

Q18: I receive a &quot;this Setup does not contain the .NET Framework&quot; error message when I try to deploy a .NET Framework application. How can I resolve this problem?

A18: For information about how to resolve this problem, click the following article number to view the article in the Microsoft Knowledge Base:

320426 &quot;This Setup does not contain the .NET Framework&quot; error message during Visual Studio .NET deployment

Q19: How do I create a shortcut for a Visual Studio .NET Setup project?

A19: For information about how to do this, click the following article number to view the article in the Microsoft Knowledge Base:

307358 How to create shortcuts for a .NET deployment project

Q20: I receive an &quot;error installing ODBC driver&quot; error message when I use the Vfpodbc.msm merge module in a Visual Studio .NET Setup and Deployment project. How can I resolve this problem?

A20: For information about how to work around this problem, click the following article number to view the article in the Microsoft Knowledge Base:

814700 BUG: &quot;Error installing ODBC driver&quot; error message when you use the Vfpodbc.msm merge module in a Visual Studio .NET Setup and Deployment project

Q21: I receive an &quot;unable to build custom action&quot; error message when I try to build a Setup project. How can I resolve this problem?

A21: For information about how to work around this problem, click the following article number to view the article in the Microsoft Knowledge Base:

814744 FIX: &quot;Unable to build custom action&quot; error when you build a Setup project

Q22: How do I deploy a Visual Basic .NET project that uses an ActiveX Data Objects (ADO) interop?

A22: For information about how to do this, click the following article number to view the article in the Microsoft Knowledge Base:

321688 How to deploy a Visual Basic .NET application that uses ADO interop

Q23: I receive an &quot;Error 1619&quot; error when I try to install a package that uses a Web Bootstrapper. How can I resolve this problem?

A23: For information about how to resolve this problem, click the following article number to view the article in the Microsoft Knowledge Base:

313498 BUG: Error 1619 when you install a package that uses Web Bootstrapper

Q24: How do I deploy an assembly to the global assembly cache (also known as the GAC) of a destination computer?

Note The global assembly cache is also known as the GAC.

A24: For information about how to do this, click the following article number to view the article in the Microsoft Knowledge Base:

324168 How to deploy an assembly to the target computer global assembly cache

Q25: Can I register the assemblies with the COM interfaces?

A25: If your assembly has a dependency, and you are trying to use the RegisterCom tool, this may not work. For example, this may not work if your assembly depends on a class library. This problem occurs because, although the call to the Assembly Registration tool (Regasm.exe) gives you the registration information, the tool is called in the Obj folder. Therefore, the dependency is not found, and the call to the tool fails. However, the tool does not notify you of whether it has successfully registered the assembly.

The best workaround for this problem is to add the assembly from the Bin folder. Another workaround is to use the RegisterSelfReg tool.

Additionally, make sure that you register manually by using the RegAsm /codebase command. If your assembly is not in a shared location, it will not be found unless it is in the same folder as the calling code.

Note The /codebase option creates a Codebase entry in the registry. The Codebase entry specifies the file path of an assembly that is not installed in the global assembly cache.

Q26: How do I obtain a log file for my install?

A26: To do this, use one of the follow methods:  Run the Windows Installer package at a command prompt. When you do this, use the logging switch, as in the following command:

misexec /i mysetup.msi /l*v mylog.txt

 Save the following text as a .reg file, and then load it in your registry.

REGEDIT4 [HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\Installer] &quot;Logging&quot;=&quot;voicewarmup&quot; &quot;Debug&quot;=dword:00000007

Locate the Temp folder, and then sort the files by date. The most recent Msi*.log file was created during the most recent installation or removal process.

Q27: How can I install a product to a subfolder of a product that is already installed?

A27: To do this, follow these steps.

Note In this example, Product A is installed. Product A has a file that is named MyFile.txt.
 * 1) Use Orca to view the File table. Locate the row that represents the MyFile.txt file.
 * 2) Note the value in the Component_ column, and then open the Component table.
 * 3) In the Component table, locate the row that has the Component_ value that you noted in step 3, and then locate the ComponentID value.
 * 4) Copy the ComponentID value to the clipboard, and then close Orca.
 * 5) In your Setup project, open the Launch Conditions Editor, and then add a Windows Installer Component Search launch condition. For the ComponentID property of the new search, paste the ComponentID value that you copied in step 4.
 * 6) Copy the value of the Property property. This value is similar to COMPONENTEXISTS1.
 * 7) Open the File System Editor, and then click Application Folder.
 * 8) Change the DefaultLocation property to the path of the   folder.

Note  is a placeholder for the destination folder.

After step 6, you can add a condition to the Launch Conditions Editor. For example, you can make your Setup package install if the component is found, or you can make it display a message if the component is not found.

Q28: How do I install Custom Web Folders to a port that is not a default port?

A28: To do this, you must know the value of the Property property for each of your Web Custom Folders. For example, this property value of the Web Custom Folder is NEWWEBPROPERTY1. Additionally, you must run the Windows Installer package at a command prompt.

Assume that your Web server is on port 20. You must include the TARGETPORT value for the Web application folder. Therefore, your command will be similar to the following for one Web folder:

msiexec /i mywebsetup.msi TARGETPORT=20 NEWWEBPROPERTY1PORT=20

Note If you have multiple Web folders, you must add PROPERTY=VALUE pairs for each folder. These values must redirect each listed folder's port to the specified port. Additionally, you may want to remove the Installation Address dialog. If anyone changes the value of the port during the installation process, the Custom Web Folders will use the command line value.

Q29: How do I install an application to the root of a Web site?

A29: Set the value of the VirtualDirectory property to an empty string. You can set it either in the Web Setup project or during the installation process.

Q30: I want to install a service component in the global assembly cache and then configure it in the COM+ catalog. I added an Installer class to my service component, overrode the Install (Idictionary stateSaver) method, and then added the assembly to a merge module. Then, I put the service component in the global assembly cache and added a custom action to the merge module. However, when I compiled my project, I received the following error message:

Unable to build custom action named 'Primary output from RegServer (Active)' because the file's Folder property is set to Global Assembly Cache.

How can I resolve this problem?

A30: This action is not supported. Primarily, it is not supported because assemblies in the global assembly cache are not always available when the custom actions run.

To work around this problem, put your code in different files, and then put your custom action code in a file that is not going to the global assembly cache, if you can. Although some documentation states that COM+ files must be put in the global assembly cache, COM+ files may or may not be put in the global assembly cache, regardless of whether they are registered correctly.

Q31: How do I automatically run my program after I have installed it?

A31: To do this, follow these steps:   Create a .vbs file that contains the following code. Set WshShell = CreateObject(&quot;WScript.Shell&quot;) WshShell.Run &quot;&quot;&quot;&quot; & Property(&quot;CustomActionData&quot;) & &quot;&quot;&quot;&quot;,7,False Set WshShell = Nothing  Open your Setup project, and then start the Custom Actions Editor. Right-click the Commit node, and then add a new Custom Action.</li> Locate the .vbs file that you created in step 1.</li> Set the CustomActionData property to the following value:

[TARGETDIR] 

Note  is a placeholder for your application.</li></ol>

Q32: How do I create an uninstall link on my shortcut?

A32: To do this, follow these steps: <ol> In a Setup project’s folder, create a new Uninstall.bat file.</li> In the Setup project, copy the value of the ProductCode property.</li> Modify the Uninstall.bat file. Make the file contain only the following:

Msiexec /x [ ]

</li> Add the Uninstall.bat file to the Setup project’s application folder.</li> Right-click the uninstall.bat file, and then click Create Shortcut.</li> Rename the shortcut to something that is similar to Remove MyApplication.</li></ol>

Q33: Is it possible to make the installation of a desktop shortcut conditional?

A33: Yes.

Q34: Is it possible to conditionally start the installed application after the installation process has completed?

A34: Yes.

<div class="references_section">