diff --git a/src/addins/tmpl/MANIFEST.XML b/src/addins/tmpl/MANIFEST.XML
new file mode 100644
index 0000000000..eb28e4669f
--- /dev/null
+++ b/src/addins/tmpl/MANIFEST.XML
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/addins/tmpl/release.bat b/src/addins/tmpl/release.bat
index 7c5c3082f5..648eb36f3b 100644
--- a/src/addins/tmpl/release.bat
+++ b/src/addins/tmpl/release.bat
@@ -1,2 +1,63 @@
+@echo off
+
+:: Установить переменную
+set LIB_NAME=opi_addin
+set OPENSSL_DIR=C:\msys64\mingw64
+set OPENSSL_LIB_DIR=%OPENSSL_DIR%\lib
+set OPENSSL_INCLUDE_DIR=%OPENSSL_DIR%\include
+
+
+:: Перейти в директорию проекта
+cd /d "%~dp0"
+
+:: Создать папку для артефактов
+set OUTPUT_DIR=artifacts
+if not exist "%OUTPUT_DIR%" mkdir "%OUTPUT_DIR%"
+
+:: Сборка для x86_64-pc-windows-msvc
cargo build --release --target x86_64-pc-windows-msvc
-cargo zigbuild --release --target x86_64-unknown-linux-gnu
\ No newline at end of file
+if errorlevel 1 goto :error
+
+:: Сборка для x86_64-unknown-linux-gnu
+cargo zigbuild --release --target x86_64-unknown-linux-gnu
+if errorlevel 1 goto :error
+
+:: Сборка для i686-pc-windows-msvc
+cargo build --release --target i686-pc-windows-msvc
+if errorlevel 1 goto :error
+
+:: Сборка для i686-unknown-linux-gnu
+cargo zigbuild --release --target i686-unknown-linux-gnu
+if errorlevel 1 goto :error
+
+:: Копирование файлов .dll и .so
+copy /y target\x86_64-pc-windows-msvc\release\%LIB_NAME%.dll "%OUTPUT_DIR%\AddIn_x64_windows.dll"
+if errorlevel 1 goto :error
+
+copy /y target\i686-pc-windows-msvc\release\%LIB_NAME%.dll "%OUTPUT_DIR%\AddIn_x86_windows.dll"
+if errorlevel 1 goto :error
+
+copy /y target\x86_64-unknown-linux-gnu\release\lib%LIB_NAME%.so "%OUTPUT_DIR%\AddIn_x64_linux.so"
+if errorlevel 1 goto :error
+
+copy /y target\i686-unknown-linux-gnu\release\lib%LIB_NAME%.so "%OUTPUT_DIR%\AddIn_x86_linux.so"
+if errorlevel 1 goto :error
+
+copy /y MANIFEST.XML "%OUTPUT_DIR%\MANIFEST.XML"
+if errorlevel 1 goto :error
+
+:: Архивация
+set ZIP_NAME=addin.zip
+powershell -Command "Compress-Archive -Path '%OUTPUT_DIR%\*' -Force -DestinationPath '%ZIP_NAME%'"
+if errorlevel 1 goto :error
+
+if exist "%OUTPUT_DIR%" (
+ rmdir /S /Q "%OUTPUT_DIR%"
+)
+
+@echo Build and packaging completed successfully.
+exit /b 0
+
+:error
+@echo An error occurred during the build or packaging process.
+exit /b 1
diff --git a/src/addins/tmpl/src/component/methods.rs b/src/addins/tmpl/src/component/methods.rs
index 5948deb225..17e3d74592 100644
--- a/src/addins/tmpl/src/component/methods.rs
+++ b/src/addins/tmpl/src/component/methods.rs
@@ -1,18 +1,4 @@
-use addin1c::{Variant};
-use crate::component::AddIn;
-
-pub fn send_message(obj: &AddIn, params: &[Variant]) -> String {
-
- let field1 = &obj.field1;
- params[0].get_string().unwrap_or("".to_string()) + field1
-
+pub fn method1() -> bool {
+ true
}
-pub fn amount(obj: &AddIn, params: &mut [Variant]) -> i32 {
-
- let result = params[0].get_i32().unwrap() + params[1].get_i32().unwrap();
- params[0].set_i32(999);
-
- result
-
-}
diff --git a/src/addins/tmpl/src/component/mod.rs b/src/addins/tmpl/src/component/mod.rs
index 6c32fd3eaa..191677f60e 100644
--- a/src/addins/tmpl/src/component/mod.rs
+++ b/src/addins/tmpl/src/component/mod.rs
@@ -7,27 +7,26 @@ use crate::core::getset;
// Синонимы
pub const METHODS: &[&[u16]] = &[
- name!("Метод1"), // 0
- name!("Сложение") // 1
+ name!("Method1"), // 0
+
];
// Число параметров функций компоненты
pub fn get_params_amount(num: usize) -> usize {
match num {
- 0 => 1,
- 1 => 2,
+ 0 => 0,
_ => 0,
}
}
// Соответствие функций Rust функциям компоненты
// Вызовы должны быть обернуты в Box::new
-pub fn cal_func(obj: &AddIn, num: usize, params: &mut [Variant]) -> Box {
+pub fn cal_func(obj: &mut AddIn, num: usize, params: &mut [Variant]) -> Box {
match num {
- 0 => Box::new(methods::send_message(&obj, ¶ms)),
- 1 => Box::new(methods::amount(&obj, params)),
- _ => Box::new(false),
+
+ 0 => Box::new(methods::method1()),
+ _ => Box::new(false), // Неверный номер команды
}
}
@@ -38,36 +37,27 @@ pub fn cal_func(obj: &AddIn, num: usize, params: &mut [Variant]) -> Box AddIn {
+ /// Создает новый объект
+ pub fn new() -> Self {
AddIn {
- field1: String::from(""),
- field2: 0
+ prop1: String::new()
}
}
-
- // Сюда просто нужно еще раз добавить имена полей
pub fn get_field_ptr(&self, index: usize) -> *const dyn getset::ValueType {
match index {
- 0 => &self.field1 as &dyn getset::ValueType as *const _,
- 1 => &self.field2 as &dyn getset::ValueType as *const _,
+ 0 => &self.prop1 as &dyn getset::ValueType as *const _,
_ => panic!("Index out of bounds"),
}
}
pub fn get_field_ptr_mut(&mut self, index: usize) -> *mut dyn getset::ValueType { self.get_field_ptr(index) as *mut _ }
}
-
// -------------------------------------------------------------------------------------------------
\ No newline at end of file
diff --git a/src/addins/tmpl/src/core/mod.rs b/src/addins/tmpl/src/core/mod.rs
index 550cf392f0..f8b632dcf0 100644
--- a/src/addins/tmpl/src/core/mod.rs
+++ b/src/addins/tmpl/src/core/mod.rs
@@ -18,7 +18,7 @@ impl Drop for AddIn {
impl RawAddin for AddIn {
fn register_extension_as(&mut self) -> &'static [u16] {
- name!("Test")
+ name!("Main")
}
fn get_n_props(&mut self) -> usize {
PROPS.len()
diff --git a/src/addins/tmpl/src/lib.rs b/src/addins/tmpl/src/lib.rs
index d08fdf4a06..50bfa2ae8f 100644
--- a/src/addins/tmpl/src/lib.rs
+++ b/src/addins/tmpl/src/lib.rs
@@ -31,7 +31,7 @@ pub unsafe extern "C" fn DestroyObject(component: *mut *mut c_void) -> c_long {
#[no_mangle]
pub extern "C" fn GetClassNames() -> *const u16 {
// small strings for performance
- name!("Main").as_ptr()
+ name!("Client").as_ptr()
}
#[allow(non_snake_case)]