none
[VB6][問題]VB6在XP編譯後,在別台XP上卻無法執行,需設定相容模式問題....... RRS feed

  • 問題

  • 這個問題困擾我許久,一直找不出原因,情況如下:

    用VB6在XP SP2上開發程式,未用任何特殊控制項,只用基礎控制項,編譯成EXE後,拿到別台機器上(一樣XP SP2,但未灌任何開發工具)執行,畫面卻沒出現,也未有任何錯誤訊息發生,多按幾次都一樣。
    後來發現,把EXE檔按右鍵,裡面的相容模式調成Win 2ooo相容,程式才能正常執行並出現畫面,實在是很詭異。
    在XP進行編譯,本機執行沒問題,拿到別台XP卻需要調成Win 2ooo相容,但也不是每台都要調整喔,真的是很怪,不曉得有沒有人遇過此問題,有解決方法的,這個問題實在很難理解與推論,所以在此提問,希望有人幫忙解惑,謝謝!

    因為需要,程式必須單純,不能註冊任何DLL與OCX,僅能以綠色軟體的方式(無須安裝)發佈程式,所以才沒用任何的特殊控制項,想不到最簡單的方式設計卻會遇到此問題,真是百思不得其解。


    2007年2月11日 下午 02:58

解答

  • 問題已發現並解決!

    問題出在於XXX.exe.manifest參數檔。

    當初為了讓VB6寫出的程式能套用XP的VISUAL STYLE風格按鈕與樣式,而在與執行檔的同目錄下放了[執行檔主檔名].exe.manifest檔,只要把這個檔刪除,執行檔就可以正常使用了,至於這個檔為何會有影響就不得而知了。

    所以,若用VB6寫個簡單的程式,只用基礎控制項,編譯成EXE後,在XP SP2之後板本的 WINDOWS 下執行應該是沒問題的。

    也謝謝璉璉兄的指導與資訊的提供,您在VB界裡,算是TOP的高手,也已久仰大名許久了。

     

    2007年3月9日 上午 03:58

所有回覆

  • 你對對看開發電腦與不能跑的電腦

    C:\WINDOWS\system32\msvbvm60.dll

    版號是否一致

    2007年2月11日 下午 03:31
    版主
  • 把DLL版本更新到 6.0.97.82,重新編譯後還是不行,真不知道是啥原因?難道只是寫個簡單程式,還要包成安裝檔嗎?不不知有無其他解決方法??

     

    2007年3月1日 上午 05:34
  • VB6 設計上本來就不是做為環保軟體使用。

    要拿 VB6 設計環保軟體,會有很多限制及規則,最簡單的就是開發電腦版本越舊越好,因為新版都可以前向相容,開發電腦則可以版本比較舊。

    早期 (2001 ? ) 國外有討論到免安裝的完整作法,在國內 VBQA 討論區有針對繁中套件加以補充。

    2007年3月1日 上午 08:49
    版主
  • 之所以會這樣去設計,是因為想說既然XP與後來版本的INDOWS都已經會有VBRUNTIME物件,則只要不用到特別的控制項,只用基礎控制項,應該就可以一個執行檔走天下,直接EXE檔進行發佈,而不需要進行安裝,來達到APPLICATION PORTABLE的樣子。

    這樣不知正不正確?

    當然,有人會說,用VB 2005開發,然後裝.NET Framework,EXE就可以到處用,是的,是可以,但是就不算是綠色軟體了。

    寫個EXE才不到100K,卻要帶個幾十MB的Framework,不曉得對軟體發展是助益還是阻礙?這樣的情形JAVA也是相同,沒有批評的意思,只是單就APPLICATION PORTABLE的角度來想。

    試想,寫一個好用程式免費讓大家使用,功能簡易好用與單純,卻要下載者載了好幾十MB的安裝程式,安裝後才能用,這大概會讓許多下載著怯步,一個好軟體反而不容易被接受了,而且最近木馬程式猖獗,安裝程式已經不被信任的情況慢慢在擴大,因為大多使用者都在不知情的情形下被註冊元件、更改註冊檔等等,就是因為這原因,清理註冊檔工具、反安裝協助軟體才一堆出現。

    最近找到一套程式,叫realBasic,語法與BASIC相同,但編譯出來的最小EXE大約是3MB左右,但是EXE執行卻不用依賴與註冊任何元件,一樣可以運行於多平台上。

    就是因為這樣,才想到若是用VB就能寫出綠色軟體在XP與2003甚至VISTA上跑,一定會大大促進使用者去使用的意願。

    若是各位有任何相關達到上述的文章資源,煩請不吝分享一下,也好讓在下研究出心得後在此分享,謝謝。

     

    2007年3月1日 上午 11:05
  • 你的問題歸納成一句回答,就是俗稱的 DLL HELL (DLL 地獄)


    所以前面才會說開發環境盡量越舊越好,事實上應該說成編譯環境越舊越好,你可以在新版的環境下開發,散佈前的最終編譯,移到舊環境去編譯,這樣就可以盡量減少 DLL Hell 。

    .Net framework 算不算綠色軟體?這看定義的方式,一般的定義,他是。比如說需要 Java VM 的軟體,大部分人也當成是綠色軟體,不會因為需要 Java Runtime 而認為不是,而 .Net framework 更接近綠色軟體,因為微軟把 .Net framework 視為作業系統的一部份,若你的作業系統缺少 .Net framework ,可以視為作業系統不完整,所以 WinXP SP2/Win2003 SP1 均內含 .Net framework 1.1,Vista 及所有的 Win64 均內含 .Net framework 2.0,而使用到作業系統的功能,又怎能說不是綠色軟體?若這樣歸類,那使用 Windows API 的到底算不算是綠色軟體?所有在 Windows 上執行的軟體,最終都還是要呼叫 Windows API ,所以也算是綁在 Windows 上,你要執行這套軟體前,必須先安裝 Windows ... 而每套 Windows 都有 VB runtime 程式庫那也是 Win2k 以後的事,你可以因此視 VB6 可以寫綠色軟體,為什麼相同的觀念要排除 .Net ?以前微軟也有提供 VB6 控制項完整安裝的套件,大概也是 2x MB ,就我來看,跟現在 .Net 也沒啥不同。

    而且綠色軟體除了免安裝外,還包含減少不要的空間浪費與資源浪費,一個龐大的執行檔,是空間的浪費,載入記憶體後,是空間與能源的浪費,並不是免安裝就完全符合綠色軟體,而是有效減少資源與能源的浪費,才能稱為綠色軟體。

    RealBasic 跟其它編譯器類似,提供了一個純執行檔的編譯方式,可把程式庫靜態編譯到執行檔內,但最終仍然還是要呼叫 API ,但是既然採用靜態編譯,好處是不用擔心 DLL Hell ,但壞處也隨之產生,若是某個微軟公佈的函式庫有漏洞,動態連結程式庫可以因系統更新而讓所有的程式都受益,靜態程式庫則漏洞仍在。

    一個 VC 寫的 Hello World 的執行檔,若純用 Windows API 編譯,則可以比 20 kb 還小,用靜態程式庫編譯,起跳就是 1.8 MB,孰好孰壞?10 個類似的哪種環保?3 MB 的免安裝你覺得可以接受,那麼 30 MB 呢?那麼 300 MB 呢?甚至 3 GB(比如說一個虛擬視窗的影像檔就差不多這麼大)?

    綠色軟體在各大程式設計論壇討論過多次了,最後每個人都以為免註冊就是綠色軟體。

    這種東西爭論多年後,最後結果是 Java / .Net 成為主流開發環境,就是世界共同的趨勢與認知。


    這篇是當時 VBQA 討論的其中一篇,國外網站的網址要自己去找:

    VB程式免安裝探討 - 由 Aven Yu 於 2001/1/8 上午 09:49:02 發表,回應篇數:7

    2007年3月1日 下午 12:32
    版主
  • 問題已發現並解決!

    問題出在於XXX.exe.manifest參數檔。

    當初為了讓VB6寫出的程式能套用XP的VISUAL STYLE風格按鈕與樣式,而在與執行檔的同目錄下放了[執行檔主檔名].exe.manifest檔,只要把這個檔刪除,執行檔就可以正常使用了,至於這個檔為何會有影響就不得而知了。

    所以,若用VB6寫個簡單的程式,只用基礎控制項,編譯成EXE後,在XP SP2之後板本的 WINDOWS 下執行應該是沒問題的。

    也謝謝璉璉兄的指導與資訊的提供,您在VB界裡,算是TOP的高手,也已久仰大名許久了。

     

    2007年3月9日 上午 03:58
  • 如果是這個檔的問題,建議兩個方向來考慮:

    1. 到 MSDN 搜尋一下舊版的宣告,看看最舊的版本內容拿來用。

    2. 試著直接編譯到執行檔內試看看,也就是說不要在夾帶這個檔了。

    http://tlcheng.twbbs.org/TLCheng/Basic/vb/XPTheme/

    注意:VB6 SP6 不能依照文中所描述的方式 1 vi 修改資源檔代碼,要 VB6 SP5 以前才可以。

    2007年3月9日 上午 04:07
    版主
  • 對!

    我就是用您給的網址那個方法做的,兩種(外帶與內含)都試過了,都是會發生開不起來的情形....

    看來 VB6 要套 VISUAL STYLE 可能要考慮了。

    以下是我用 VB6 試作綠色軟體(沒像璉璉兄說得那麼嚴謹的綠色)的結果,請參考:

    http://wifeisblind.blogspot.com

    做這個軟體的目的除了用VB6試作綠色軟體外,還展示了「軟體+創意包裝」之後的成果,一個功能稀鬆平常的軟體,經過包裝,也可以如此莞爾、也可以有一點特別,這是我想表達的!

     

     

     

    2007年3月9日 上午 05:19