通过我的 C# 代码自动编译 .au3 脚本

Posted

技术标签:

【中文标题】通过我的 C# 代码自动编译 .au3 脚本【英文标题】:Automatically compile a .au3 script via my C# code 【发布时间】:2020-06-02 19:28:22 【问题描述】:

我正在尝试自动编译 .Au3 脚本代码,然后运行它。 我自动更新脚本(au3 文件),但要在我更新脚本时它工作,必须先编译它(使用新脚本)。 运行 .exe 文件没有问题,我的问题是在运行它之前找不到编译它的代码。 这就是我运行可执行文件的方式:

 Process.Start(@"C:\Users\XX\Documents\visual studio 2017\Projects\TESTING TEXT\TESTING TEXT\bin\Debug\XX.exe");

但是在我运行我的可执行文件之前,我需要编译脚本。有什么帮助吗?

【问题讨论】:

我已经有一段时间没有使用 AutoIt 但他们没有.Net 库吗?到目前为止,您在尝试编译 Au3 文件时尝试过什么? 真的需要编译吗?您可以使用AutoIt3.exe myScript.au3 直接运行脚本(无需显式编译)。 Source 你有代码吗,我以前从未见过?非常感谢您的帮助 【参考方案1】:

看看这个文档:https://www.autoitscript.com/autoit3/docs/intro/compiler.htm

您应该能够调用命令行实用程序Aut2exe.exe,以从另一个应用程序进行编译。


这里的语法是

Aut2exe.exe /in c:\path\to\your\script.au3 /out c:\path\to\save\app.exe /icon c:\path\to\icon.ico /x64

所以要从 C# 执行这个,它会是这样的

Process.Start('c:\path\to\Aut2exe.exe', '/in c:\path\to\your\script.au3 /out c:\path\to\save\app.exe /icon c:\path\to\icon.ico /x64')

【讨论】:

那么我是否使用C#通过命令行执行代码,它应该可以工作? 您几乎可以使用任何您想调用 exe 的语言来处理另一个文件。如果需要,您可以使用批处理脚本。 看来您会使用Process.start('Aut2exec.exe', 'arguments go here'),您可能需要确保包含该可执行文件的 autoit 目录位于 Windows 的 PATH 中。 谢谢,但我太确定我需要使用的论点。 (我很新) @ShawnCoker 我的答案中的链接会告诉您Aut2exe.exe 程序采用哪些参数以及如何使用它们。【参考方案2】:

我可以向您推荐另一种方法。我用 Window 批处理程序做同样的事情。它允许编译 AutoIt,准备一个包并生成一个安装程序。

这个 Windows 批处理程序的主要步骤是:

为应用程序分配一个版本号并配置创建包和生成 Windows 安装程序的脚本。 使用 theaut2exe 编译器通过主入口点 myApplication.au3 编译应用程序; 将应用程序正常运行所需的资产(图像、文件……)复制到输出目录中; 创建 zip 存档以恢复应用程序; 最后通过编译相关的 InnoSetup 脚本来构建安装程序。

打包应用程序和生成安装程序的所有步骤都可以从 Windows 批处理驱动。您可以在此处查看文档:https://autoit-gui-skeleton.github.io//documentation/creating-setup-package-autoit-application

AutoIt 程序是使用 aut2exe 二进制文件从命令行编译的。警告,这最后一项是必须在操作系统的环境PATH变量中通知的。

# Set variables
(...)
set AUT2EXE_ARGS=/in "%FOLDER_SRC%\%AUT2EXE_AU3%" /out "%FOLDER_OUT%\%NAME_EXE%" /icon
aut2exe %AUT2EXE_ARGS%
echo Compilation AutoIt is finished.

AGS Windows 批处理乐队主管

::------------------------------------------------------------------------------
::
::    Copyright © 2018-05
::
::    @name           : AGS-deployment-setup
::    @version        : 1.0.1
::    @AGS package    : AGS v1.0.0
::    @AutoIt version : v3.3.14.5
::    @authors        : 20100 <vb20100bv@gmail.com>
::
::------------------------------------------------------------------------------


cls
@echo off

:: Change value for this variables
set VERSION=0.9.0
set NAME_PROJECT=ApplicationWithCheckForUpdates

:: Deployment variables
set FOLDER_CURRENT=%cd%
set NAME_EXE=%NAME_PROJECT%_v%VERSION%.exe
set FOLDER_SRC=%FOLDER_CURRENT%\..\
cd %FOLDER_SRC%
set FOLDER_SRC=%cd%
set FOLDER_OUT=%FOLDER_CURRENT%\v%VERSION%\%NAME_PROJECT%_v%VERSION%

:: AutoIt compiler
Set AUT2EXE_AU3=ApplicationWithCheckForUpdates.au3
set AUT2EXE_ICON=%FOLDER_SRC%\assets\images\myApplication.ico
set AUT2EXE_ARGS=/in "%FOLDER_SRC%\%AUT2EXE_AU3%" /out "%FOLDER_OUT%\%NAME_EXE%" /icon "%AUT2EXE_ICON%"

:: Path binaries
set ZIP_CLI="C:\Program Files\7-Zip\7z.exe"
set ISCC_CLI="C:\Program Files (x86)\Inno Setup 5\ISCC.exe"
set ISCC_SCRIPT=AGS-deployment-setup.iss


echo.
echo.
echo      [  AGS-deployment-setup  ]
echo.     
echo.


echo ----[ Variables for generation ]----
echo * VERSION        = %VERSION%
echo * NAME_PROJECT   = %NAME_PROJECT%
echo * FOLDER_CURRENT = %FOLDER_CURRENT%
echo * NAME_EXE       = %NAME_EXE%
echo * FOLDER_SRC     = %FOLDER_SRC%
echo * FOLDER_OUT     = %FOLDER_OUT%
echo * AUT2EXE_ICON   = %AUT2EXE_ICON%
echo * AUT2EXE_AU3    = %AUT2EXE_AU3%
echo * AUT2EXE_ARGS   = %AUT2EXE_ARGS%
echo * ZIP_CLI        = %ZIP_CLI%
echo * ISCC_CLI       = %ISCC_CLI%
echo * ISCC_SCRIPT    = %ISCC_SCRIPT%
echo -------------------------------------

echo.
echo.

echo ----[ Step 1/7 - Creating directories ]----
cd %FOLDER_CURRENT%
echo * Attempt to create : "%cd%\v%VERSION%\"
mkdir v%VERSION%
cd v%VERSION%
echo.
echo * Attempt to create : %cd%\%NAME_PROJECT%_v%VERSION%\
mkdir %NAME_PROJECT%_v%VERSION%
cd %FOLDER_CURRENT%
echo -------------------------------------

echo.
echo.


echo ----[ Step 2/7 - Launch AutoIt compilation ]----
echo * Run compilation with aut2exe and AUT2EXE_ARGS.
aut2exe %AUT2EXE_ARGS%
echo * Compilation AutoIt is finished.
echo -------------------------------------

echo.
echo.


echo ----[ Step 3/7 - Copy assets files ]----
echo * Create the file xcopy_EXCLUDE.txt in order to ignore some file and directory.
echo .au3 > xcopy_Exclude.txt
echo /releases/ >> xcopy_Exclude.txt
echo /src/ >> xcopy_Exclude.txt
echo /vendor/ >> xcopy_Exclude.txt
echo *   - ignore all .au3 files
echo *   - ignore all .pspimage files
echo * The file xcopy_EXCLUDE.txt is created.
echo.
echo * Copy additional files store in assets, config, docs directories
xcopy "%FOLDER_SRC%\assets" "%FOLDER_OUT%\assets\" /E /H /Y /EXCLUDE:xcopy_Exclude.txt
xcopy "%FOLDER_SRC%\config" "%FOLDER_OUT%\config\" /E /H /Y /EXCLUDE:xcopy_Exclude.txt
xcopy "%FOLDER_SRC%\docs" "%FOLDER_OUT%\docs\" /E /H /Y /EXCLUDE:xcopy_Exclude.txt
@copy "%FOLDER_SRC%\package.json" "%FOLDER_OUT%\package.json" /Y > log
echo "%FOLDER_SRC%\package.json" is copied.
@copy "%FOLDER_SRC%\README.md" "%FOLDER_OUT%\README.md" /Y > log
echo "%FOLDER_SRC%\README.md" is copied.
echo * Ok all files and directory are copied.
echo.
echo * Delete xcopy_Exclude.txt.
del xcopy_Exclude.txt
del log
echo -------------------------------------

echo.
echo.


echo ----[ Step 4/7 - Create additional files ]----
echo * Create file ".v%VERSION%" in FOLDER_OUT.
cd %FOLDER_OUT%
echo Last compilation of application %NAME_PROJECT% version %VERSION% the %date% at %time% > .v%VERSION%
echo * This file has been created.
echo -------------------------------------

echo.
echo.


echo ----[ Step 5/7 - Create zip archive ]----
echo * Move in the folder %FOLDER_CURRENT%\v%VERSION%
cd %FOLDER_CURRENT%\v%VERSION%
echo * Zip the folder %NAME_PROJECT%_v%VERSION%
%ZIP_CLI% a -tzip %NAME_PROJECT%_v%VERSION%.zip "%NAME_PROJECT%_v%VERSION%
echo * The zip has been created.
echo -------------------------------------

echo.
echo.

echo ----[ Step 6/7 - Make setup with InnoSetup command line compilation ]----
cd %FOLDER_CURRENT%
echo * Launch compilation with iscc
%ISCC_CLI% %ISCC_SCRIPT% /dApplicationVersion=%VERSION% /dApplicationName=%NAME_PROJECT%
echo.
echo * Compilation has been finished.
echo -------------------------------------

echo.
echo.

echo ----[ Step 7/7 - Delete temp folder use for ISS compilation ]----
cd %FOLDER_CURRENT%
echo * Delete the folder %FOLDER_CURRENT%\v%VERSION%\%NAME_PROJECT%_v%VERSION%\
rmdir %FOLDER_CURRENT%\v%VERSION%\%NAME_PROJECT%_v%VERSION% /S /Q
echo -------------------------------------

echo.
echo.

cd %FOLDER_CURRENT%
echo ----[ End process ]----
echo.

【讨论】:

以上是关于通过我的 C# 代码自动编译 .au3 脚本的主要内容,如果未能解决你的问题,请参考以下文章

求WINRAR3.9 AU3自动安装脚本

自动化篇 | PC 端这款黑科技录制脚本,完爆按 X 精灵!

每隔60秒拍摄一次屏幕截图

autoit如何获取js动态加载的网页对象,这是个au3脚本问题

有没有办法通过ANT或其他一些构建自动化系统自动生成JWG文件/编译Openscript文件?

通过脚本(C#) Unity5添加组件脚本