Components 元素是用於指定外掛程式某個版本的組成元件。
您可以使用一個以上的 Components 元素來識別外掛程式的元件;每個 Components 元素則可以識別一個或多個元件。Components 元素的平台和產品資訊則是利用 RuntimeRequirements 元素定義。
如果 Components 元素中定義的所有元件皆套用到相同的平台,您便不需要將 RuntimeRequirements 元素加入至個別的 ComponentEntry 元素中。
與 RuntimeRequirements 元素一起時,Components 元素可能含有一個或多個以下元素
下表概述了 Components 元素的基本關係和它本身可以包含的任何元素。
<Components> <RuntimeRequirements ... /> <RegistryEntries> <RegistryEntry ... /> </RegistryEntries> <SystemVariables> <SystemVariable ... /> </SystemVariables> <EnvironmentVariables> <EnvironmentVariable ... /> </EnvironmentVariables> <ComponentEntry ... > <RuntimeRequirements ... /> <AssemblyMappings> <AssemblyMapping ... /> <AssemblyMappingFolder ... /> </AssemblyMappings> <Commands ...> <Command ... /> </Commands> </ComponentEntry> <ComponentEntry ... /> </Components>
ComponentEntry 元素為必要元素,而且是用於指定 Components 元素中每個個別元件的相關詳細資料。
您可以依需要指定所需數目的 ComponentEntry 元素。元件類型可以是下列其中一種檔案格式:
Windows 和 Mac OS
僅限 Windows
如果 LoadReasons 屬性設定為 LoadOnCommandInvocation,則 ComponentEntry 元素可包含 Commands 元素。
ComponentEntry 元素可以貼附下列任何屬性:
屬性 |
描述 |
---|---|
AppName |
AutoLISP 可選;ObjectARX 和 .NET 必選 - Component 名稱;與 ObjectARX API AcadAppInfo 類別中的 AppName 相同。 |
AppDescription |
Component 描述;與 ObjectARX API AcadAppInfo 類別中的 AppDescription 相同。 |
AppType |
Component 類型;覆寫從 ModuleName 屬性提供的檔案副檔名所衍生的類型。 元件類型可以是下列其中一種:
|
ModuleName |
在組合中與元件的相對路徑;與 ObjectARX API AcadAppInfo 類別中的 ModuleName 相同。 元件類型是從檔案副檔名來判斷:
如果您的應用程式將處理多種語言,可以將 ModuleName 與區域設定代碼結合,指定特定元件的不同版本。請參閱〈支援的區域設定程式碼參考〉取得支援的區域設定程式碼完整清單。 註: 所有檔案指定元皆為 '/' 而非 '\',並且為相對於 .bundle 根資料夾的路徑。
|
PerDocument |
僅 AutoLISP - 當此值為 True 時,每個文件會載入一次 AutoLISP 檔案。預設為 True。 |
Loadreasons |
可指定多個值 - 使用 LoadReasons 以及 LoadOnCommandInvocation 參數的異常狀況定義元件的載入行為參數。 根據預設,如果未指定 LoadReasons,則會啟用 LoadOnAutoCADStartup、LoadOnAppearance 和 LoadOnProxy (設定為 True)。如果需要停用參數 (設定為 False),則必須指定 LoadReasons 元素,且參數應設定為 False。 根據預設,LoadOnCommandInvocation 為停用狀態,啟用此元素將會停用 LoadOnAutoCADStartup 和 LoadOnAppearance (除非明確啟用)。如果一個或多個指令元素定義為元件元素的一部分,則系統會隱含啟用 LoadOnCommandInvocation。 請參閱《ObjectARX 參考指南》,取得有關 AcadAppInfo LoadReasons 的完整詳細資料。 有效參數值:
可使用以下參數:
|
XamlType |
XAML 類型;目前僅支援值「ContextualTabRule」,將 XAML 檔案指定給 ModuleName 屬性時必須使用這個值。使用 XAML 檔案的應用程式檔案應該列示在包含 XAML 檔的 ComponentEntry 元素之後。 |
Commands 元素可選,除非 LoadReasons 屬性啟用 LoadOnCommandInvocation 參數。用於指定要使用哪一個指令註冊 LoadOnCommandInvocation。
您可以依需要指定一個以上的 Command 元素。
Commands 元素可以貼附下列屬性:
屬性 |
描述 |
---|---|
GroupName |
用於組織相關指令的名稱。 |
指定每個指令的全球和本端名稱。
Command 元素可以貼附下列任何屬性:
屬性 |
描述 |
---|---|
Global |
全球指令名稱。 |
Local |
本端指令名稱。 您可將 Local 與區域設定代碼結合,定義多個語言的指令。請參閱〈支援的區域設定程式碼參考〉取得支援的區域設定程式碼完整清單。 |
HelpTopic |
當指令的狀態處於作用中並按 F1 時,將會開啟的說明主題。 註: 若要顯示說明主題,必須將說明檔案指定給外掛程式。外掛程式的說明檔案位置是由 ApplicationPackage 元素中的 Helpfile 屬性指定。
|
StartupCommand |
若值為 True,便會在啟動時執行指令 。 |
以下範例加入在名為 ADSKCMDS 的群組中定義的兩個指令:
<Commands GroupName="ADSKCMDS"> <Command Global="HELLOWORLD" Local="ADSKHELLOWORLD"/> <Command Global="DRAWLINE" Local="ADSKDRAWLINE"/> </Commands>
AssemblyMappings 元素是可選的元素,並且可以包含一個或多個 AssemblyMapping 或 AssemblyMappingFolder 元素。AssemblyMapping 和 AssemblyMappingFolder 元素是用來將組合檔案和資料夾路徑加入 AutoCAD 使用的內部清單,以解析在產品安 資料夾中找不到的組合。
屬性 |
描述 |
---|---|
Name |
組合關聯以及應載入的 ComponentEntry 名稱。 |
Path |
組合內組合的相對路徑。 |
屬性 |
描述 |
---|---|
Path |
組合 (bundle) 內組合的相對路徑。 |
以下範例加入兩個包含元件所使用之組合的資料夾:
<AssemblyMappings> <AssemblyMappingFolder Path="./Content/Assemblies" /> <AssemblyMappingFolder Path="./Content/MoreAssemblies" /> </AssemblyMappings>
RegistryEntries 元素是可選的元素,並且可以包含一個或多個 RegistryEntry 元素。RegistryEntry 元素包含外掛程式應建立或修改之登錄項目的定義。登錄項目是儲存在 Windows 登錄中或 Mac 作業系統上的性質清單 (PLIST) 檔案中。
屬性 |
描述 |
---|---|
Name |
要建立或修改之登錄項目的名稱。 |
Value |
要指定給登錄項目的值。 這個值可以包含其中一個可選的運算子字首:+、-、& 和 |。 如需詳細資訊,請參閱「變數值運算子字首」一節。 註: 將值套用至登錄項目時,不會保留運算子字首。
|
Type |
要指定給登錄項目的資料類型。修改既有登錄項目時為可選。 有效值為:
如果運算子字首做為登錄項目值的一部分使用時,必須指定適當的資料類型。如果未使用適當的資料類型,則此作業將被視為是字串作業。 |
Flags |
(可選) 建立和修改旗標。可指定多個旗標;使用豎線號來分隔每個旗標。 支援下列旗標:
註: Open 或 OpenOnce 旗標必須用於修改登錄項目的值。
|
以下範例會建立登錄碼 MYREGKEY 並加入 STRING 和 NUMBER 值:
<RegistryEntries> <RegistryEntry Key="MYREGKEY" Name="STRING" Value="Example" Type="REG_SZ" /> <RegistryEntry Key="MYREGKEY" Name="NUMBER" Value="123" Type="REG_DWORD" /> </RegistryEntries>
SystemVariables 元素是可選的元素,並且可以包含一個或多個 SystemVariables 元素。SystemVariable 元素包含外掛程式應建立或修改之系統變數的定義。
屬性 |
描述 |
---|---|
Name |
要建立或修改之系統變數的名稱。 |
Value |
要指定給變數的值。 這個值可以包含其中一個可選的運算子字首:+、-、& 和 |。 如需詳細資訊,請參閱「變數值運算子字首」一節。 註: 將值套用至變數時,不會保留運算子字首。
|
PrimaryType |
要指定給變數的資料類型。修改既有系統變數時為可選。 有效值為:
如果運算子字首做為變數值的一部分使用時,必須指定適當的資料類型。如果未使用適當的資料類型,則此作業將被視為是字串作業。 |
StorageType |
變數值的儲存位置 (如果保留的話)。修改既有系統變數時為可選。 有效值為:
|
Owner |
(可選) AcRX 服務名稱。 用於使系統變數成為唯讀狀態,且僅能由使用 acrxRegisterService() 以註冊服務名稱的應用程式修改。 |
Flags |
(可選) 建立和修改旗標。可指定多個旗標;使用豎線號來分隔每個旗標。 支援下列旗標:
註: Open 或 OpenOnce 旗標必須用於修改變數的值。
|
以下範例會建立一個名為 MYVARIABLE 的系統變數:
<SystemVariable Name="MYVARIABLE" PrimaryType="String" StorageType="User" Value="Example" Owner="" Flags="Create|DotIsEmpty|SpacesAllowed" />
以下範例會在首次載入外掛程式時,將 CURSORSIZE 系統變數的值變更為 100:
<SystemVariable Name="CURSORSIZE" Value="100" Flags="OpenOnce" />
EnvironmentVariables 元素是可選的元素,並且可以包含一個或多個 EnvironmentVariable 元素。EnvironmentVariables 元素包含外掛程式應建立或修改之環境變數的定義。環境變數是儲存在 Windows 登錄中或 Mac 作業系統上的性質清單 (PLIST) 檔案中。
屬性 |
描述 |
---|---|
Name |
要建立或修改之環境變數的名稱。 |
Value |
要指定給變數的值。 這個值可以包含其中一個可選的運算子字首:+、-、& 和 |。 如需詳細資訊,請參閱「變數值運算子字首」一節。 註: 將值套用至變數時,不會保留運算子字首。
|
Type |
(可選) Value 所代表的資料類型。 有效值為:
如果運算子字首做為變數值的一部分使用時,必須指定適當的資料類型。如果未使用適當的資料類型,則此作業將被視為是字串作業。 |
Flags |
(可選) 建立和修改旗標。可指定多個旗標;使用豎線號來分隔每個旗標。 支援下列旗標:
註: Open 或 OpenOnce 旗標必須用於修改變數的值。
|
以下範例會建立兩個名稱分別為 MYNUMVAR 和 MYSTRVAR 的環境變數:
<EnvironmentVariables> <EnvironmentVariable Name="MYNUMVAR" Value="123" /> <EnvironmentVariable Name="MYSTRVAR" Value="Example" /> </EnvironmentVariables>
運算子字首是用於修改載入外掛程式時變數的目前值。您可以將下表中列示的其中一個運算子字首加入至 RegistryEntry、SystemVariable 或 EnvironmentVariable 元素的 Value 屬性。
字首 |
描述 |
---|---|
+ (加號) |
將值加入或附加至既有變數的值。 Int16、Int32、Real:將 Value 加入至既有變數的值。 String:將 Value 附加至既有變數的值。 |
- (連字符號) |
從既有變數的值減去或移除一個值。 Int16、Int32、Real:從既有變數的值減去 Value。 String:從既有變數的值移除 Value。 |
& (& 符號) |
具有既有變數值的逐位 And 作業;僅支援數值。 |
| (豎線號) |
具有既有變數值的逐位 Or 作業;僅支援數值。 |
以下項目一定會啟用 END、MID、CEN、NOD、QUA 與 INT 常駐式物件鎖點,並保留所有其他物件鎖點設定的現狀:
<SystemVariable Name="OSMODE" Value="|63" Flags="Open" />