2010-09-21 76 views
2

是否有人成功創建了單頁autorun.inf文件? * .inf文件的文檔將建議如何本地化autorun.inf?

[autorun] 
open="MyApp.exe" 
icon=MyApp.exe,0 
label=%AppLabel% 
action=%AppAction% 
[Strings] 
AppLabel = "My test app" 
AppAction = "Start my test app" 
[Strings.0407] ; 0407 is the language ID for German 
AppLabel = "German my test app" 
AppAction = "German start my test app" 

應該工作。我發現該標籤(出現在自動運行對話框中)顯示'%AppLabel%',而不是預期的'我的測試應用程序'。

+0

你從哪裏讀到可以使用這樣的變量?至少[MSDN文檔](http://msdn.microsoft.com/en-us/library/cc144200%28VS.85%29.aspx)沒有提及任何此類支持。 – casablanca 2010-09-21 23:55:16

+0

http://msdn.microsoft.com/en-us/library/ff547485(VS.85).aspx – Rastro 2010-09-22 00:01:14

+0

http://msdn.microsoft.com/en-us/library/ff547485(VS.85).aspx – Rastro 2010-09-22 00:11:33

回答

2

卡薩布蘭卡在評論中鏈接的docs說明如何做到這一點,然而以迂迴的方式。

答案在"indirect strings"。你必須多字符串資源添加到一個EXE或DLL文件,都具有相同的ID,但指定不同的語言,然後你可以通過間接的字符串語法引用在autorun.inf文件的字符串(由LANGUAGE發言):@filename,-id

間接字符串的語法是@符號,後跟包含您引用的字符串資源的文件的名稱,後跟逗號,減號,然後是您引用的字符串ID。

例子:

[autorun] 
open="MyApp.exe" 
icon=MyApp.exe,0 
[email protected],-100 
[email protected],-101 

這就需要你有一個包含所有本地化字符串你的EXE的字符串表資源。它可以是這樣的RC文件格式:然後

#include <winresrc.h> 

LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT 
STRINGTABLE 
BEGIN 
    100 "English MyApp 
    101 "English MyApp description text" 
END 

LANGUAGE LANG_GERMAN, SUBLANG_DEFAULT 
STRINGTABLE 
BEGIN 
    100 "German MyApp 
    101 "German MyApp description text" 
END 

Windows應採用德國字符串,如果用戶安裝的Windows德語語言版本,或選擇德語作爲自己的MUI語言。任何其他語言版本都應該選擇英文字符串。

+1

我無法得到這個標籤字符串的工作。 autorun.inf的文檔僅提到了操作字符串的間接字符串技術,該技術運行良好;所以我認爲不可能本地化標籤。 – 2012-02-18 18:42:44