如题,不另用其它程序,哪位高人能告诉我吗?谢谢!

解决方案 »

  1.   

    打包时将msiexec.exe打进去就可以了。这个就是删除程序。在windows系统活页夹中可以找到。
      

  2.   

    在打包项目中添加文件msiexec.exe(一般在c:\windows\system32(系统目录中)找到)。  
     
    在文件系统视图中选择应用程序文件,在msiexec.exe上单击右键选择“创建快捷方式”,重命名快捷方式为“uninst”.  
     
    更改此快捷方式Argmuments为“/x  {产品ID}”,产品ID的值为打包项目的ProductCode属性值。
      

  3.   

    那怎么指定程序的ProductCode呢
      

  4.   

    ProductCode 就是安装包的一个属性值
      

  5.   

    自身的进程都没有关闭,怎么可能自己删除自己??
    考虑一下写一个批命令调用系统命令,强行把自己kill掉然后del
      

  6.   

    创建一个批处理文件
    让后调用该批处理文件删除自己和该文件批处文件内容如下://其中c:\test.exe换成自己的程序文件路径
    :del
    del "c:\test.exe"
    if exist "c:\test.exe" goto try
    del %0
      

  7.   

    namespace WindowsApplication1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
            [DllImport("kernel32.dll")]
            public static extern uint WinExec(string lpCmdLine, uint uCmdShow);
            private void button1_Click(object sender, EventArgs e)
            {
                string vBatFile = Path.GetDirectoryName(Application.ExecutablePath) + "\\temp.bat";
                using (StreamWriter vStreamWriter = new StreamWriter(vBatFile))
                {
                    vStreamWriter.Write(string.Format(
                        ":del\r\n" +
                        "del \"{0}\"\r\n" +
                        "if exist \"{0}\" goto try\r\n" +
                        "del %0\r\n", Application.ExecutablePath));
                }
                WinExec(vBatFile, 0);
                Close();
            }
        }
    }
      

  8.   

    經理論推敲跟實際BAT文件測試﹐zswang(伴水清清)(专家门诊清洁工) 的方法是可行的。
      

  9.   

    運行中的程序不可能自已刪除自已﹐必須通過別的程序或系統命令.
    所以刪除的方法是﹕
    1.調用別的程序或系統命令(如批處理文件﹑shell + cmd等)
    2.結束當前的程序
    注意一下延時就可以了
      

  10.   

    是写自杀程序吧?
    以前我用c++builder实现过,在MAIN中加入):
            CopyFile(start.c_str(),destfile.c_str(),false);
            if (__argc== 1)
            {
            char cmd[512];
            HANDLE org = OpenProcess(SYNCHRONIZE, TRUE, GetCurrentProcessId());
            wsprintf(cmd, __TEXT("%s %d \"%s\""), destfile.c_str(),org,start.c_str());
    //        wsprintf(cmd, __TEXT("%s %d \"%s\""), destfile.c_str(),org,start.c_str());        STARTUPINFO si;
            ZeroMemory(&si, sizeof(si));
            si.cb = sizeof(si);
            PROCESS_INFORMATION pi;
            CreateProcess(NULL, cmd, NULL, NULL, TRUE, 0, NULL, NULL, &si, &pi);
            Application->Terminate();
            }
            else
            {
            HANDLE hProcessOrig = (HANDLE)_ttoi(__targv[1]);
            WaitForSingleObject(hProcessOrig, INFINITE);
            CloseHandle(hProcessOrig);
            DeleteFile(__targv[2]);
            }
    ---------------------------
    用C#也能办到,但有些问题,比如
    destfile我是用CreateFile生成的临时文件,当窗口句柄dispose后应该自动删除的,在C++中是行的,在C#(xp下)不能自动删除,而且WaitForSingleObject不能等到句柄消失后返回,我现在是用等待的方法做到自杀,如果你的程序要用到DLL,你还得复制dll文件到民一目录