none
請問如何將.NET Framework 2.0 SP2 hotfix包在安裝檔內? RRS feed

  • 一般討論

  • 大家好:

     我安裝了 Microsoft .NET Framework 2.0 SP2 與 3.0 SP2 啟動載入器套件後,
     再將 Publish->Prerequisites 中的 .NET Framework 2.0 SP2 勾選起來,
     安裝程式在部署的時候就會檢查部署環境是否有安裝 2.0 SP2 並自動帶出安裝畫面;

     但這個版本只包含 KB958481 的 hotfix,
     我想將 KB974417 的安全性更新包在安裝檔裡,請問該如何下手呢?
    2010年7月7日 上午 11:28

所有回覆

  • 試著把它copy到bootstrapper\packages資料夾下的.net framework 2.0啟動載入器套件同一個目錄下試試
    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    2010年7月7日 下午 04:40
    版主
  • It did't work. :(

     

    不過我測試了一下,

    hotfix 或是 security update 不像 .NET Framework 的安裝檔,

    會檢查電腦本身是否已經有安裝而終止安裝;

    每次執行都會告訴你”此軟體更新會影響下列產品:

    Microsoft .NET Framework 2.0 Service Pack 2”,

    選 okay 就開始進行安裝動作(應該就是一些檔案 update 的動作吧?!)

     

    所以,連微軟寫 hotfix/security update 也沒有做類似的 check,

    是不是意味著,我們就得自己想個機制去檢查了呢?

     

    於是我搜尋了一下 registry,發現跟我想檢查的 KB974417 相關資訊似乎放在這:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Updates\Microsoft .NET Framework 2.0 Service Pack 2\SP2\KB974417

     

    因此目前我想到的解法,就是程式自行參考 registry 的資訊,提醒使用者安裝 KB974417,

    但不確定這樣的檢查方式一定正確就是...

     

    各位夥伴有其他的 idea 嗎?

     


    2010年7月8日 上午 12:54
  •  

    於您的[安裝程式類別]中的

    public override void Install(IDictionary savedState)
    {

         testInstallKB974417 (string setUpPath);

    }中

           private void testInstallKB974417 (string setUpPath)
            {
                bool isKB974417 = false;
                RegistryKey hkcr = Registry.ClassesRoot.OpenSubKey("CLSID", true);
                                if (subKeyName == "

    於下列中加入你的HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Updates\Microsoft .NET Framework 2.0 Service Pack 2\SP2\KB974417 檢查機制

    ")
                    {
                        isKB974417= true;
                    }
                }
                if (!isKB974417 )
                {
                    string apppath1 = setUpPath + @"\" + "KB974417 .exe";
                    Process p1 = new Process();
                    p1.EnableRaisingEvents = false;
                    p1.StartInfo.FileName = apppath1;
                    p1.Start();
                    p1.WaitForExit();
                }
            }

     與你說的機制相同。我也想知道是否有其它做法

    • 已編輯 陳奕昌 2010年7月23日 上午 04:58 打錯了
    2010年7月23日 上午 04:58