ClickOnce 發佈,在系統必備中勾選了 .NET Framework 3.5 SP1,並選擇了"從與我的應用程序相同的位置下載系統必備組件"時,執行發佈,會提示缺少很多文件,答案就在下面。
首先我們需要 framework 3.5_SP1 安裝包,可以到下面的地址下載
http://download.microsoft.com/download/2/0/e/20e90413-712f-438c-988e-fdaa79a8ac3d/dotnetfx35.exe
把它解壓,導航到 framework 3.5_SP1/wcu/dotNetFramework/ 文件夾,將其中的 dotNetFX20、dotNetFX30、dotNetFX35、dotNetMSP 文件夾和文件 dotNetFx35setup.exe 複製到 %ProgramFiles%/Microsoft SDKs/Windows/v7.0A/Bootstrapper/Packages/DotNetFX35SP1 目錄中,對於 x64 操作系統,該路徑位於 %ProgramFiles(x86)% 下。
這時執行發佈,會提示如下錯誤:
系統必備組件的安裝位置未設置爲“組件供應商的網站”,並且無法在磁盤上找到項“.NET Framework 3.5 SP1”中的文件“DotNetFX35SP1/DotNetFX35/x64/dotnetfx35langpack_x64zh-CHS.exe”。有關詳細信息,請參見幫助。
按照提示,我們去下載需要的文件,地址如下:
這裏我們只需要下載 dotnetfx35langpack_x64zh-CHS.exe 和 dotnetfx35langpack_x86zh-CHS.exe 即可,因爲發佈只提示缺少這兩個文件。
=======如果你急着發佈,這段可以忽略=======
下載完成後,將他們放到 %ProgramFiles%/Microsoft SDKs/Windows/v7.0A/Bootstrapper/Packages/DotNetFX35SP1/DotNetFX35/ 目錄對應的文件夾內,dotnetfx35langpack_x64zh-CHS.exe 放 x64,dotnetfx35langpack_x86zh-CHS.exe 放 x86。
以爲一切正常了,執行發佈,仍然報錯,這是怎麼回事兒?Google了半天,在這個帖子(http://blog.csdn.net/hhxshhxs88/archive/2009/07/25/4379621.aspx)裏找到了解決辦法,下面是具體操作,與此帖不同的是,我沒有創建 zh-chs 文件夾。
==========================================
導航到 %ProgramFiles%/Microsoft SDKs/Windows/v7.0A/Bootstrapper/Packages/DotNetFX35SP1/zh-Hans 目錄,新建一個文件夾,命名爲 dotNetFX35,在 dotNetFX35 文件夾內建立兩個子文件夾,分別命名爲 x86 和 x64,然後把剛纔下載的文件拷到相應的子目錄中。
再去發佈,這回應該沒有錯誤了。
********以下內容僅供吹毛求疵者參考********
但是還有兩個警告,類似如下的提示:
“.NET Framework 3.5 SP1”中“PublicKey”特性的值與文件“C:/Program Files/Microsoft SDKs/Windows/v7.0A/Bootstrapper/Packages/DotNetFX35SP1/dotNetFX30/XPSEPSC-x86-en-US.exe”的該特性值不匹配。
這是因爲 XPSEPSC-x86-en-US.exe 的 publicKey 與 %ProgramFiles%/Microsoft SDKs/Windows/v7.0A/Bootstrapper/Packages/DotNetFX35SP1/product.xml 文件中標記的 publicKey 不同造成的。要想消除警告,我們需要手工幫它匹配上。
首先,定位到錯誤提示的文件,然後右鍵→屬性→數字簽名,如圖所示:
在“簽名列表”中選擇簽名,然後點“詳細信息”,彈出窗口如圖所示:
在窗口中點“查看證書”,在彈出窗口中選擇“詳細信息”卡片,在下面的列表中選中“公鑰”,如圖所示:
然後把公鑰對應的編碼拷貝到記事本,將其中的空格替換掉。最後,我們打開 product.xml 文件,查找 XPSEPSC-x86-en-US.exe,將其對應的 publicKey 替換成剛纔處理好的字符串就 OK 了。
*****************************************
另附
當選擇".NET Framework 3.5 SP1 Client Profile"系統必備,發佈時會提示找不到 DotNetFx35ClientSetup.exe,大家可以通過下面的地址下載,然後拷貝到 %ProgramFiles%/Microsoft SDKs/Windows/v7.0A/Bootstrapper/Packages/DotNetFx35Client 目錄即可成功發佈。
注意:DotNetFx35ClientSetup.exe 是 Client Profile 基於 Web 的安裝程序,需要通過 Internet 連接下載和安裝。