討論區快速選單
知識庫快速選單
軟體開發過程中有哪些資安漏洞? 政府補助!學嵌入式+物聯網
[ 回上頁 ] [ 討論區發言規則 ]
[求助]請問適當的安裝方法?
更改我的閱讀文章字型大小
作者 : venny(北極熊) 貼文超過500則人氣指數超過10000點
[ 貼文 602 | 人氣 29600 | 評價 790 | 評價/貼文 1.31 | 送出評價 64 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2004/11/18 上午 10:39:57
求助
[問用package tool去包 應用程式和驅動相關的問題
我有USB的產品一樣,pc上有inf sys ap and ap的ocx需要安裝
希望有一個讓使用者能像裝軟體一樣有安裝指引 輕鬆裝到底的方法

不知道哪一種方法才是比較好的

查了前面的文章
發現大家用install shield 去包,ap and ocx的部份比較容易瞭解,
但是driver的部份就搞不太清楚了,我的疑問如下

有人說看DDK的setup sample
  但是那個sample看起來是叫inf以後,才叫dll出來作一些事情,
   好像不太像想要的東西..
有人前面提過的
   在install過程用呼叫自已寫的dll去把.sys and inf copy 到對應目錄
   但是這只是copy,沒有觸發硬體精靈出來把它裝好呀?
   是不是拷過去以後再觸發device manager重新掃硬體就好了呢?
還有前面也提過
   有setup api 可以用,但是SetupCopyOEMInf 只能用在2000 以後?
   那98 and Me怎麼辦呢?
作者 : lukewu(天行者)
[ 貼文 105 | 人氣 4009 | 評價 570 | 評價/貼文 5.43 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人venny註記此篇回應為最佳解答 2004/11/18 下午 04:24:08

>求助
>[問用package tool去包 應用程式和驅動相關的問題
>我有USB的產品一樣,pc上有inf sys ap and ap的ocx需要安裝
>希望有一個讓使用者能像裝軟體一樣有安裝指引 輕鬆裝到底的方法
>
>不知道哪一種方法才是比較好的
>
>查了前面的文章
>發現大家用install shield 去包,ap and ocx的部份比較容易瞭解,
>但是driver的部份就搞不太清楚了,我的疑問如下
>
>有人說看DDK的setup sample
> 但是那個sample看起來是叫inf以後,才叫dll出來作一些事情,
> 好像不太像想要的東西..
>有人前面提過的
> 在install過程用呼叫自已寫的dll去把.sys and inf copy 到對應目錄
> 但是這只是copy,沒有觸發硬體精靈出來把它裝好呀?

     在 dll 內也可以用 API 去 refresh hardware

> 是不是拷過去以後再觸發device manager重新掃硬體就好了呢?
     yes.

>還有前面也提過
> 有setup api 可以用,但是SetupCopyOEMInf 只能用在2000 以後?
> 那98 and Me怎麼辦呢?
>
     直接 copy 過去 inf folder 就行了
作者 : venny(北極熊) 貼文超過500則人氣指數超過10000點
[ 貼文 602 | 人氣 29600 | 評價 790 | 評價/貼文 1.31 | 送出評價 64 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2004/11/19 上午 09:50:39
謝謝你的回答

再偷問一個問題
如果那個device在進入我的安裝流程前已經是yellow marked了呢?
僅copy files and triger hardware re-scan
這樣還適用嗎?
作者 : lukewu(天行者)
[ 貼文 105 | 人氣 4009 | 評價 570 | 評價/貼文 5.43 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人venny註記此篇回應為最佳解答 2004/11/19 下午 01:13:39

>謝謝你的回答
>
>再偷問一個問題
>如果那個device在進入我的安裝流程前已經是yellow marked了呢?
>僅copy files and triger hardware re-scan
>這樣還適用嗎?

No , 你得先用程式把 yellow mark device 幹掉. 要怎麼做 就先研究一下 registry 吧
作者 : nash123(nash123)
[ 貼文 19 | 人氣 2670 | 評價 20 | 評價/貼文 1.05 | 送出評價 1 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人venny註記此篇回應為最佳解答 2004/11/19 下午 02:55:49
這個回應是要送給"北極熊"的
但是首先~我要好好的衷心的感謝 "天行者" 有他的指點 才有現在的我 T_T

故事開始了...
...如果那個的device已經變成 yellow mark device怎麼辦呢?
好!我們去registry把他抓出來
[\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB]
應該會有個DeviceDesc叫做USB Device的東西...就是他,先記住他的HardwareID

接著!想辦法幹掉它

1.SetupDiGetClassDevs >>> 建立Device Information Set

2.SetupDiEnumDeviceInfo >>> 檢視DIS中的每一個Device Information Element

3.SetupDiGetDeviceRegistryProperty >>> 由DIE讀出每個裝置的HardwareID

4.逐一跟那個yellow mark device的HardwareID比對

5.SetupDiRemoveDevice >>> 移除那個裝置

6.CM_Reenumerate_DevNode >>> 重新整理Device Manager

<<<大功告成>>> 檔案複製就全部交給InstallShield 輕鬆愉快 ^^"


我的方法可能很粗糙,不過可以跑的時候,我真是快哭出來了 呵呵呵呵~

作者 : lukewu(天行者)
[ 貼文 105 | 人氣 4009 | 評價 570 | 評價/貼文 5.43 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2004/11/19 下午 04:51:16
不會很粗糙阿 ! 恭喜你成功囉 .

你應該是在 98/ME 下 run 的吧 , 不過在 2k/xp 下就有些不太一樣了.
作者 : nash123(nash123)
[ 貼文 19 | 人氣 2670 | 評價 20 | 評價/貼文 1.05 | 送出評價 1 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2004/11/22 下午 12:12:10
我用 DDK october 2001 (windows DDK 2600)
     win2k free build environments
在win2k pro 環境下測試 可以了

但我去98下 跑
...無法連結到輸出函式 setupapi.dll : CM_LocateDevNodeA

還在看 該怎麼辦 @@"



作者 : kcin(nick)
[ 貼文 153 | 人氣 2 | 評價 900 | 評價/貼文 5.88 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人venny註記此篇回應為很有道理 2005/1/31 上午 10:34:05
就是老老實實的研究INF 最好多參考國外廠商的INF
這樣才是正途
作者 : venny(北極熊) 貼文超過500則人氣指數超過10000點
[ 貼文 602 | 人氣 29600 | 評價 790 | 評價/貼文 1.31 | 送出評價 64 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/1/31 上午 10:42:08

>就是老老實實的研究INF 最好多參考國外廠商的INF
>這樣才是正途

不知道前輩這樣說意思是什麼?

在inf中對這個問題可有解法?
作者 : kcin(nick)
[ 貼文 153 | 人氣 2 | 評價 900 | 評價/貼文 5.88 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/1/31 下午 08:17:32
這是經驗談啦
因為我們永遠不知道USER會以何種方式安裝驅動程式
唯一的好辦法就是以微軟提供的安裝方式完成
這樣問題會少很多 也省去包裝的問題

這也有個缺點 就是當老闆不認同這種作法的時候
你會倒大楣 他會認為你放著正事不幹 玩這個

這也是我的經驗
我十年前我剛寫驅動程式的時候 INF是老闆寫的
我怎麼看是怎麼不順眼
他卻說 可以用就好 我不死心 玩了兩次 每次二星期
研究各家的INF 最後弄好了

沒多久醫家廠商在找OEM的產品 找到我那時待的公司
他們的測試部門 只有一個問題
如果win95 要求安裝驅動程式的時候 不安裝
那以後還能安裝嗎

老闆轉問我 我的回答是你想安裝幾次都可以
這樣那張單子由外國人手裡轉到我們公司
但老闆也沒對我說什麼

一張單子差別只在於INF 也就是如此
我們把競爭對手的單子 都拿到了
作者 : kcin(nick)
[ 貼文 153 | 人氣 2 | 評價 900 | 評價/貼文 5.88 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人venny註記此篇回應為很有道理 2005/1/31 下午 08:22:44
只說廢話 沒說到正題

INF是windows驅動程式如何安裝的描訴檔案
各個檔案該放在何處也都在這裡指定
win95 98 的INF也差不多
這些在DDK裡都有些不甚清楚的說明
所以才要參考別家的作法
作者 : venny(北極熊) 貼文超過500則人氣指數超過10000點
[ 貼文 602 | 人氣 29600 | 評價 790 | 評價/貼文 1.31 | 送出評價 64 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/2/1 上午 09:10:31

嗯...感謝您所提供的經驗

不過我們前面的疑問
是想要讓User不按按鍵安裝驅動程式 (如併入application的安裝程序)
並不代表我們想要取代硬體精靈的功能。

一鏡到底..
Microsoft也有提供相關的tool library可以使用
但是後來發現 大部份都只能用在通過Microsoft認識的驅動程式
但是實際上,有很多驅動程式不會拿去認証

所以這邊討論的,是這個部份的問題。
在這個做法下,如同您所說的inf或多或少可能要經過修改。

謝謝您的回應。
作者 : eboytw2002(eBoy) 驅動程式優秀好手貼文超過200則人氣指數超過70000點
[ 貼文 338 | 人氣 70186 | 評價 2000 | 評價/貼文 5.92 | 送出評價 4 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/2/1 下午 02:23:10
HI, 看了你們的討論, 又........... 想回信了......

其實 INF 並沒有想像中的那麼單純.....
Bus / function / filter driver 都不太相同, 當然是指 COM interface 方面的設定,
有些須要向 Kernel 去 Query 的 COM interface , 或在 Driver 內充當 ID , 這樣才
不會出現 "小黃" 檔住 Driver 的安裝, 或 Windows CD 片的 Support.

這些當然都是為了 PnP 的因素, 或是 I/O Manager 的 要求了....... 唉

像 Enthernet / VGA 或是 HD Audio 的 INF , 就很過份的將 Driver 內的 Topology
mapping 完全顯露在 INF 上面, 變的除非了解 Driver , 不然就很難去改 INF......
當然, 若只改 SSID / VID... 等, 另當別論


至於 Win98se......以前的 WDM , 對 INF 就很那個了.......... 碰到不 Support 的時後,
就只能自己寫 Setup 來包了.....

[eBoy]
INF 本身應算是 Driver , *.sys 的一部份, 我想.......... 不應該分開

作者 : player(PLAYER) 貼文超過1000則人氣指數超過100000點
[ 貼文 1591 | 人氣 138661 | 評價 2840 | 評價/貼文 1.79 | 送出評價 104 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/8/12 下午 01:09:54
1.用DDK裡的 C:\NTDDK\tools\geninf.exe
先去產生一個inf檔

2.使用regedit.exe (這裡以Win200為例)
先找
HKEY_CLASSES_ROOT\.inf
看到他的預設值是寫 inffile
再找
HKEY_CLASSES_ROOT\inifile
但是我們只看到open與print
沒看到安裝的部份
所以回過頭找
HKEY_CLASSES_ROOT\.inf\PersistentHandler
他的GUID機瑪
用搜尋的
結果找到ㄧ堆不相干的

好了
接下來我們知道以Reg的方式去找安裝方法的方向錯了
(第二段可以忘記了)

3.接下來
沒辦法
只好去偷看別人的安裝程式到底是怎麼裝INF檔
結果最後挖到了
[安裝用]
advpack.dll,LaunchINFSection %s,,12
[移除用]
advpack.dll,LaunchINFSectionEx %s,,,12

把%s用你的inf檔的檔名帶進去
用這一段字串當參數
去執行 rundll32.exe

所以最後只要確保Windows內
有 rundll32.exe與advpack.dll
就應該可以用了


作者 : venny(北極熊) 貼文超過500則人氣指數超過10000點
[ 貼文 602 | 人氣 29600 | 評價 790 | 評價/貼文 1.31 | 送出評價 64 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/8/12 下午 01:19:32
阿...
inf好難...driver也好難..
有些東西不懂怎麼運作的..
怎麼看文件也是看不懂...

哎哎哎喲喲喲~~

發發勞騷..
作者 : player(PLAYER) 貼文超過1000則人氣指數超過100000點
[ 貼文 1591 | 人氣 138661 | 評價 2840 | 評價/貼文 1.79 | 送出評價 104 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/8/12 下午 01:21:52
基於上述的方法
你不論想用哪一套打包安裝程式工具再去封裝檔案都可以了
只要你最後
去執行 rundll32.exe 並帶入相關的參數字串
讓Windows自己去接手後續的INF檔的安裝
就好了

Win 2000 好像還多了一種
setupapi.dll,InstallHinfSection DefaultInstall 132 %s
一樣是透過rundll32.dll 帶入參數去執行的
可是這一段是安裝用的
移除用的我沒找到
而且Win 9x應該不能使用
所以不建議使用這種方法
作者 : player(PLAYER) 貼文超過1000則人氣指數超過100000點
[ 貼文 1591 | 人氣 138661 | 評價 2840 | 評價/貼文 1.79 | 送出評價 104 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/8/12 下午 01:34:31
不過
可能還有一個可能比較要命的問題是
rundll32.exe 這個Microsoft在每一版Windows裡都內建的程式
超容易死當的
導致執行該rundll32.exe容易陷入程式沒有回應
尤其是在Win 9x上面
作者 : venny(北極熊) 貼文超過500則人氣指數超過10000點
[ 貼文 602 | 人氣 29600 | 評價 790 | 評價/貼文 1.31 | 送出評價 64 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/8/12 下午 01:38:29

你爬一下一下前面 天行者/nash的文章
可能會有一點幫助.

我現在沒辦法怕那個了
只怕WHQL送回來 安裝還是不能一鏡到底..

那我就死盲了...
作者 : player(PLAYER) 貼文超過1000則人氣指數超過100000點
[ 貼文 1591 | 人氣 138661 | 評價 2840 | 評價/貼文 1.79 | 送出評價 104 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/8/12 下午 01:49:20
只有跟硬體綁在一起的驅動程式
才能直接用把inf檔複製到Windows內的inf目錄的作法吧

如果我是寫一個純軟體的驅動程式的話
又沒有對應pnp硬體裝置
那應該根本沒辦法用透過裝置重新整理的方式
去裝上我要的驅動程式啊

因為根本沒底下的pnp裝置
通知Windows到inf目錄裡去找他要的驅動程式

我是有看過另一種驅動程式的用法
利用for NT的方式
以服務的方式去開啟該sys檔
而不是需要先經過INF檔的安裝
這種的作法
可以把sys檔放在跟AP同一層的目錄裡
(可是這種的作法, 我還沒在 Win 9x上實驗過, 而且它的AP用到了像是CreateService 這種只有 Win NT/2000/XP/2003才有的API)
作者 : player(PLAYER) 貼文超過1000則人氣指數超過100000點
[ 貼文 1591 | 人氣 138661 | 評價 2840 | 評價/貼文 1.79 | 送出評價 104 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/8/12 下午 01:56:32
所以
我想過比照rundll32.exe的作法
自己另外再寫一隻功能一樣的AP去取代他

這樣就不必去理會Windows內建的rundll32.exe
是不是還在死當中
 板主 : 徵求中
 > 驅動程式 - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - 驅動程式 - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
驅動程式
1 新兵衛 1240 
2 eBoy 980 
3 牧童哥 780 
4 北極熊 580 
5 天行者 580 
6 燒酒仙 440 
7 weber 380 
8 KEN 350 
9 jonay 180 
10 掌握文武半邊天 180 
驅動程式
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2019 程式設計俱樂部 http://www.programmer-club.com.tw/
9.423828E-02