Aaron Stebner's WebLog

Thoughts about setup and deployment issues, WiX, XNA, the .NET Framework and Visual Studio

April, 2008

  • Aaron Stebner's WebLog

    Where to find .NET Framework 2.0 SP1, 2.0 SP2, 3.0 SP1, 3.0 SP2, 3.5 and 3.5 SP1 setup log files

    • 18 Comments

    A while back, I posted a list of possible log files for .NET Framework 3.5 and Visual Studio 2008 setup.  Since then, I've realized that there are some sets of log files missing from that list, so I decided to create a separate blog post with information about setup log files that are specific to the .NET Framework 3.5 family of products.  This family includes the following:

    • .NET Framework 2.0 SP1 and SP2
    • .NET Framework 2.0 SP1 and SP2 language packs
    • .NET Framework 3.0 SP1 and SP2
    • .NET Framework 3.0 SP1 and SP2 language packs
    • .NET Framework 3.5 and 3.5 SP1
    • .NET Framework 3.5 and 3.5 SP1 language packs

    The following is a list of log files that can be produced by all of the above setup packages.  In all of the cases below, the logs are created by default, and you do not need to specify any verbose logging settings or registry values to cause the logs to be produced.  Also, you can find the %temp% directory by clicking on the Windows start menu, typing %temp% and pressing Enter.

    .NET Framework 2.0 SP1 and SP2 setup log files

    The following is a complete list of log files that can be produced during .NET Framework 2.0 SP1 and SP2 setup.  This list may vary depending on what OS you are installing on, what processor architecture, and what prerequisite components were already installed on the system prior to running .NET Framework 2.0 SP1 and SP2 setup.

    Logs produced by the .NET Framework 2.0 SP1 and SP2 setup wrapper:

    • %temp%\dd_dotnetfx20install*.txt
    • %temp%\dd_dotnetfx20error*.txt
    • %temp%\dd_depcheck_netfx20*.txt

    Logs produced by the packages chained during .NET Framework 2.0 SP1 and SP2 setup:

    • .NET Framework 2.0 SP1 and SP2 verbose MSI log - %temp%\dd_net_framework20*.txt
    • .NET Framework 2.0 SP1 and SP2 language pack verbose MSI log - %temp%\dd_NET_Framework*20*LP*.txt

    .NET Framework 3.0 SP1 and SP2 setup log files

    The following is a complete list of log files that can be produced during .NET Framework 3.0 SP1 and SP2 setup.  This list may vary depending on what OS you are installing on, what processor architecture, and what prerequisite components were already installed on the system prior to running .NET Framework 3.0 SP1 and SP2 setup.

    Logs produced by the .NET Framework 3.0 SP1 and SP2 setup wrapper:

    • %temp%\dd_dotnetfx30install*.txt
    • %temp%\dd_dotnetfx30error*.txt
    • %temp%\dd_depcheck_netfx30*.txt

    Logs produced by the packages chained during .NET Framework 3.0 SP1 and SP2 setup:

    • RGB Rasterizer - %temp%\dd_RGB9Rast_*.txt
    • MSXML 6.0 - %temp%\dd_msxml6_*.txt
    • WIC - %temp%\dd_wic*.txt
    • .NET Framework 2.0 SP1 and SP2 verbose MSI log - %temp%\dd_net_framework20*.txt
    • .NET Framework 2.0 SP1 and SP2 language pack verbose MSI log - %temp%\dd_NET_Framework*20*LP*.txt
    • .NET Framework 3.0 SP1 and SP2 verbose MSI log - %temp%\dd_net_framework30*.txt
    • .NET Framework 3.0 SP1 and SP2 ServiceModelReg.exe custom action - %temp%\dd_wcf_retCA*.txt
    • .NET Framework 3.0 SP1 and SP2 language pack verbose MSI log - %temp%\dd_NET_Framework*30*LP*.txt

    .NET Framework 3.5 and 3.5 SP1 setup log files

    The following is a complete list of log files that can be produced during .NET Framework 3.5 and 3.5 SP1 setup.  This list may vary depending on what OS you are installing on, what processor architecture, and what prerequisite components were already installed on the system prior to running .NET Framework 3.5 and 3.5 SP1 setup.

    Logs produced by the .NET Framework 3.5 and 3.5 SP1 setup wrapper:

    • %temp%\dd_dotnetfx35install*.txt
    • %temp%\dd_dotnetfx35error*.txt
    • %temp%\dd_depcheck_netfx_*.txt

    Logs produced by the packages chained during .NET Framework 3.5 and 3.5 SP1 setup:

    • RGB Rasterizer - %temp%\dd_RGB9Rast_*.txt
    • MSXML 6.0 - %temp%\dd_msxml6_*.txt
    • WIC - %temp%\dd_wic*.txt
    • .NET Framework 2.0 SP1 and SP2 verbose MSI log - %temp%\dd_net_framework20*.txt
    • .NET Framework 2.0 SP1 and SP2 language pack verbose MSI log - %temp%\dd_NET_Framework*20*LP*.txt
    • .NET Framework 3.0 SP1 and SP2 verbose MSI log - %temp%\dd_net_framework30*.txt
    • .NET Framework 3.0 SP1 and SP2 ServiceModelReg.exe custom action - %temp%\dd_wcf_retCA*.txt
    • .NET Framework 3.5 and 3.5 SP1 verbose MSI log - %temp%\dd_net_framework35*.txt
    • .NET Framework 3.5 and 3.5 SP1 language pack verbose MSI log - %temp%\dd_NET_Framework35_LangPack*.txt

    Setup log files for other .NET Framework products

    I have written separate blog posts about log file locations for other .NET Framework products not listed above.  Here they are for your reference in case you need them:

    <update date="8/24/2008"> Updated list of .NET Framework 3.0 SP1 log files </update>

    <update date="4/13/2009"> Clarified that the list of logs in this post is applicable to 2.0 SP2, 3.0 SP2 and 3.5 SP1 as well. </update>

     

  • Aaron Stebner's WebLog

    Japanese documentation for XNA Game Studio 2.0 now available for download

    • 1 Comments

    Today, the XNA community gaming platform (CGP) team released a Japanese version of the XNA Game Studio 2.0 documentation.  You can download the installer for this documentation from this location.  It can be installed on any system that has Visual C# 2005 Express Edition or Visual Studio 2005 Standard Edition or higher installed.  If you already have XNA Game Studio 2.0 installed on your system, you can install the Japanese documentation side-by-side and access both the English and the Japanese documentation in the help viewer.

    If you read Japanese and would like to view the existing XNA Game Studio 2.0 help documentation in Japanese instead of (or in addition to) English, then I encourage you to download the XNA Game Studio 2.0 Japanese documentation installer and give it a try.

  • Aaron Stebner's WebLog

    A simpler way to silently install Visual Studio 2008 Express Editions (with a caveat)

    • 5 Comments

    Recently, I posted some instructions for creating an installable layout for Visual Studio 2008 Express Editions and silently installing the components that are a part of the Visual Studio 2008 Express Edition setups.

    In addition, there are some new silent installation command line switches introduced in the Visual Studio 2008 product family.  I've heard from some customers asking me why I posted a long, involved set of instructions for silently installing the components for the Express Editions while there is a simple /q switch available for Visual Studio 2008 setup.

    The good news is that since the same setup.exe chainer is used by all Visual Studio 2008 editions, these new silent switches can also be used to install the Visual Studio 2008 Express Editions.  The bad news is that the Express Editions were not officially designed to support silent installations in this manner, and there is a bug that can prevent the silent install from working in some scenarios without applying one of the workarounds listed at the bottom of this post.

    Description of the issue

    The installers for the Express Editions assume that they are being run from a location that they have write permissions to (since the normal UI-based installation scenario starts by copying the setup files to the %temp% folder and re-launching setup from there).  This means that if you create an installable layout for the VS 2008 Express Editions and then copy it to a read-only network and attempt to run setup.exe /q /norestart, setup will fail with a error message related to the setup file vs_setup.ms_.

    Diagnosing the issue

    The log file named %temp%\dd_install_*.txt will have an error message that looks like the following:

    [03/25/08,11:11:58] Microsoft Visual C# 2008 Express Edition - ENU: ***ERRORLOG EVENT*** : ERROR_FILE_NOT_FOUND/ERROR_INSTALL_PACKAGE_OPEN_FAILED returned in CRootComponent::Install for: \\myserver\myshare\Visual C# 2008 Express Edition\VCS\vs_setup.ms_

    Earlier in the log file, you will see the true root cause of this error:

    [03/25/08,11:11:32] Microsoft Visual C# 2008 Express Edition - ENU: CreateProcess launched with cmd line: \\myserver\myshare\Visual C# 2008 Express Edition\vcs\.\.\Ixpvcs.exe "\\myserver\myshare\Visual C# 2008 Express Edition\vcs\.\.\Ixpvcs.exe" /Q /X:"\\myserver\myshare\Visual C# 2008 Express Edition\VCS\"
    [03/25/08,11:11:57] Microsoft Visual C# 2008 Express Edition - ENU: \\myserver\myshare\Visual C# 2008 Express Edition\vcs\.\.\Ixpvcs.exe exited with return value: 5

    These log entries show that setup is attempting to extract the contents of ixpvcs.exe to the network share that setup is being run from, and it fails with return value 5 (which means access is denied, most likely because the network share is read-only).

    How to work around the issue

    Fortunately, there are a few options that can be used when deploying the Visual Studio 2008 Express Editions with the new /q switch in order to work around the above issue:

    1. Extract the contents of the main express edition setup package to the folder on the network share that hosts the setup files for the Visual Studio 2008 Express Editions.

      For example, in the Visual C# 2008 Express Edition, you can do this by running ixpvcs.exe /x and selecting the path to extract the files to.  When using this option, your installable layout as described in this blog post should contain both ixpvcs.exe and the files vs_setup.msi and vs_setup.cab that are inside of ixpvcs.exe in the root folder next to the file setup.exe.
    2. Grant write permissions to the network share that hosts the setup files for the Visual Studio 2008 Express Editions
    3. Copy the setup files for the Visual Studio 2008 Express Edition that you want to install in silent mode to the local computer and run setup from there instead of running setup directly from the read-only network share

    Putting it all together

    Once you use one of the above workarounds, you can install a Visual Studio 2008 Express Edition in silent mode by running the following command line just like you can in Visual Studio 2008 Standard Edition and higher:

    setup.exe /q /norestart

    One note - the previous blog post I wrote about the new silent switches mentioned a /full switch.  This switch is not applicable to the Visual Studio 2008 Express Editions because they do not offer any selectable features that are not installed by default.  So there is no need to use the /full switch during a silent install of a VS 2008 Express Edition.

  • Aaron Stebner's WebLog

    Link to information about new WixGamingExtension in WiX v3.0 for Game Explorer integration

    • 0 Comments

    Bob Arnson posted some information about a new feature in WiX v3.0 that I wanted to link to here as well to hopefully help raise visibility.  In his post, located at http://www.joyofsetup.com/2008/04/22/new-wix-feature-gaming-extension/, he describes a new WiX v3.0 extension called the WixGamingExtension that contains functionality that allows a developer to include functionality in their MSI-based setup to interact with the Windows Vista Game Explorer.

    It supports the following specific features:

    Prior to the introduction of this extension, the above tasks required a developer to create their own custom actions and add them to their MSI to integrate with the Windows Vista Game Explorer during game installation and undo the integration during uninstallation.

    This functionality will be available in an upcoming weekly release of WiX v3.0.  It is not present in the 3.0.4014.0 build, but will be present starting with the next weekly release after that.  There will be a help topic in wix.chm as well (located in WiX Help | Advanced WiX Topics | Standard Custom Actions | WixGamingExtension in the table of contents).

    In the meantime, I encourage you to check out Bob's blog post for more detailed information about the WixGamingExtension.

  • Aaron Stebner's WebLog

    Possible issue where .NET Framework 2.0 SP1 setup can fail and corrupt the .NET Framework 2.0

    • 10 Comments

    Last week, I started getting a larger than normal volume of emails from customers who ran into problems using applications that require the .NET Framework 2.0 and needed advice about how to get their systems back up and running.  After investigating some of these cases and talking to some folks on the .NET Framework technical support team and Heath Stewart, I learned more about what was causing many of these issues.  Heath wrote up an in-depth summary of this issue and posted a tool to help repair systems that get into this state in this post on his blog.  I want to also briefly summarize the issue here and link to his blog in the hopes of making it easier to find in the future.

    Description of the issue

    Most of the customers I had talked to had the original version of the .NET Framework 2.0 on their system and then attempted to install the .NET Framework 2.0 SP1 (either by directly downloading it or by having it offered to them on Windows Update).  However, the .NET Framework 2.0 SP1 setup failed due to an error encountered while uninstalling the original version of the .NET Framework 2.0.  Note - behind the scenes, the .NET Framework 2.0 SP1 attempts to do a major upgrade of the original version of the .NET Framework 2.0.

    Unfortunately, there are some issues in the uninstall rollback logic for the .NET Framework 2.0 that cause assemblies to not be put back into the global assembly cache (GAC) if .NET Framework 2.0 uninstall fails.  That can leave systems in a state where the .NET Framework 2.0 is partially installed and applications that require the .NET Framework 2.0 will not run correctly.  To complicate matters, on a system in this state, the .NET Framework 2.0 cannot be repaired or uninstalled and the .NET Framework 2.0 SP1 cannot be installed.

    How to diagnose the issue

    Systems that encounter this issue will have the following information in the .NET Framework 2.0 SP1 setup wrapper log file (named %temp%\dd_dotNETFX20error.txt):

    [03/25/08,11:11:11] Microsoft .NET Framework 2.0a: [2] Error: Installation failed for component Microsoft .NET Framework 2.0a. MSI returned error code 1603

    Looking deeper, these systems have the following information in the .NET Framework 2.0 SP1 verbose MSI log file (named %temp%\dd_net_framework20*.txt):

    Error 1714.The older version of Microsoft .NET Framework 2.0 Service Pack 1 cannot be removed.  Contact your technical support group.  System Error 1612.

    Windows Installer error 1612 means the following:

    The installation source for this product is not available. Verify that the source exists and that you can access it.

    How to fix a system that encounters the issue

    Once a system encounters this issue, it is necessary to update the Windows Installer information for the .NET Framework 2.0 so it will be put back into a consistent state that will allow you to uninstall the .NET Framework 2.0 and install the .NET Framework 2.0 SP1.

    Heath has created a tool named the Microsoft .NET Framework 2.0 Registration Correction Tool (clwireg.exe) that will attempt to surgically repair incorrect Windows Installer registration information for the .NET Framework 2.0 in order to unblock the uninstall process.  This tool is available for download via a Microsoft knowledge base article (KB951950).  This tool creates a log file named %temp%\dd_clwireg.txt that describes what it is doing to your system in more detail.

    Some folks have also contacted me and indicated that they were able to resolve this issue by using the steps in this blog post.  In my experience, those steps will also work, but they are much more time-consuming and invasive than the .NET Framework 2.0 registration correction tool, so if you run into an issue like this, I strongly encourage you to try that tool before resorting to these steps that I posted.

    Root cause of the issue

    On the systems we have looked at so far, one of the following things had occurred:

    • The Windows Installer registry information for the .NET Framework 2.0 got into an inconsistent state; the system thinks that one or more hotfixes are installed for the .NET Framework, but the information about the source location of the hotfix is missing from the registry
    • The Windows Installer cache (%windir%\Installer) is missing some information about a .NET Framework 2.0 patch that is installed on the system

    We have not yet tracked down exactly why this problem happens with such a high frequency.  I have heard from some customers who have manually deleted files from the %windir%\Installer directory, but that is not very common and does not explain very many instances I've seen of this problem so far.

    We also suspect that some overly aggressive registry and file system cleaner utilities might be causing this on some systems, but we have not yet been able to reproduce that in our test lab.  If you encounter this issue and can track it down to a registry or file system utility, then please post a comment on this blog post indicating the name, version and download location of the utility you saw this behavior from so that we can try to talk to the creator of the utility to make sure that they do not remove critical Windows Installer information from systems in future versions of their tools.

    Final comments

    There are many possible causes for .NET Framework 2.0 SP1 setup failures.  If you are encountering a failure but have different information in your log files, you are likely running into a different problem.  In those cases, I suggest consulting the .NET Framework setup troubleshooting guide for links to other possible installation issues and workarounds, links to log file locations, links to readme files, etc.

    <update date="10/1/2008"> Added a link to the knowledge base article for the .NET Framework registration correction tool </update>

     

  • Aaron Stebner's WebLog

    Mailbag: The February 2008 Media Center Cumulative Update fails to install on Windows Vista SP1

    • 0 Comments

    Question:

    I saw your blog post about the February 2008 Cumulative Update for Media Center for Windows Vista.  I have Windows Vista Ultimate Edition with SP1 installed, and when I try to install this Cumulative Update, it fails.  How can I get this update to install on my Windows Vista SP1 system?

    Answer:

    Windows Vista SP1 is a cumulative service pack, so all previously released hotfix packages for Windows Vista, including the February 2008 Cumulative Update for Media Center for Windows Vista, are already included in Windows Vista SP1.  You do not need to install any separate package in order to get the fixes includes in this cumulative update onto your Windows Vista SP1 system.

    The reason that this cumulative update gives you an error while you are installing is that it is marked to not be applicable on Windows Vista SP1.  You should not see that update offered to you if you visit Windows Update on a Windows Vista SP1 system, but it is still possible to try to download it and run it directly on systems that it does not apply to.

  • Aaron Stebner's WebLog

    How to recover if you try to upgrade an XNA Game Studio 2.0 project in Visual Studio 2008

    • 0 Comments

    XNA Game Studio 2.0 integrates with the Visual C# 2005 Express Edition and Visual Studio 2005 Standard Edition and higher.  It does not support integrating with any of the Visual Studio 2008 family of products.  However, since XNA Game Studio code projects are simply C# projects behind the scenes, it is possible to attempt to open them in the Visual Studio 2008 IDE.  Doing this will cause the Visual Studio Conversion Wizard to appear and attempt to walk you through the process of upgrading the project to the Visual Studio 2008 file format.  If you do this for an XNA Game Studio 2.0 game project, it will cause several problems, and as a result you should not attempt to upgrade XNA Game Studio 2.0 game projects in the Visual Studio 2008 Conversion Wizard.

    The specific problems you will encounter are the following:

    • Since XNA Game Studio 2.0 does not support integrating into the Visual Studio 2008 product family, there will be no project system available to handle the project after conversion completes and the project will fail to load in the VS 2008 IDE.
    • The Visual Studio Conversion Wizard does not upgrade any nested content projects (.contentproj) that are a part of your code project.
    • The Visual Studio Conversion Wizard offers the option to create a backup, but the backup folder does not include the nested content project, which makes it more complicated to revert the project after a failed upgrade attempt.

    If you mistakenly attempt to upgrade your XNA Game Studio 2.0 projects using the Visual Studio 2008 Conversion Wizard, you can use the following steps to recover your project and continue development in Visual Studio 2005 or Visual C# 2005 Express Edition:

    1. Create a new folder that will contain your recovered project.
    2. Go to the backup location created by the Conversion Wizard and copy the contents to the folder created in step 1.  The backup should be located at <directory selected in the Conversion Wizard UI>\backup.
    3. Go to the upgraded project location and copy the Content folder into the code project directory located in a sub-folder of the new directory you created in step 1.  The Content folder should be located at <project directory>\Content for your upgraded project.
    4. On a system that has Visual C# 2005 Express + Visual C# 2005 Express SP1 (and/or VS 2005 + VS 2005 SP1) and XNA Game Studio 2.0 installed, go to the folder you created in step 1 and open the .sln or .vcproj in the Visual Studio 2005 edition and verify it can be opened correctly and built successfully.
  • Aaron Stebner's WebLog

    Links to videos and slides of XNA Game Studio presentations from GDC 2008

    • 0 Comments

    Several of the talks delivered by Microsoft employees at the February 2008 Game Developers Conference in San Francisco have been posted for download on MSDN.  The .zip files available for download include recordings of the talks and the slides that were presented at the talks.

    The following are summaries of the talks and links that can be used to download the presentations delivered by folks on the XNA Community Gaming Platform team (the team that works on the XNA Game Studio product family):

    Networking with the XNA Framework
    Speaker: Shawn Hargreaves

    Playing games by yourself can be fun, but it’s far better when you can play with others, whether cooperatively or head-to-head. Creating multiplayer games using XNA Game Studio, however, requires networking support in the XNA Framework for both Windows and Xbox 360. And that support simply wasn’t there…until now! With the release of XNA Game Studio 2.0, we have augmented the XNA Framework to include support for networked games. Come learn about networking in the XNA Framework, what is supported and what’s not, and how you can enable multiplayer support in your games.

    Understanding XNA Framework Performance
    Speaker: Shawn Hargreaves

    This talk is for programmers who want to understand how the XNA Framework works on Xbox 360, and the implications for writing high-performance code. The talk explains when and why the framework transitions between the Xbox user and supervisor modes, and why should you care. The talk also presents best practices for writing efficient graphics and math code, how to use multiple cores to parallelize your game, and which XNA Framework APIs can be called while doing so. Finally, the talk demonstrates what tools are available for investigating performance on Xbox 360, and how Windows tools can help you understand Xbox 360 performance issues.

    CLR Performance
    Speaker: Frank Savage

    This talk is for those who want to understand the inescapable performance consequences of the managed programming method: the things you cannot avoid and the things you can. Comparing and contrasting the consequences for the .NET Compact Framework and the classic .NET runtime, the talk explains the reasons for these overheads, the benefits they provide, and what practices minimize the associated costs. Additionally, we discuss some commonly occurring costs, such as boxing, that aren’t inherent to all managed code, and we offer some tips for minimizing those costs.

    Extending the Content Pipeline
    Speaker: Frank Savage

    The XNA Framework Content Pipeline allows developers to use Visual Studio to build their art into resources for use with the XNA Framework and XNA Game Studio. This talk covers how to create new importers and processors using C# to extend the functionality of the Content Pipeline as well as how to debug these importers and processors using XNA Game Studio. We go in-depth into the creation of the code for the importers and processors and do hands-on debugging of the resulting processor and importer to give the audience a clear idea of how to work with and extend the Content Pipeline.

    Advanced Debugging with Managed Code
    Speaker: Matthew Picioccio

    XNA Game Studio offers a robust debugging experience that can greatly enhance a developer’s ability to investigate a game as it runs. Developers of managed games have many debugging techniques at their disposal, but not all of them are self-evident. This talk covers advanced debugging techniques useful to game developers, including demonstrations of powerful IDE debugger features and other tools provided by Microsoft.

    XNA Game Studio 2.0 for Xbox LIVE Arcade
    Speaker: Mitch Walker

    One question resounds as more and more developers discover the productivity gains from XNA Game Studio. How do you make money from the games you create? This talk offers a sneak peek into the XNA Arcade Extensions to Game Studio 2.0 along with details of how professional developers can take advantage of XNA Game Studio to produce commercial games.

  • Aaron Stebner's WebLog

    Links to download language packs for the .NET Framework 2.0 SP1, 3.0 SP1 and 3.5

    • 0 Comments

    Yesterday, I wrote a blog post that included a series of links for .NET Framework 3.5 language packs.  There are also standalone language packs for the .NET Framework 2.0 SP1 and the .NET Framework 3.0 SP1, so I wanted to supplement that post with a full set of links for the various language packs that are a part of the .NET Framework 3.5 product family:

    All of the above download pages also now offer an English language choice in the language selection drop down.  There are not English language packs for the .NET Framework because the core packages include English strings.  However, the English option for the language packs can be useful because it allows you to read the text of the download page if you do not understand any of the non-English languages that are available for download.

    Also note that the .NET Framework 3.5 language pack setup packages include the .NET Framework 2.0 SP1 language pack and .NET Framework 3.0 SP1 and install them as prerequisites if they are not already installed on the system.

  • Aaron Stebner's WebLog

    Mailbag: Where are the download locations for .NET Framework 3.5 language packs?

    • 1 Comments

    Question:

    I am working on creating an installable layout for the .NET Framework 3.5 that includes language packs, and I am using the instructions in this previous blog post that you wrote.  However, I have had trouble finding the download locations for the .NET Framework 3.5 language pack setup packages.  Where can I download those from?

    Answer:

    .NET Framework 3.5 language packs are currently available at the following locations for the following languages:

    Each of the links above can be accessed by going to the same base download page on the Microsoft Download Center and passing in the specific culture value as a part of the URL.  For example, the .NET Framework 3.5 French language pack link is the following:

    http://www.microsoft.com/downloads/details.aspx?FamilyID=c78987b9-97f4-455f-bee7-f6bfa4ad774e&displaylang=fr

    You can change the value of the displaylang variable in this URL to one of the values listed next to the language names in the list above in order to create the URL for any of the other versions of the .NET Framework 3.5 language pack.  For example, the value listed next to the Italian language above is "it," so the URL would look like the following:

    http://www.microsoft.com/downloads/details.aspx?FamilyId=C78987B9-97F4-455F-BEE7-F6BFA4AD774E&displaylang=it

  • Aaron Stebner's WebLog

    Link to add-in to simplify cross-platform project synchronization in XNA Game Studio 2.0

    • 0 Comments

    My colleague Stephen Styrchak has written a blog post and published a helpful Visual Studio add-in that I want to link here in the hopes that it will be helpful to XNA Game Studio 2.0 developers.  In the blog post, located at http://badcorporatelogo.spaces.live.com/blog/cns!43EB71B104A2D711!235.entry, Stephen introduces an add-in he created that makes it easier to develop cross-platform games in Visual Studio 2005 using XNA Game Studio 2.0.

    For those of you not familiar with the concept, the XNA Game Studio 2.0 Visual Studio package includes a feature that allows you to convert a Windows game project to an Xbox 360 game project and vice versa.  You can access this feature via an item in the Project menu in the Visual Studio IDE and an item in the context menu that appears when right-clicking on your XNA Game Studio 2.0 project in the Visual Studio Solution Explorer.  More details about what is done behind the scenes when converting games to new platforms can be found in the Cross-Platform Game Project Converter topic on MSDN.

    As noted in that MSDN topic, changes to existing code files that exist in both projects will automatically be reflected when each project is built.  However, files added to a project after conversion will only exist in the project they are added to.

    Stephen's add-in allow syou to more easily synchronize your cross-platform game projects by automating the following actions when they are done after you convert a project to a new platform:

    • Adding a new item to one project will cause the item to be added to all other projects in its cross-platform group.
    • Renaming an item in one project will cause the item to be renamed in all other projects in its cross-platform group.

    I encourage you to take a look at the blog post and this add-in if you are working on cross-platform game projects in XNA Game Studio 2.0.  Keep in mind that Visual C# 2005 Express Edition does not support add-ins, so you will only be able to use this add-in within Visual Studio 2005 Standard Edition or higher.

  • Aaron Stebner's WebLog

    How to automate the install of the .NET Framework 3.0 OS component on Windows Vista and Windows Server 2008

    • 5 Comments

    Windows Vista and Windows Server 2008 include the .NET Framework 2.0 and 3.0 as OS components.  However, it is possible to turn off the .NET Framework 3.0 component on both of these operating systems so it is not available for applications to use.  In addition, the .NET Framework 3.0 is not installed by default on Windows Server 2008.

    How the .NET Framework 3.5 setup.exe handles the .NET Framework 3.0 component

    The .NET Framework 3.5 requires the .NET Framework 3.0 as a prerequisite, and the ability to turn off the .NET Framework 3.0 on Windows Vista and Windows Server 2008 can complicate the steps required to deploy the .NET Framework 3.5 on these operating systems.

    There is logic within the setup.exe wrapper for the .NET Framework 3.5 to add the .NET Framework 3.0 OS component on Windows Vista and Windows Server 2008 if it is not currently present on the system.  This ensures that you cannot install the .NET Framework 3.5 without first satisfying the .NET Framework 3.0 prerequisite when installing using the setup.exe wrapper.

    What happens if you install the .NET Framework 3.5 without 3.0

    However, if you are using the instructions in the .NET Framework 3.5 Administrator Deployment Guide to create an administrative install point and then deploying the .NET Framework 3.5 MSI directly, you will see the .NET Framework 3.5 MSI install successfully even if the .NET Framework 3.0 OS component is not present on the system.  There is a blocking custom action within the MSI that is designed to enforce this prerequisite, but it is incorrectly conditioned to not run on Windows Vista or higher.

    To make matters worse, if you install the .NET Framework 3.5 MSI on a Windows Vista or Windows Server 2008 system that does not have the .NET Framework 3.0 OS component installed, you will likely encounter exceptions while trying to run applications that depend on the .NET Framework (for example - the ServerManagerCmd tool or the MMC snap-in host).  When a system is in this state, you cannot go to the Programs and Features control panel to add the .NET Framework 3.0 OS component because the Windows Features control panel is hosted by the MMC snap-in host.

    If you end up with a system in this state, you will have to run a command line (listed below) to add the .NET Framework 3.0 OS component, or remove the .NET Framework 3.5 using the Programs and Features control panel, add the .NET Framework 3.0 OS component and then re-install the .NET Framework 3.5.

    How to install the .NET Framework 3.0 OS component in a deployment scenario

    For .NET Framework 3.5 deployment scenarios on Windows Vista and Windows Server 2008 that involve installing the 3.5 MSI directly, I recommend that you add logic to your deployment process to check for the existence of the .NET Framework 3.0 OS component, and trigger the install of this OS component if it is not present.  You can use the following registry value to determine whether or not the .NET Framework 3.0 OS component is installed:

    [HKEY_LOCAL_MACHINE\Software\Microsoft\NET Framework Setup\NDP\v3.0\Setup]
    InstallSuccess=1

    If the .NET Framework 3.0 OS component is not installed, the following command line can be used to trigger an install of this component on Windows Vista and Windows Server 2008:

    %windir%\system32\OCSetup.exe NetFx3 /quiet /norestart

    The above registry value is the same one used by the setup.exe wrapper for the .NET Framework 3.5 and the same one used in the sample code for .NET Framework detection that I have previously published (which is based on the official .NET Framework 3.0 deployment guide).  In addition, the above install command line is the same one used by the setup.exe wrapper for the .NET Framework 3.5 to add the .NET Framework 3.0 OS component on Windows Vista and Windows Server 2008 systems that it is not currently installed on.

    A note about ServerManagerCmd

    In addition to the above registry value, there is a tool that ships with Windows Server 2008 named ServerManagerCmd that can be used to query the installed state of OS components such as the .NET Framework 3.0.  Some information about how to use this tool can be found in the Overview of Server Manager Commands topic on TechNet.  When using the -query flag, you will get output like the following snippet on a system that has the .NET Framework 3.0 OS component installed:

    2196: 2008-03-25 11:11:11.111 [ServerManagerCmd]          ----- Features -----
    2196: 2008-03-25 11:11:11.111 [ServerManagerCmd]         
    2196: 2008-03-25 11:11:11.111 [ServerManagerCmd]          [X] .NET Framework 3.0 Features  [NET-Framework]
    2196: 2008-03-25 11:11:11.111 [ServerManagerCmd]              [X] .NET Framework 3.0  [NET-Framework-Core]
    2196: 2008-03-25 11:11:11.111 [ServerManagerCmd]              [ ] XPS Viewer  [NET-XPS-Viewer]
    2196: 2008-03-25 11:11:11.111 [ServerManagerCmd]              [ ] WCF Activation  [NET-Win-CFAC]
    2196: 2008-03-25 11:11:11.111 [ServerManagerCmd]                  [ ] HTTP Activation  [NET-HTTP-Activation]
    2196: 2008-03-25 11:11:11.111 [ServerManagerCmd]                  [ ] Non-HTTP Activation  [NET-Non-HTTP-Activ]

    Note that there are several sub-components listed under the .NET Framework 3.0 feature in this example output.  You do not need the XPS Viewer or WCF Activation features enabled in order to be able to successfully use the .NET Framework 3.0 or install the .NET Framework 3.5.

  • Aaron Stebner's WebLog

    How I resolved Windows Installer error code 2738 on Vista while running light.exe from WiX v3.0

    • 12 Comments

    Recently, while attempting to build a Japanese MSI using WiX v3.0, I received an error message that looked like the following:

    light.exe : error LGHT0217 : An unexpected external UI message was received: ????????????????????????????????????????????????????????????? ???? 2738 ???

    I wanted to see the full text of this error message, so I temporarily changed the product language setting in my WXS file from 1041 (the LCID for Japanese) to 1033 (the LCID for English) and re-ran the build.  When I did that, the error message was more readable:

    light.exe : error LGHT0217 : An unexpected external UI message was received: The installer has encountered an unexpected error installing this package. This may indicate a problem with this package. The error code is 2738.

    This message made more sense to me, so from there, I looked at the Windows Installer Error Messages reference for error code 2738 and found the following:

    Could not access VBScript run time for custom action [2].

    While attempting to narrow down this error further, I found a couple of useful blog posts.  As described in this blog post by Heath Stewart, error code 2738 can occur on Windows Vista systems (like the one I was using in the above scenario) if an MSI contains a script-based custom action and the VBScript runtime is registered in the HKEY_CURRENT_USER hive instead of or in addition to the HKEY_LOCAL_MACHINE hive.  Also, as described in this blog post by Bob Arnson, four of the Windows Installer Internal Consistency Evaluators (ICEs) are implemented in VBScript.  The offending ICEs are ICE08, ICE09, ICE32 and ICE61.

    In my build output, I noticed that light.exe had reported some warnings for ICE03 before displaying this 2738 error.  From this, I made an educated guess that it was probably failing while running one of these four ICEs.  Then, I used some of the advice that I listed in one of my previous blog posts to unregister vbscript.dll and jscript.dll from HKEY_CURRENT_USER to resolve this error:

    1. Click on the Start menu, choose Run, type cmd and click OK
    2. To unregister the VBScript engine, run this command:  reg delete "HKCU\SOFTWARE\Classes\CLSID\{B54F3741-5B07-11CF-A4B0-00AA004A55E8}" /f
    3. To unregister the VBScript engine on a 64-bit OS, run this command:  reg delete "HKCU\SOFTWARE\Classes\Wow6432Node\CLSID\{B54F3741-5B07-11CF-A4B0-00AA004A55E8}" /f
    4. To unregister the JScript engine, run this command: reg delete "HKCU\SOFTWARE\Classes\CLSID\{F414C260-6AC0-11CF-B6D1-00AA00BBBB58}" /f
    5. To unregister the JScript engine on a 64-bit OS, run this command: reg delete "HKCU\SOFTWARE\Classes\Wow6432Node\CLSID\{F414C260-6AC0-11CF-B6D1-00AA00BBBB58}" /f

    Once I did that, my build started working as expected.  I still do not know how this information ended up in HKEY_CURRENT_USER on my system, particularly because the same build worked correctly on the same machine a couple of days ago.  However, I am now back into a state where I can build successfully, and I know of a possible workaround to try if I end up with similar build issues in the future.

    <update date="12/19/2011"> Added steps to unregister the VBScript and JScript engines on 64-bit OS's. </update>

     

Page 1 of 1 (13 items)