Inno setup 如何在Inno设置中添加区域下拉列表?
在Inno脚本中,我使用的是“语言选择”下拉列表。我还使用下面的代码将所选语言存储到名为“language.properties”的文件中。安装的应用程序使用此“language.properties”文件 现在除了语言选择,我还需要添加一个区域选择下拉列表。区域的值是自定义的(如美国、欧洲等),这意味着无需从windows注册表获取 用户选择区域后,我需要将其存储到同一个文件“language.properties”中 我对Inno脚本非常陌生。你怎么认为?如何有效地做到这一点Inno setup 如何在Inno设置中添加区域下拉列表?,inno-setup,pascal,Inno Setup,Pascal,在Inno脚本中,我使用的是“语言选择”下拉列表。我还使用下面的代码将所选语言存储到名为“language.properties”的文件中。安装的应用程序使用此“language.properties”文件 现在除了语言选择,我还需要添加一个区域选择下拉列表。区域的值是自定义的(如美国、欧洲等),这意味着无需从windows注册表获取 用户选择区域后,我需要将其存储到同一个文件“language.properties”中 我对Inno脚本非常陌生。你怎么认为?如何有效地做到这一点 编辑:由于形
编辑:由于形成初始注释,无法自定义“选择设置语言”对话框,如何为区域选择添加自定义向导页?这是我的应用程序设置页的一个片段。我把它砍掉了:
function AppSettings_CreatePage(PreviousPageId: Integer): Integer;
var
Page: TWizardPage;
iUserValue: Cardinal;
strPath: String;
begin
Page := CreateCustomPage(
PreviousPageId,
ExpandConstant('{cm:ApplicationPreferences}'),
ExpandConstant('{cm:DefaultSettings}')
);
// lblInfo
lblInfo := TLabel.Create(Page);
with lblInfo do
begin
Parent := Page.Surface;
Caption := ExpandConstant('{cm:SpecifyDefaultSettings}');
Left := ScaleX(8);
Top := ScaleY(8);
Width := ScaleX(387);
Height := ScaleY(29);
end;
// lblDatabase
lblDatabase := TLabel.Create(Page);
with lblDatabase do
begin
Parent := Page.Surface;
Caption := ExpandConstant('{cm:DatabaseLanguage}');
Left := ScaleX(8);
Top := ScaleY(112);
Width := ScaleX(385);
Height := ScaleY(13);
end;
// cbDatabase
cbDatabase := TNewComboBox.Create(Page);
with cbDatabase do
begin
Parent := Page.Surface;
Left := ScaleX(8);
Top := ScaleY(128);
Width := ScaleX(177);
Height := ScaleY(21);
Style := csDropDownList;
TabOrder := 3;
// Languages
Items.Add({#LANG_AFK});
Items.Add({#LANG_TWI});
Items.Add({#LANG_DAN});
Items.Add({#LANG_DEU});
Items.Add({#LANG_ENG});
Items.Add({#LANG_ESP});
Items.Add({#LANG_FRA});
Items.Add({#LANG_IND});
Items.Add({#LANG_ITA});
Items.Add({#LANG_SWK});
Items.Add({#LANG_NLD});
Items.Add({#LANG_PLK});
Items.Add({#LANG_PTB});
Items.Add({#LANG_RUS});
Items.Add({#LANG_SQI});
Items.Add({#LANG_FIN});
Items.Add({#LANG_SVE});
Items.Add({#LANG_FPO});
Items.Add({#LANG_TRK});
Items.Add({#LANG_CHS});
Items.Add({#LANG_BGR});
Items.Add({#LANG_ELL});
Items.Add({#LANG_UKR});
Items.Add({#LANG_KHM});
Items.Add({#LANG_ROM});
Items.Add({#LANG_SMO});
Items.Add({#LANG_VIT});
Items.Add({#LANG_ARA});
// Get path where the program was last install
strPath := GetPathInstalled('Public Talks');
if ActiveLanguage = 'English' then ItemIndex := {#MDB_ENG_INDEX};
if ActiveLanguage = 'German' then ItemIndex := {#MDB_DEU_INDEX};
if ActiveLanguage = 'Spanish' then ItemIndex := {#MDB_ESP_INDEX};
if ActiveLanguage = 'Italian' then ItemIndex := {#MDB_ITA_INDEX};
if ActiveLanguage = 'Dutch' then ItemIndex := {#MDB_NLD_INDEX};
if ActiveLanguage = 'Turkish' then ItemIndex := {#MDB_TRK_INDEX};
if ActiveLanguage = 'Portuguese' then ItemIndex := {#MDB_PTB_INDEX};
if ActiveLanguage = 'Swedish' then ItemIndex := {#MDB_SVE_INDEX};
if ActiveLanguage = 'Danish' then ItemIndex := {#MDB_DAN_INDEX};
if ActiveLanguage = 'Russian' then ItemIndex := {#MDB_RUS_INDEX};
if ActiveLanguage = 'Finnish' then ItemIndex := {#MDB_FIN_INDEX};
if ActiveLanguage = 'Albanian' then ItemIndex := {#MDB_SQI_INDEX};
if ActiveLanguage = 'French' then ItemIndex := {#MDB_FRA_INDEX};
if ActiveLanguage = 'Greek' then ItemIndex := {#MDB_ELL_INDEX};
if ActiveLanguage = 'Romanian' then ItemIndex := {#MDB_ROM_INDEX};
end;
Result := Page.ID;
end;
这将演示如何显示下拉列表并选择条目
我应该指出,Inno Setup附带的帮助文件中也提到了这一点,该文件也可用。参见主题。我承认这是相当稀疏的 据我所知,目前还没有定制实际语言选择窗口的工具。这听起来更像是一个功能请求,最好在Inno Setup新闻组中询问。然而,StackOverflow上的其他人可能比我有更多的知识,他们可能知道如何操作。我想到的唯一一件事是在安装过程中添加一个自定义向导页面,其中包含下拉列表,而不是试图自定义
语言对话框
。我根据您的建议编辑了这个问题。有添加自定义向导页面的示例吗?这里有一个示例。如果您需要更多帮助,请告诉我。此外,在创建自定义向导页面时,这里已经有无数其他问题。
function AppSettings_CreatePage(PreviousPageId: Integer): Integer;
var
Page: TWizardPage;
iUserValue: Cardinal;
strPath: String;
begin
Page := CreateCustomPage(
PreviousPageId,
ExpandConstant('{cm:ApplicationPreferences}'),
ExpandConstant('{cm:DefaultSettings}')
);
// lblInfo
lblInfo := TLabel.Create(Page);
with lblInfo do
begin
Parent := Page.Surface;
Caption := ExpandConstant('{cm:SpecifyDefaultSettings}');
Left := ScaleX(8);
Top := ScaleY(8);
Width := ScaleX(387);
Height := ScaleY(29);
end;
// lblDatabase
lblDatabase := TLabel.Create(Page);
with lblDatabase do
begin
Parent := Page.Surface;
Caption := ExpandConstant('{cm:DatabaseLanguage}');
Left := ScaleX(8);
Top := ScaleY(112);
Width := ScaleX(385);
Height := ScaleY(13);
end;
// cbDatabase
cbDatabase := TNewComboBox.Create(Page);
with cbDatabase do
begin
Parent := Page.Surface;
Left := ScaleX(8);
Top := ScaleY(128);
Width := ScaleX(177);
Height := ScaleY(21);
Style := csDropDownList;
TabOrder := 3;
// Languages
Items.Add({#LANG_AFK});
Items.Add({#LANG_TWI});
Items.Add({#LANG_DAN});
Items.Add({#LANG_DEU});
Items.Add({#LANG_ENG});
Items.Add({#LANG_ESP});
Items.Add({#LANG_FRA});
Items.Add({#LANG_IND});
Items.Add({#LANG_ITA});
Items.Add({#LANG_SWK});
Items.Add({#LANG_NLD});
Items.Add({#LANG_PLK});
Items.Add({#LANG_PTB});
Items.Add({#LANG_RUS});
Items.Add({#LANG_SQI});
Items.Add({#LANG_FIN});
Items.Add({#LANG_SVE});
Items.Add({#LANG_FPO});
Items.Add({#LANG_TRK});
Items.Add({#LANG_CHS});
Items.Add({#LANG_BGR});
Items.Add({#LANG_ELL});
Items.Add({#LANG_UKR});
Items.Add({#LANG_KHM});
Items.Add({#LANG_ROM});
Items.Add({#LANG_SMO});
Items.Add({#LANG_VIT});
Items.Add({#LANG_ARA});
// Get path where the program was last install
strPath := GetPathInstalled('Public Talks');
if ActiveLanguage = 'English' then ItemIndex := {#MDB_ENG_INDEX};
if ActiveLanguage = 'German' then ItemIndex := {#MDB_DEU_INDEX};
if ActiveLanguage = 'Spanish' then ItemIndex := {#MDB_ESP_INDEX};
if ActiveLanguage = 'Italian' then ItemIndex := {#MDB_ITA_INDEX};
if ActiveLanguage = 'Dutch' then ItemIndex := {#MDB_NLD_INDEX};
if ActiveLanguage = 'Turkish' then ItemIndex := {#MDB_TRK_INDEX};
if ActiveLanguage = 'Portuguese' then ItemIndex := {#MDB_PTB_INDEX};
if ActiveLanguage = 'Swedish' then ItemIndex := {#MDB_SVE_INDEX};
if ActiveLanguage = 'Danish' then ItemIndex := {#MDB_DAN_INDEX};
if ActiveLanguage = 'Russian' then ItemIndex := {#MDB_RUS_INDEX};
if ActiveLanguage = 'Finnish' then ItemIndex := {#MDB_FIN_INDEX};
if ActiveLanguage = 'Albanian' then ItemIndex := {#MDB_SQI_INDEX};
if ActiveLanguage = 'French' then ItemIndex := {#MDB_FRA_INDEX};
if ActiveLanguage = 'Greek' then ItemIndex := {#MDB_ELL_INDEX};
if ActiveLanguage = 'Romanian' then ItemIndex := {#MDB_ROM_INDEX};
end;
Result := Page.ID;
end;