none
Visual Studio 2008 Setup Wizard 註冊DLL 如何攜帶參數? RRS feed

  • 問題

  • 因為這支程式需用到第三方的DLL而且是需攜帶參數註冊的,
    在Setup Wizard中我將Register 設定成vsdrfCOMSelfReg這樣可以註冊成功。
    但是因為註冊的時候需要攜帶參數才能正確使用,所以我想請問如何攜帶參數註冊這個DLL
    例如:

    regsvr32 oemt.dll /i:"TEST TEST#xxxxx-W9FC5V-31AXAX-F884EC-WN7G92-X3VXEE-21CFEE-524E94-651198-2A84FA-663C11-xxxxxx"

    2009年12月29日 上午 08:17

解答

  • 既有討論裡面不就有寫自訂動作可直接呼叫執行檔嗎?
    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    • 已標示為解答 colinCK 2009年12月30日 上午 04:58
    2009年12月29日 下午 03:50
  • 你直接用個 bat 去處理就可以了。

    ex. regsvr.bat
    regsvr32 /i %1

    讓自訂動作呼叫這個 bat 即可。 [錯誤,說明如回應]

    如果你不想用這個 bat ,再用 orca.exe 開你的 setup.msi ,到 Tables CustomAction 去改,不過這滿麻煩的,會變成每次重新封裝都要手動重改,所以我覺得直接用 bat 去跑就可以了。
    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    • 已標示為解答 colinCK 2009年12月30日 上午 05:43
    • 已編輯 心冷熱情熄 2009年12月30日 上午 10:01
    2009年12月30日 上午 05:24

所有回覆

  • 既有討論:
    http://social.msdn.microsoft.com/Forums/zh-TW/233/thread/6d8a23c6-af9f-4554-91c9-a66b87a0f586/
    http://social.msdn.microsoft.com/forums/zh-TW/230/thread/f55f0850-dff7-4282-939e-09b890f3eab2/

    其他相關討論:
    http://social.msdn.microsoft.com/Search/zh-TW/?Refinement=112&query=%u5c01%u88dd%20exe
    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2009年12月29日 上午 08:46
  • 首先謝謝您的回答~
    再來是我想要說~您提供的資料~我有看過了~資料著重於如何製作安裝檔案與部屬方面,
    也有講到註冊dll的問題,但是似乎沒有包含註冊dll附帶參數的情況。
    經過我亂摸索之後還是不行,
    因為我無法在安裝與部屬專案中使用  /i 這個輸入參數
    因為要使用這個dll必須以 /i 且輸入參數提供name與id才能完整使用此dll(其中name與id是dll廠商提供的)

    我封裝完畢後可以完整的安裝與註冊此dll(直接將register屬性欄位設定成vsdrfCOMSelfReg) 但是執行程式的時候他會出現輸入name與id的情況(這部分就是我的問題所在,因為部署完且在regsvr32 oemt.dll並沒有帶參數進去,所以此dll會跳出註冊訊息)
    變成我還要在自己打name與id在他跳出的訊息框。
    所以我希望最好是可以直接在安裝完畢的時候就利用regsvr32 oemt.dll /i:"abcde#abcde"這樣的命令來註冊此dll
    請問有辦法嗎?還是要寫自訂動作?如果是的話要如何寫?建立一個exe檔案?用shell寫?還是用script?
    關於script我不太了解要如何去寫。或者說需要別的辦法才能辦到?
    麻煩各位再次幫助了~~

    2009年12月29日 下午 02:12
  • 既有討論裡面不就有寫自訂動作可直接呼叫執行檔嗎?
    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    • 已標示為解答 colinCK 2009年12月30日 上午 04:58
    2009年12月29日 下午 03:50
  • 恩恩看樣子一定要呼叫執行檔囉~
    不能直接安裝完然後預先設定參數讓他自己去執行regsvr32 /i xxxx了
    感謝,我目前是再寫一個console ap然後裡面坐ㄧ些執行的動作了,變成是分開囉。
    如果有別的辦法希望大家在告訴我哈哈,我要精益求精謝謝。
    再次感謝您的回覆。

    2009年12月30日 上午 04:57
  • 你直接用個 bat 去處理就可以了。

    ex. regsvr.bat
    regsvr32 /i %1

    讓自訂動作呼叫這個 bat 即可。 [錯誤,說明如回應]

    如果你不想用這個 bat ,再用 orca.exe 開你的 setup.msi ,到 Tables CustomAction 去改,不過這滿麻煩的,會變成每次重新封裝都要手動重改,所以我覺得直接用 bat 去跑就可以了。
    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    • 已標示為解答 colinCK 2009年12月30日 上午 05:43
    • 已編輯 心冷熱情熄 2009年12月30日 上午 10:01
    2009年12月30日 上午 05:24
  • 您好我又來問問題了

    http://social.msdn.microsoft.com/Forums/zh-TW/230/thread/5967ecde-0992-4151-8660-00d21f6fbc43

    在這個討論中我看到您說

    摘錄步驟部分,外部執行檔是 exe 那段,事實上也可以替換成 .vbs / .bat 等,自建安裝專案參考該文最下方的請參考一節:

    是指自訂動作可以加入.bat檔嗎?我試過不能,所以我跑來問問看如何加入
    他會出現錯誤訊息:Not a valid file type for a custom action.

    謝謝@@"

    2009年12月30日 上午 07:26
  • 抱歉,我查過了,我自己的專案也是用執行檔。
    我也查了 MSI 的線上手冊部分,自訂動作的確沒有批次檔:

    Custom Action Type 1

    DLL file stored in a Binary table stream.

    1 Key to Binary table. DLL entry point.
    Custom Action Type 2

    EXE file stored in a Binary table stream.

    2 Key to Binary table. Command-line string.
    Custom Action Type 5

    JScript file stored in a Binary table stream.

    5 Key to Binary table. An optional JScript function that can be called.
    Custom Action Type 6

    VBScript file stored in a Binary table stream.

    6 Key to Binary table. An optional VBScript function that can be called.


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2009年12月30日 上午 10:00