NSIS源码makenssi学习笔记

// nsis版本
const char *NSIS_VERSION="v2.46";
// 将标准输出重定向到文件当中
FILE *g_output=stdout;
// 指针的指针**
int main(int argc, char **argv)
/*
#include <stdio.h>
#include <iostream>
using namespace std;
int main(int argc, char** argv)
{
 // 定义一个字符指针数组
 char* arr[] = {"hello","world","yhxs3344.com"};
 // 定义一个指向指针的指针,arr为数组首地址==&arr[0]
 char **ppi = arr;
 // 输出第2个字符串(ppi+1),从第2个字符开始输出
 cout << *(ppi+1)+1 << endl; // 结果:"orld"
 // 暂停等待输入字符回车
 getchar();
 return 0;
}
*/
// 显示nsis的版本号
// fprintf格式化数据输出到一个缓冲区或文件
// fflush清除文件缓冲,文件以写方式打开时将缓冲区内容写入文件
 if (argc > 1 && !stricmp(argv[1], "/VERSION"))
 {
 fprintf(g_output,NSIS_VERSION);
 fflush(g_output);
 return 0;
 }
// The /V 开关及后面跟随的 0 ~ 4 数字设定了输出。0=无输出,1=仅错误,2=警告和错误,3=信息、警告和错误,4=全部输出。
 if (argc > 1 && argv[1][0]=='/' && (argv[1][1]=='v' || argv[1][1]=='V'))
 {
 tmpargpos++;
 if (argv[1][2] <= '2' && argv[1][2] >= '0')
 {
 no_logo=1;
 }
 }
// 代码中间功能,设置编译信息,提示信息
// makensis [选项 | script.nsi | - [...]]
/*
选项
/LICENSE 显示一个许可页面。
The /V 开关及后面跟随的 0 ~ 4 数字设定了输出。0=无输出,1=仅错误,2=警告和错误,3=信息、警告和错误,4=全部输出。
The /P 开关及后面跟随的 0 ~ 5 数字设定编译程序进程的优先级。 0=空闲, 1=低于正常, 2=正常 (默认), 3=高于正常, 4=高, 5=立即。
The /O 开关及后面跟随的记录文件告诉编译器输出记录到记录文件而不是屏幕。
/PAUSE 使得 makensis 在退出前暂停,当直接从 Windows 执行时非常有用。
/NOCONFIG 禁止包含 nsisconf.nsh 。没有这个参数的话,安装程序默认从 nsisconf.nsh 读取设置。
/CMDHELP 输出基本的命令用法信息(如果指定了命令),或所有命令(如果未指定命令)。
/HDRINFO 输出 makensis 编译的选项信息。
/NOCD 禁止把当前目录更改到 .nsi 文件。
使用 /D 开关一次或多次将会把符号添加到全局定义列表 (请看 !define)。
使用 /X 开关一次或多次将会执行你随后指定的代码。例如: "/XAutoCloseWindow false"
对脚本名指定一个破折号(-)将会通知 Makensis 把标准输入作为源来使用。
*/
// 调用build.write_output()进行exe文件写入即生成文件
 if (build.write_output())
 {
 if (build.display_errors)
 {
 fprintf(g_output,"Error - aborting creation processn");
 fflush(g_output);
 }
 return 1;
 }
// 生成主程序 开始输出信息
 FILE *fp = fopen(build_output_filename,"w+b");
 if (!fp)
 {
 ERROR_MSG("Can't open output filen");
 return PS_ERROR;
 }
© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容