﻿# VS2008 SP1 如何設定讓 .NET 3.5 SP1 內嵌於 Setup 專案內

這兩天都在弄一個 Windows Setup 專案，希望弄得盡善盡美，直到剛剛終於大功告成，但當我想將 .Net Framework 3.5 SP1 的**安裝檔**也加入到我的 Setup 專案時（如下圖），卻發現專案無法編譯。

![Visual Studio 2008 SP1 : Prerequisites](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/eeef3f803aebc0e5211c-image_3.png "Visual Studio 2008 SP1 : Prerequisites")

錯誤訊息如下：

> The install location for prerequisites has not been set to 'component vendor's web site' and the file 'DotNetFX35SP1\\dotNetMSP\\x86\\NetFX3.0-KB936705-v6000-x86\_RTM\_en.msu' in item '.NET Framework 3.5 SP1' can not be located on disk. See Help for more information.

解決的方式如下：

1.  先取得 [.NET Framework 3.5 Service Pack 1 (Full Package)](http://download.microsoft.com/download/2/0/e/20e90413-712f-438c-988e-fdaa79a8ac3d/dotnetfx35.exe)  ( 231 MB )
2.  再根據 [Visual Studio 2008 SP1 readme](http://download.microsoft.com/download/A/2/8/A2807F78-C861-4B66-9B31-9205C3F22252/VS2008SP1Readme.htm#General%20Issues) 的 **2.3.1. General Issues** 章節進行修正即可!

由於中文版的 [Visual Studio 2008 SP1 讀我檔案](http://download.microsoft.com/download/6/2/d/62d895ae-d4fa-4df7-87a0-3a447d1c6a46/MSDNlibvs2008sp1Readme.htm) 文件品質有問題，照著做很容易做錯，因此修正的流程補充說明如下：

1.  先找到 \[Program Files\]\\Microsoft SDKs\\Windows\\v6.0A\\Bootstrapper\\Packages\\DotNetFX35SP1 目錄，若是 x64 架構 \[Program Files\] 請替換成 C:\\ProgramFiles(x86)
2.  用「記事本」開啟該目錄下的 **Product.xml** 文件
3.  將以下片段插入到 <PackageFiles CopyAllPackageFiles="IfNotHomeSite"> 這行下方：

```
        <PackageFile Name="TOOLS\clwireg.exe" />
```

```
        <PackageFile Name="TOOLS\clwireg_x64.exe" />
```

```
        <PackageFile Name="TOOLS\clwireg_ia64.exe" />
```

5.  找到 <PackageFile Name="dotNetFX30\\XPSEPSC-x86-en-US.exe" 這行與 <PackageFile Name="dotNetFX30\\XPSEPSC-amd64-en-US.exe" 這行，並將這兩行的 PublicKey 原本的值改成以下的值 ( 請注意複製的時候不要複製到空白字元 )：  
    3082010A0282010100A2DB0A8DCFC2C1499BCDAA3A34AD23596BDB6CBE2122B794C8EAAEBFC6D526C232118BBCDA5D2CFB36561E152BAE8F0DDD14A36E284C7F163F41AC8D40B146880DD98194AD9706D05744765CEAF1FC0EE27F74A333CB74E5EFE361A17E03B745FFD53E12D5B0CA5E0DD07BF2B7130DFC606A2885758CB7ADBC85E817B490BEF516B6625DED11DF3AEE215B8BAF8073C345E3958977609BE7AD77C1378D33142F13DB62C9AE1AA94F9867ADD420393071E08D6746E2C61CF40D5074412FE805246A216B49B092C4B239C742A56D5C184AAB8FD78E833E780A47D8A4B28423C3E2F27B66B14A74BD26414B9C6114604E30C882F3D00B707CEE554D77D2085576810203010001
6.  將 **Product.xml** 存檔。
7.  將已下載的 [.NET Framework 3.5 Service Pack 1 (Full Package)](http://download.microsoft.com/download/2/0/e/20e90413-712f-438c-988e-fdaa79a8ac3d/dotnetfx35.exe) 解壓縮到任意暫存目錄，解壓縮的方法必須透過指令執行。
    
    ```
    dotNetFx35.exe /x:.
    ```
    
8.  解壓縮後，該目錄會多出一個 WCU 目錄，在裡面又會有一個 dotNetFramework 目錄，請將 WCU\\dotNetFramework 目錄下所有的目錄與檔案都移至 **\[Program Files\]\\Microsoft SDKs\\Windows\\v6.0A\\Bootstrapper\\Packages\\DotNetFX35SP1** 目錄下。  
    完成後的圖示如下：  
     ![解壓縮後，該目錄會多出一個 WCU 目錄，在裡面又會有一個 dotNetFramework 目錄，請將 WCU\\dotNetFramework 目錄下所有的目錄與檔案都移至 \[Program Files\]\\Microsoft SDKs\\Windows\\v6.0A\\Bootstrapper\\Packages\\DotNetFX35SP1 目錄下](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/a2f7acae74ced89a6ff4-image_8.png "解壓縮後，該目錄會多出一個 WCU 目錄，在裡面又會有一個 dotNetFramework 目錄，請將 WCU\dotNetFramework 目錄下所有的目錄與檔案都移至 [Program Files]\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages\DotNetFX35SP1 目錄下")
9.  如上圖標紅框的部分是 **語言包**(**Language Pack**) 的部分，各位在 [Visual Studio 2008 SP1 讀我檔案](http://download.microsoft.com/download/C/3/A/C3A7E734-1D39-4EC4-AB2E-932F42F33ADA/VS2008SP1Readme.htm) 的 [2.3.1. 一般??](http://download.microsoft.com/download/C/3/A/C3A7E734-1D39-4EC4-AB2E-932F42F33ADA/VS2008SP1Readme.htm#General%20Issues) 章節裡也可以下載的到，照著目錄放置下載後的檔案即可。  
      
    以下列出所有語言包的下載連結：
    
    | **語系** | **架構** | **下載連結** | **檔案放置目錄(相對路徑)** |
    | --- | --- | --- | --- |
    | **Chinese  <br>(Simplified)** | x86 | [http://go.microsoft.com/fwlink?LinkID=118146](http://go.microsoft.com/fwlink?LinkID=118146) | zh\-CHS\\DotNetFX35\\x86 |
    | x64 | [http://go.microsoft.com/fwlink?LinkID=118151](http://go.microsoft.com/fwlink?LinkID=118151) | zh\-CHS\\DotNetFX35\\x64 |
    | **Chinese  <br>(Traditional)** | x86 | [http://go.microsoft.com/fwlink?LinkID=118087](http://go.microsoft.com/fwlink?LinkID=118087) | zh\-CHT\\DotNetFX35\\x86 |
    | x64 | [https://dotnet.microsoft.com/en-us/download/dotnet-framework](https://dotnet.microsoft.com/en-us/download/dotnet-framework) | zh\-CHT\\DotNetFX35\\x64 |
    | **English** | x86 | *N/A* | *N/A* |
    | x64 | *N/A* | *N/A* |
    | **French** | x86 | [http://go.microsoft.com/fwlink?LinkID=118148](http://go.microsoft.com/fwlink?LinkID=118148) | fr\\DotNetFX35\\x86 |
    | x64 | [http://go.microsoft.com/fwlink?LinkID=118153](http://go.microsoft.com/fwlink?LinkID=118153) | fr\\DotNetFX35\\x64 |
    | **German** | x86 | [http://go.microsoft.com/fwlink?LinkID=118149](http://go.microsoft.com/fwlink?LinkID=118149) | de\\DotNetFX35\\x86 |
    | x64 | [http://go.microsoft.com/fwlink?LinkID=118154](http://go.microsoft.com/fwlink?LinkID=118154) | de\\DotNetFX35\\x64 |
    | **Italian** | x86 | [http://go.microsoft.com/fwlink?LinkID=118097](http://go.microsoft.com/fwlink?LinkID=118097) | it\\DotNetFX35\\x86 |
    | x64 | [http://go.microsoft.com/fwlink?LinkID=118115](http://go.microsoft.com/fwlink?LinkID=118115) | it\\DotNetFX35\\x64 |
    | **Japanese** | x86 | [http://go.microsoft.com/fwlink?LinkID=118096](http://go.microsoft.com/fwlink?LinkID=118096) | ja\\DotNetFX35\\x86 |
    | x64 | [http://go.microsoft.com/fwlink?LinkID=118114](http://go.microsoft.com/fwlink?LinkID=118114) | ja\\DotNetFX35\\x64 |
    | **Korean** | x86 | [http://go.microsoft.com/fwlink?LinkID=118147](http://go.microsoft.com/fwlink?LinkID=118147) | ko\\DotNetFX35\\x86 |
    | x64 | [http://go.microsoft.com/fwlink?LinkID=118152](http://go.microsoft.com/fwlink?LinkID=118152) | ko\\DotNetFX35\\x64 |
    | **Portuguese  <br>– Brazil** | x86 | [http://go.microsoft.com/fwlink?LinkID=118092](http://go.microsoft.com/fwlink?LinkID=118092) | pt-BR\\DotNetFX35\\x86 |
    | x64 | [http://go.microsoft.com/fwlink?LinkID=118110](http://go.microsoft.com/fwlink?LinkID=118110) | pt-BR\\DotNetFX35\\x64 |
    | **Russian** | x86 | [http://go.microsoft.com/fwlink?LinkID=118090](http://go.microsoft.com/fwlink?LinkID=118090) | ru\\DotNetFX35\\x86 |
    | x64 | [http://go.microsoft.com/fwlink?LinkID=118108](http://go.microsoft.com/fwlink?LinkID=118108) | ru\\DotNetFX35\\x64 |
    | **Spanish** | x86 | [http://go.microsoft.com/fwlink?LinkID=118101](http://go.microsoft.com/fwlink?LinkID=118101) | es\\DotNetFX35\\x86 |
    | x64 | [http://go.microsoft.com/fwlink?LinkID=118119](http://go.microsoft.com/fwlink?LinkID=118119) | es\\DotNetFX35\\x64 |
    
      
    以 **Chinese (Traditional)** 為例，檔案下載後的目錄結構會變成以下這樣：  
    ![C:\\Program Files (x86)\\Microsoft SDKs\\Windows\\v6.0A\\Bootstrapper\\Packages\\DotNetFX35SP1\\zh-CHT\\DotNetFX35\\x86](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/f8a027d9e2acb51621f7-image.png "C:\Program Files (x86)\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages\DotNetFX35SP1\zh-CHT\DotNetFX35\x86")
    

table.download,table.download td{ font-size: 95%; text-align: left; }

**相關連結**

-   Additional Bootstrapper Packages to Redistribute Components Using Visual Studio Setup Projects and Clickonce Applications
