不,對ClickOnce和先決條件存在很多混淆。
ClickOnce does nothing with prereqs。沒有。 ClickOnce將文件從服務器複製到客戶機,並在服務器文件更新時保持這些文件同步 - 就是這樣。它不能將東西放入GAC,註冊dll,安裝msi文件等。
出現混淆的地方是使用Visual Studio進行部署時。當你發佈的時候,VS會爲你做幾件事情,這與ClickOnce無關。首先,它爲您創建一個很好的html頁面,並提供一些指向您的部署的鏈接。此外,它可以讓你從幾個先決條件中挑選,併爲你創建一個引導程序exe。我假設你爲Crystal Reports安裝做了這個。引導程序只是管理多個前提條件的簡單方法。而不是告訴你的用戶在安裝你的應用程序之前安裝X,然後是Y,然後是Z,引導程序使這三個安裝「無縫」,因此它們看起來好像是一個大的安裝。如果用戶已經擁有它,它也可以跳過prereq安裝。
如果你關注VS生成的html頁面,你可以看到兩個鏈接。一個給你的.application文件(ClickOnce部署),另一個給引導程序exe。你幾乎處於用戶的擺佈之中,必須依靠他們來閱讀頁面並在需要時運行引導程序。一個例外就是.Net框架,因爲html頁面可以通過UserAgent字符串來檢查。
如果他們不要運行引導程序,他們會得到很像你所問的錯誤。
一個可能的解決方案是編寫代碼來檢查它是否安裝。它可以檢查註冊表或「Program Files」文件夾;無論您需要做什麼來確保安裝。然後優雅地退出並通知用戶他們是否沒有它。只要您在嘗試加載和使用Crystal程序集之前進行檢查,就會有效。
祝你好運!如果您想出更好的解決方案,請回復。
您是否將Crystal Reports作爲ClickOnce發佈設置中的先決條件的一部分? – 2009-06-09 19:42:43