2017-02-27 119 views
-2

我正在爲具有自定義URI方案和自己的文件類型的應用程序進行安裝,以便用它打開。該應用程序執行與launcher.bat,在註冊表中我已設置launcher.bat這樣做。 它的工作原理應該是這樣,除非我想在應用程序中註冊該應用程序,並在exporer和瀏覽器中顯示爲開放應用程序而不是launcher.batWindows註冊表 - 註冊應用程序以打開文件類型

由安裝腳本應用的註冊表文件是以下(它會動態生成的,所以不介意應用程序的路徑以及):

Windows Registry Editor Version 5.00 

; ---- Add myext extension 
[-HKEY_CLASSES_ROOT\.myext] 

[HKEY_CLASSES_ROOT\.myext] 
"content-type"="application/myext+xml" 
@="myapp" 


; ---- Add myapp for protocol 
[-HKEY_CLASSES_ROOT\myapp] 

[HKEY_CLASSES_ROOT\myapp] 
@="URL:tahuna Protocol" 
"URL Protocol"="" 

[HKEY_CLASSES_ROOT\myapp\DefaultIcon] 
@="MyApplication.exe,1" 

[HKEY_CLASSES_ROOT\myapp\shell] 
@="open" 

[HKEY_CLASSES_ROOT\myapp\shell\open] 
@="Open with My Application" 

[HKEY_CLASSES_ROOT\myapp\open\command] 
@="\"C:\\Program Files (x86)\\My Application\\launcher.bat\" \"%1\"" 

我要補充些什麼到註冊表來這樣做?

+0

實際問題是什麼? – Anders

回答

0

後挖了幾天,我已經找到了解決辦法:

上面的註冊表分配擴展到啓動(或任何可執行文件)來打開它,但操作系統只顯示可執行文件名作爲關聯程序 - 這很好,因爲它沒有註冊。這可以顯示在文件的屬性窗口中,在exprorer中,當你右鍵點擊文件並選擇open with時,甚至在註冊URI模式時,甚至在browesers中。

要做到這一點,應用程序也必須在註冊表中註冊。在挖掘互聯網後,終於在MSDN上發現了額外的註冊表更改。

Windows Registry Editor Version 5.00 

[HKEY_CLASSES_ROOT\Applications\MyApplicationLauncher.bat] 
FriendlyAppName = "My Application" 
DefaultIcon = "<MyApplicationPath>\MyApplication.exe,1" 

注意,使用像launcher.batstart.bat可能導致衝突的應用名稱;爲了證明它的獨特性,我不得不在安裝程序包中重新命名它以識別它。

1

名字你喜歡的類型:

assoc .<ext> <anyName> 

,然後設置程序來打開:

ftype <anyName>=<application-path> 

你們的名字替換尖括號所有名稱:

<ext>:擴展

<anyName>:一個名字,其中w indows知道哪些程序可以使用,您可以使用assoc多次使用不同的擴展名

<application-path>:要打開它的程序的文件名。

+0

謝謝,它的工作原理是這樣的,但對我來說它是通用的 – Caiwan