none
以 ClickOnce 封裝的 Win Form 程式發生啟動問題 RRS feed

  • 問題

  • Dear all

    小弟在某部主機上執行內部開發的程式時發生應用程式錯誤,
    這一支程式是以 ClickOnce 來包裝,
    使用者要啟動程式都是去執行 ClickOnce 的安裝程式,
    以便讓安裝程式檢查是否有更新版本,

    先前運作情形良好,
    但是前天開始不知道怎麼回事,
    執行的時候開始出現「無法啟動程式,請聯絡應用程式廠商」,
    詳細訊息如文末所述,
    而且程式如果使用「新增/移除程式」無法被移除,
    使用一些強制移除的工具將程式移除之後,
    重新執行安裝程式還是出現無法啟動程式,
    奇怪的是,如果用另外一個帳號登入到作業系統還是可以正常執行,

    到網路上查詢都是找到一些和視訊裝置相關的資訊,
    請問有先進知道這是怎麼一回事嗎?


    '--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    平台版本資訊
        Windows             : 5.0.2195.262144 (Win32NT)
        Common Language Runtime     : 2.0.50727.235
        System.Deployment.dll         : 2.0.50727.42 (RTM.050727-4200)
        mscorwks.dll             : 2.0.50727.235 (QFE.050727-2300)
        dfdll.dll             : 2.0.50727.42 (RTM.050727-4200)
        dfshim.dll             : 2.0.50727.42 (RTM.050727-4200)

    來源
        部署 URL            : file:///D:/WELLCO~1/DAYEND~1/DAYEND~1.APP

    錯誤摘要
        下列為錯誤的摘要,這些錯誤的詳細資料稍後會列於記錄檔中。
        * 啟動 D:\WELLCO~1\DAYEND~1\DAYEND~1.APP 時發生例外狀況。 已偵測到下列失敗訊息:
            + 附加到系統的某個裝置失去作用。 (發生例外狀況於 HRESULT: 0x8007001F)

    元件存放區交易失敗摘要
        未偵測到交易錯誤。

    警告
        執行此作業時沒有警告。

    作業進度狀態
        * [2008/12/30 上午 10:35:19] : 已開始啟動 D:\WELLCO~1\DAYEND~1\DAYEND~1.APP。

    錯誤詳細資料
        執行此作業時,偵測到下列錯誤。
        * [2008/12/30 上午 10:35:20] System.Runtime.InteropServices.COMException
            - 附加到系統的某個裝置失去作用。 (發生例外狀況於 HRESULT: 0x8007001F)
            - 來源: System.Deployment
            - 堆疊追蹤:
                於 System.Deployment.Internal.Isolation.IStore.GetAssemblyInformation(UInt32 Flags, IDefinitionIdentity DefinitionIdentity, Guid& riid)
                於 System.Deployment.Internal.Isolation.Store.GetAssemblyManifest(UInt32 Flags, IDefinitionIdentity DefinitionIdentity)
                於 System.Deployment.Application.ComponentStore.GetSubscriptionStateInternal(DefinitionIdentity subId)
                於 System.Deployment.Application.SubscriptionStore.GetSubscriptionStateInternal(SubscriptionState subState)
                於 System.Deployment.Application.SubscriptionStore.CheckAndReferenceApplication(SubscriptionState subState, DefinitionAppId appId, Int64 transactionId)
                於 System.Deployment.Application.DownloadManager.DownloadDeploymentManifestDirectBypass(SubscriptionStore subStore, Uri& sourceUri, TempFile& tempFile, SubscriptionState& subState, IDownloadNotification notification, DownloadOptions options, ServerInformation& serverInformation)
                於 System.Deployment.Application.DownloadManager.DownloadDeploymentManifestBypass(SubscriptionStore subStore, Uri& sourceUri, TempFile& tempFile, SubscriptionState& subState, IDownloadNotification notification, DownloadOptions options)
                於 System.Deployment.Application.ApplicationActivator.PerformDeploymentActivation(Uri activationUri, Boolean isShortcut)
                於 System.Deployment.Application.ApplicationActivator.ActivateDeploymentWorker(Object state)

    元件存放區交易詳細資料
        無可用的交易資訊。



    2008年12月30日 上午 03:21

解答

  • HI,

     

    如果換帳就可以執行, 有可能是權限的問題, 請問用來執行的兩個帳號都是administrator嗎?

     

    tihs

    2008年12月31日 上午 09:00

所有回覆

  • HI,

     

    從錯誤訊息來看, 您的程式好像有呼叫Win32 API或是ActiveX元件的功能, 而您的程式在啟動時因為無法叫用該功能而發生錯誤, 所以您可以想想看原來可以正常執行該程式的電腦是否有做過什麼動作? 比較容易找到問題所在

     

    tihs

    2008年12月30日 上午 06:37
  • Dear tihs

    因為是使用者回報發生這樣的問題,
    但是他已經忘了在發生問題前他曾經做過什麼樣的動作,
    而且在同一部電腦切換成另一個帳號就又能夠執行,
    真的有點難找到問題點。


    2008年12月31日 上午 06:27
  • HI,

     

    如果換帳就可以執行, 有可能是權限的問題, 請問用來執行的兩個帳號都是administrator嗎?

     

    tihs

    2008年12月31日 上午 09:00