如何将变量值传递到xml文件?

用户名

这是我从user.up输入端口号的代码。安装时,我想更改apache tomcat server.xml文件中的端口号。

Iam还使用文件部分传递apache tomcat zip文件,并在运行部分将其解压缩

var
javaVersion: String;
javaPath: String;

//端口号代码

function SetFocus(hWnd: HWND): HWND;
external '[email protected] stdcall';

var
 SerialPage: TWizardPage;
  SerialEdits: array of TEdit;

const
 CF_TEXT = 1;
 VK_BACK = 8;
 SC_EDITCOUNT = 1;
 SC_CHARCOUNT = 4;


  procedure OnSerialEditChange(Sender: TObject);
var
I: Integer;
CanContinue: Boolean;
begin
 CanContinue := True;
 for I := 0 to GetArrayLength(SerialEdits) - 1 do
 if Length(SerialEdits[I].Text) < SC_CHARCOUNT then
 begin
  CanContinue := False;
  Break;
end;
WizardForm.NextButton.Enabled := CanContinue;
 end;

 function GetSerialNumber(Param: String): string;
  var
  I: Integer;
  begin
  Result := '';
  for I := 0 to GetArrayLength(SerialEdits) - 1 do
  Result := Result + SerialEdits[I].Text ;
  end;


 procedure OnSerialEditKeyDown(Sender: TObject; var Key: Word;
 Shift: TShiftState);
 var
   Edit: TEdit;
   EditIndex: Integer;
  begin
  Edit := TEdit(Sender);
  EditIndex := Edit.TabOrder - SerialEdits[0].TabOrder;
 if (EditIndex = 0) and (Key = Ord('V')) and (Shift = [ssCtrl]) then
 begin
 if TryPasteSerialNumber then
  Key := 0;
 end
 else
  if (Key >= 32) and (Key <= 255) then
   begin
  if Length(Edit.Text) = SC_CHARCOUNT - 1 then
    begin
   if EditIndex < GetArrayLength(SerialEdits) - 1 then
    SetFocus(SerialEdits[EditIndex + 1].Handle)
  else
    SetFocus(WizardForm.NextButton.Handle);
  end;
  end
  else
  if Key = VK_BACK then
  if (EditIndex > 0) and (Edit.Text = '') and (Edit.SelStart = 0) then
  SetFocus(SerialEdits[EditIndex - 1].Handle);
  end;



 procedure CreateSerialNumberPage;
        var
         I: Integer;
         Edit: TEdit;
         DescLabel: TLabel;
         EditWidth: Integer;
         begin
            SerialPage := CreateCustomPage(wpWelcome, 'Serial number validation',
'Enter the valid serial number');

DescLabel := TLabel.Create(SerialPage);
DescLabel.Top := 16;
DescLabel.Left := 0;
DescLabel.Parent := SerialPage.Surface;
DescLabel.Caption := 'Enter the valid serial number and continue with the   installation...';
DescLabel.Font.Style := [fsBold];

SetArrayLength(SerialEdits, SC_EDITCOUNT);
EditWidth := (SerialPage.SurfaceWidth - ((SC_EDITCOUNT - 1) * 8)) div SC_EDITCOUNT;

 for I := 0 to SC_EDITCOUNT - 1 do
  begin
 Edit := TEdit.Create(SerialPage);
 Edit.Top := 40;
 Edit.Left := I * (EditWidth + 8);
 Edit.Width := EditWidth;
 Edit.CharCase := ecUpperCase;
 Edit.MaxLength := SC_CHARCOUNT;
 Edit.Parent := SerialPage.Surface;
 Edit.OnChange := @OnSerialEditChange;
 Edit.OnKeyDown := @OnSerialEditKeyDown;
 SerialEdits[I] := Edit;
 end;
 end;


procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID = SerialPage.ID then
WizardForm.NextButton.Enabled := False;  
end;

procedure InitializeWizard;
begin
CreateSerialNumberPage;
 end ;

我想使用令牌替换用户在tomcats server.xml中输入的端口号

<Connector port="##portnumber##" protocol="HTTP/1.1"
connectionTimeout="20000"         
redirectPort="8443" />
TLama

这是我为您制作的脚本。我已经更改了输入端口号的方式,并显示了如何修改XML文件中的属性值。还要注意该AfterInstall功能的用法

#define TomcatDest "{app}\tomcat"
#define TomcatFullPath TomcatDest + "\apache-tomcat-7.0.42"
#define TomcatSrvConfigFile TomcatFullPath + "\conf\server.xml"

[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program

[Files]
Source: "unzip.exe"; DestDir: "{tmp}\installertemps"
Source: "apache-tomcat-7.0.42.zip"; DestDir: "{tmp}\installertemps"

[Run]
Filename: "{tmp}\installertemps\unzip.exe"; Parameters: " ""{tmp}\installertemps\apache-tomcat-7.0.42.zip"" -d ""{#TomcatDest}"" "; AfterInstall: UpdateConfigFile(ExpandConstant('{#TomcatSrvConfigFile}'))

[Code]
const
  DefaultPort = 8080;
var
  ConfigPage: TInputQueryWizardPage;

procedure SaveAttrValueToXML(const FileName, NodePath, Attribute,
  Value: string);
var
  XMLNode: Variant;
  XMLDocument: Variant;
begin
  XMLDocument := CreateOleObject('Msxml2.DOMDocument');
  try
    XMLDocument.async := False;
    XMLDocument.load(FileName);
    if (XMLDocument.parseError.errorCode <> 0) then
      MsgBox('The XML file could not be parsed. ' +
        XMLDocument.parseError.reason, mbError, MB_OK)
    else
    begin
      XMLDocument.setProperty('SelectionLanguage', 'XPath');
      XMLNode := XMLDocument.selectSingleNode(NodePath);
      XMLNode.setAttribute(Attribute, Value);
      XMLDocument.save(FileName);
    end;
  except
    MsgBox('An error occured!' + #13#10 + GetExceptionMessage,
      mbError, MB_OK);
  end;
end;

procedure InitializeWizard;
begin
  ConfigPage := CreateInputQueryPage(wpSelectDir, 'Tomcat configuration',
    'Description', 'SubCaption');
  ConfigPage.Add('Port:', False);
  ConfigPage.Values[0] := IntToStr(DefaultPort);
end;

function NextButtonClick(CurPageID: Integer): Boolean;
var
  PortNumber: Integer;
begin
  Result := True;
  if CurPageID = ConfigPage.ID then
  begin
    PortNumber := StrToIntDef(ConfigPage.Values[0], -1);
    // modify the statement to allow users enter only valid port numbers;
    // currently the value of -1 means that there is not even a number entered
    // in the edit box
    if (PortNumber = -1) then
    begin
      Result := False;
      MsgBox('You''ve entered invalid port number. The setup cannot continue...', mbError, MB_OK);
    end;
  end;
end;

procedure UpdateConfigFile(const FileName: string);
begin
  SaveAttrValueToXML(FileName, '//Server/Service/Connector', 'port',
    ConfigPage.Values[0]);
end;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将变量值传递到xml文件?

来自分类Dev

如何将变量值从包含的文件传递到类属性

来自分类Dev

如何将变量值从包含的文件传递到类属性

来自分类Dev

如何将变量值传递到存储过程中

来自分类Dev

如何将变量值从java传递给javascript

来自分类Dev

如何将变量值作为 documentGetElementByID 的 ID 传递

来自分类Dev

如何将变量值从控制台应用程序传递到Windows窗体应用程序

来自分类Dev

如何将javascript变量值传递给php变量?

来自分类Dev

将动态变量值从机器人框架传递到python文件

来自分类Dev

将变量值从C#传递到javascript

来自分类Dev

将变量值传递到TextView中

来自分类Dev

Bash 将变量值从 for 循环传递到嵌套的 for 循环

来自分类Dev

如何将javascript变量值传递给Django中的views.py函数?

来自分类Dev

如何将变量值传递给脚本并在一行中运行它?

来自分类Dev

如何将变量值从函数传递给Shellscript中的调用过程

来自分类Dev

如何将一个活动的变量值传递给 android 中的 baseactivity

来自分类Dev

如何将局部变量值从函数传递给 addEventListener 函数?

来自分类Dev

如何将 jQuery 变量值传递给 c# mvc?

来自分类Dev

如何将 PHP 变量值传递给 Paypal 的客户端代码

来自分类Dev

如何将变量值后面的代码绑定到javascript?

来自分类Dev

bash 将变量值存储到 JSON 文件中

来自分类Dev

如何将angularjs变量值获取到其他.js文件

来自分类Dev

如何在json文件中传递bash变量值

来自分类Dev

如何将变量值转换为整数?

来自分类Dev

如何将变量值设置为每行零

来自分类Dev

如何将数组与变量值合并

来自分类Dev

如何将变量值插入表中?

来自分类Dev

将变量值传递给 URL

来自分类Dev

如何从GULP将变量值注入JS文件

Related 相关文章

  1. 1

    如何将变量值传递到xml文件?

  2. 2

    如何将变量值从包含的文件传递到类属性

  3. 3

    如何将变量值从包含的文件传递到类属性

  4. 4

    如何将变量值传递到存储过程中

  5. 5

    如何将变量值从java传递给javascript

  6. 6

    如何将变量值作为 documentGetElementByID 的 ID 传递

  7. 7

    如何将变量值从控制台应用程序传递到Windows窗体应用程序

  8. 8

    如何将javascript变量值传递给php变量?

  9. 9

    将动态变量值从机器人框架传递到python文件

  10. 10

    将变量值从C#传递到javascript

  11. 11

    将变量值传递到TextView中

  12. 12

    Bash 将变量值从 for 循环传递到嵌套的 for 循环

  13. 13

    如何将javascript变量值传递给Django中的views.py函数?

  14. 14

    如何将变量值传递给脚本并在一行中运行它?

  15. 15

    如何将变量值从函数传递给Shellscript中的调用过程

  16. 16

    如何将一个活动的变量值传递给 android 中的 baseactivity

  17. 17

    如何将局部变量值从函数传递给 addEventListener 函数?

  18. 18

    如何将 jQuery 变量值传递给 c# mvc?

  19. 19

    如何将 PHP 变量值传递给 Paypal 的客户端代码

  20. 20

    如何将变量值后面的代码绑定到javascript?

  21. 21

    bash 将变量值存储到 JSON 文件中

  22. 22

    如何将angularjs变量值获取到其他.js文件

  23. 23

    如何在json文件中传递bash变量值

  24. 24

    如何将变量值转换为整数?

  25. 25

    如何将变量值设置为每行零

  26. 26

    如何将数组与变量值合并

  27. 27

    如何将变量值插入表中?

  28. 28

    将变量值传递给 URL

  29. 29

    如何从GULP将变量值注入JS文件

热门标签

归档