C# winform 用Developer Express 開發的軟體 在別人電腦上無法開啟

來源:互聯網
上載者:User

         第一次用Developer Express外掛程式開發軟體, 就被吃了一個閉門羹。 開發出來的winform安裝部屬打包後。軟體在目標電腦上無法開啟,雙擊後只是閃動一下, 就沒有反應了。這裡要提一下目標電腦上以經安裝了(.net framework 3.5)一直折騰了三天,好是崩潰,網上這方面的相關資料又太少了。不過偶然間看到還是有人也有同樣的問題。所了這些相關的論壇,才知道原來是因為dev控制項註冊問題。

所以寫這下貼,以方便後來的朋友不走彎路。當然如果還有更好的方法還希望可以賜教。

下面我先說下我用的環境:Developer Express_11.1.6, vs2008, c# winform開發

軟體在開發的電腦上安裝部署一切正常, 是因為Developer Express所調用的程式集以經加入到GAC。C:\Windows\assembly這個檔案夾下可以看到。 在目標電腦上,因為沒有這三個dll程式集。知道這個道理後,好吧把本機電腦上如果註冊的同樣到目標電腦上去註冊下。

我的電腦上是用這個register.bat DOS批處理,

內容主要就是把破解的Developer Express_11.1.6 的dll加入到全域組件快取。

內容如下

@echo off

gacutil -u DevExpress.Data.v11.1
mkdir %windir%\assembly\GAC_MSIL\DevExpress.Data.v11.1\11.1.6.0__b88d1754d700e49a
copy DevExpress.Data.v11.1.dll %windir%\assembly\GAC_MSIL\DevExpress.Data.v11.1\11.1.6.0__b88d1754d700e49a

gacutil -u DevExpress.Utils.v11.1
mkdir %windir%\assembly\GAC_MSIL\DevExpress.Utils.v11.1\11.1.6.0__b88d1754d700e49a
copy DevExpress.Utils.v11.1.dll %windir%\assembly\GAC_MSIL\DevExpress.Utils.v11.1\11.1.6.0__b88d1754d700e49a

gacutil -u DevExpress.CodeRush.Common
mkdir %windir%\assembly\GAC_MSIL\DevExpress.CodeRush.Common\11.1.6.0__35c9f04b7764aa3d
copy DevExpress.CodeRush.Common.dll %windir%\assembly\GAC_MSIL\DevExpress.CodeRush.Common\11.1.6.0__35c9f04b7764aa3d
REM copy DevExpress.CodeRush.Common.dll "C:\Program Files\DevExpress 2011.1\IDETools\System\DXCore\BIN\DevExpress.CodeRush.Common.dll"
if "[%ProgramFiles(x86)%]" == "[]" (copy DevExpress.CodeRush.Common.dll "%ProgramFiles%\DevExpress 2011.1\IDETools\System\DXCore\BIN\DevExpress.CodeRush.Common.dll") else (copy DevExpress.CodeRush.Common.dll "%ProgramFiles(x86)%\DevExpress 2011.1\IDETools\System\DXCore\BIN\DevExpress.CodeRush.Common.dll")


echo 'OK'
pause

gacutil的用法這裡就不說了, 網上很多資料講的很詳細,這裡主要說我我是如何讓目標電腦在安裝部署後,在全域程式集內找到供調用的程式集。

我先把

把這這幾個

檔案添加到安裝部署裡

建立一個檔案夾“註冊”把這6個檔案添加進去,如。

上面的批處理建立一個捷徑到

的檔案夾裡,這裡我重新命名為“啟用”。

這是方便安裝好後進行註冊的。

然後就可以進行打包發布。

如果目標電腦上沒有.net framework 3.5在打包的時候記得一起打包。如:

好拉,開始發布。

 

好了最後在目標電腦上安裝,安裝完成後在“開始 –> 程式 ->軟體->啟用”運行一次。

好拉,再去點下軟體, 看看是不是以經可以用了。

 

嘿嘿,最後 我還是感覺這總方法不是很好,要手動點下才行。

 

後來我又對全域程式集進行了一定的瞭解。總結出來方法2。

方法2:

 這裡還是要提到上文中的dos批處理,它的主要內容就是把dll引入到全域程式集中,這們多個軟體在啟動並執行時候就可以共同調用這個dll。而我在做開發的時候就是軟體就以經被指向這個全域組件快取內的dev控制項dll。當然在發布以後目標電腦上因為沒有dev的dll檔案,也就無法開啟。 所以在做開發的時候只要不去引用全域程式集內的dll就可以解決這個問題。(這裡我要感謝一樓的前輩,這是他提出的方案)

好了我下面說一下方法:

先找到dev控制引用的檔案路徑C:\Program Files\DevExpress 2011.1\Components\Sources\DevExpress.DLL(我是預設安裝)

把這個檔案複製到專案檔裡,取名為"dll庫檔案"

然後在“解決方案”項目點屬性->引用 如:

 

把"dll庫檔案"檔案夾添加到裡面。

好了點F6編譯一下, 再看一下引用中的屬性,dev控制引用是不是以經被指向了這個檔案夾。

原部屬裡的dll(程式集)還是指向原先的路徑。好了,按下面的方法就可以解決。

好了把原部署裡的 項目主輸出 刪除,這樣他所有的引用也都跟著消失了。 再把項目主輸出添加進去。看一下自己載入的程式集是不是指向了"dll庫檔案"。

好了,到這裡以經差不多了。

最後發布吧~

在沒有dev控制的 目標電腦上運行。

 

我在目標電腦上測試, 這樣確實可以運行了。 不過又會彈出一個對話方塊 如:

這是因為沒有引用 破解的dll(程式集)造成的。

我就把破解的dll複製到"dll庫檔案"從新執行方法2,可是在目標電腦上確又無法開啟。  也不知道有什麼更好的解決辦法。

我想如果不介意彈出這個對話方塊可以採用方法2。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.