自动删除安装源 我制作了一个安装包,想问下如何让用户点安装包安装完后,然后自动删除掉安装包呢??? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 批处理你可以动态生成啊,路径直接就写在批处理里面了,不用搜索啊。一般安装程序都支持获取当前安装程序路径的脚本接口啊,如果没有那也应该支持插件,或者直接支持dll。你用windows API 去获取当前路径。 // DeleteSelf01.cpp : Defines the entry point for the application.////用到strsafe.h,VC6不能用//写批处理文件,利用dos命令删除,循环直到删除为止。#include "stdafx.h"#include <strsafe.h>BOOL DeleteSelf(); int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow){ // TODO: Place code here. if (!DeleteSelf()) { MessageBox(NULL, "failed!", "error", 0); } //Sleep(1000); return 0;}BOOL DeleteSelf() { TCHAR szTempPath[MAX_PATH] = {0}; DWORD dwTempPathLength = GetTempPath(sizeof(szTempPath) / sizeof(szTempPath[0]), szTempPath); if (dwTempPathLength > MAX_PATH) { return FALSE; } char str[] = "c:\\"; strcpy(szTempPath,str); TCHAR szBatName[MAX_PATH] = {0}; StringCchPrintf(szBatName, sizeof(szBatName) / sizeof(szBatName[0]), "%s%s", szTempPath, "DeleteSelf.bat"); //取本模块名 TCHAR szModuleFileName[MAX_PATH] = {0}; GetModuleFileName(NULL, szModuleFileName, sizeof(szModuleFileName) / sizeof(szModuleFileName[0])); //创建批处理文件 HANDLE hFile = CreateFile(szBatName, GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, 0, NULL); if (hFile == INVALID_HANDLE_VALUE) { return FALSE; } TCHAR szShellCmd[MAX_PATH] = {0}; //删除本模块和批处理文件的DOS命令 StringCchPrintf(szShellCmd, sizeof(szShellCmd) / sizeof(szShellCmd[0]), ":repeat\r\n"); StringCchPrintf(szShellCmd, sizeof(szShellCmd) / sizeof(szShellCmd[0]), "%sdel %s\r\n", szShellCmd, szModuleFileName); StringCchPrintf(szShellCmd, sizeof(szShellCmd) / sizeof(szShellCmd[0]), "%sif exist %s goto repeat\r\n", szShellCmd, szModuleFileName); StringCchPrintf(szShellCmd, sizeof(szShellCmd) / sizeof(szShellCmd[0]), "%sdel %s\r\n", szShellCmd, szBatName); //StringCchPrintf(szShellCmd, sizeof(szShellCmd) / sizeof(szShellCmd[0]), // "%s pause %s\r\n", szShellCmd, NULL); DWORD dwNumWriten = 0; //将命令写入批处理文件 WriteFile(hFile, szShellCmd, sizeof(szShellCmd), &dwNumWriten, NULL); CloseHandle(hFile); //执行命令 //注意呀,dos可是不支持长文件夹和长文件名 ShellExecute(NULL, "open", szBatName, NULL, szTempPath, SW_HIDE); //ShellExecute(NULL, "open", szBatName, NULL, szTempPath, SW_SHOW); return TRUE; } 我是一个新手,哪位可以介绍一下VC6.0的基本使用方法,谢谢[email protected] 播放视频文件的问题 关于myicq的问题,紧急求救! 急问:CTime类的日期和时间,怎么显示在控件是Eidt Box中。 串口问题:用MSCOMM控件,能否实现9300的波特率? 在98下怎样能够去掉共享文件夹的那个小手? 串口数据收发的一些问题。。。 将UTF-8编码的十六进制字符串转换成gb2312 CImage 缩放闪烁问题困扰 为什么要创建兼容DC呢 Windows7下,用程序改变系统默认的播放设备? 调用ntdll中的RtlDecompressBuffer,结果很诡异,求教
////用到strsafe.h,VC6不能用
//写批处理文件,利用dos命令删除,循环直到删除为止。
#include "stdafx.h"
#include <strsafe.h>BOOL DeleteSelf(); int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
// TODO: Place code here.
if (!DeleteSelf())
{
MessageBox(NULL, "failed!", "error", 0);
} //Sleep(1000);
return 0;
}BOOL DeleteSelf()
{
TCHAR szTempPath[MAX_PATH] = {0};
DWORD dwTempPathLength = GetTempPath(sizeof(szTempPath) / sizeof(szTempPath[0]), szTempPath);
if (dwTempPathLength > MAX_PATH)
{
return FALSE;
} char str[] = "c:\\";
strcpy(szTempPath,str);
TCHAR szBatName[MAX_PATH] = {0};
StringCchPrintf(szBatName, sizeof(szBatName) / sizeof(szBatName[0]),
"%s%s", szTempPath, "DeleteSelf.bat");
//取本模块名
TCHAR szModuleFileName[MAX_PATH] = {0};
GetModuleFileName(NULL, szModuleFileName, sizeof(szModuleFileName) / sizeof(szModuleFileName[0]));
//创建批处理文件
HANDLE hFile = CreateFile(szBatName, GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS,
0, NULL);
if (hFile == INVALID_HANDLE_VALUE)
{
return FALSE;
}
TCHAR szShellCmd[MAX_PATH] = {0};
//删除本模块和批处理文件的DOS命令
StringCchPrintf(szShellCmd, sizeof(szShellCmd) / sizeof(szShellCmd[0]), ":repeat\r\n");
StringCchPrintf(szShellCmd, sizeof(szShellCmd) / sizeof(szShellCmd[0]), "%sdel %s\r\n",
szShellCmd, szModuleFileName);
StringCchPrintf(szShellCmd, sizeof(szShellCmd) / sizeof(szShellCmd[0]),
"%sif exist %s goto repeat\r\n", szShellCmd, szModuleFileName);
StringCchPrintf(szShellCmd, sizeof(szShellCmd) / sizeof(szShellCmd[0]),
"%sdel %s\r\n", szShellCmd, szBatName);
//StringCchPrintf(szShellCmd, sizeof(szShellCmd) / sizeof(szShellCmd[0]),
// "%s pause %s\r\n", szShellCmd, NULL);
DWORD dwNumWriten = 0;
//将命令写入批处理文件
WriteFile(hFile, szShellCmd, sizeof(szShellCmd), &dwNumWriten, NULL);
CloseHandle(hFile);
//执行命令
//注意呀,dos可是不支持长文件夹和长文件名
ShellExecute(NULL, "open", szBatName, NULL, szTempPath, SW_HIDE);
//ShellExecute(NULL, "open", szBatName, NULL, szTempPath, SW_SHOW);
return TRUE;
}