net自定义安装程序快捷方式

创建快捷方式对于绝大多数 Windows 用户来说都是小菜一碟了,然而,这项工作却为程序员带来不少麻烦。.NET 没有提供简便直接的创建快捷方式的方法,那么在 .NET 中我们如何为应用程序创建快捷方式呢?

1. 快捷方式文件

快捷方式实质上是一个扩展名为 .LNK 的文件。右击一个快捷方式文件并选择属性,跳到快捷方式选项卡,如图2所示:

你可以看到一个快捷方式包含如下数据:

  • 快捷方式的名字
  • 快捷方式所指向的目标所在的位置
  • 快捷方式所指向的目标的工作目录
  • 激活该快捷方式的热键
  • 快捷方式所指向的目标运行时的窗口风格(普通、最大化和最小化)
  • 该快捷方式的描述性文字
  • 快捷方式的图标所在的位置

2. 使用 WSH 创建快捷方式

2.1 添加 WSH 的引用

这里我使用 Visual C# 2005 Express Edition Beta 2 来开发的,添加引用的方法非常简单,右击你的项目并选择添加引用,选择 COM 选项卡并选择 Windows Script Host Object Model,如图3所示:

2.2 创建你的快捷方式

创建一个快捷方式的完整代码如下:

// Code #01

using System;
using IWshRuntimeLibrary;

class Program
{
    static void Main(string[] args)
    {
        WshShell shell = new WshShell();
        IWshShortcut shortcut = (IWshShortcut)shell.CreateShortcut(
            Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) +
            "\\" + "Allen‘s Application.lnk"
            );
        shortcut.TargetPath = System.Reflection.Assembly.GetExecutingAssembly().Location;
        shortcut.WorkingDirectory = System.Environment.CurrentDirectory;
        shortcut.WindowStyle = 1;
        shortcut.Description = "Launch Allen‘s Application";
        shortcut.IconLocation = System.Environment.SystemDirectory + "\\" + "shell32.dll, 165";
        shortcut.Save();
    }
}

首先,我们创建一个 WshShell 的实例对象,接着通过该对象的 CreateShortcut 方法来创建 IWshShortcut 接口的实例对象,传递给 CreateShortcut 方法的参数是将要创建的快捷方式的完整路径(包括该快捷方式的名字)。接下来,我们就要设置 IWshShortcut 实例对象的相关属性值了。

2.3 设置快捷方式的属性

2.3.1 TargetPath

该属性仅用于设置或者读取快捷方式的目标所在的位置。Code #01 中,将要创建的快捷方式指向本应用程序。

2.3.2 WorkingDirectory

该属性指定应用程序的工作目录,当用户没有指定一个具体的目录时,快捷方式的目标应用程序将使用该属性所指定的目录来装载或保存文件。

2.3.3 WindowStyle

该属性指定快捷方式的目标应用程序的窗口为普通(原始)状态、最小化或者最大化。对比图1中 Run 下拉菜单的项,该属性的值及其意义如下:


Value

Meaning
1 Normal window
3 Maximized
7 Minimized

2.3.4 Description

该属性设置用于设置或者读取快捷方式的附加说明。

2.3.5 IconLocation

该属性用于指定快捷方式的图表的所在位置,它的值包含一个完整的路径和一个索引值。Code #01 中,快捷方式的图标被设定为系统文件夹中的 Shell32.dll 文件所包含的第165个图标。

2.4 生成快捷方式

CreateShortcut 仅仅创建一个 IWshShortcut 的实例对象,它不会为你生成任何快捷方式,当一切就绪后,你必须调用 IWshShortcut.Save 方法才能生成快捷方式文件。

3. 活用快捷方式简化操作

想象一下你的应用程序支持命令行参数组合运行,例如:

App /out:output.txt /sortby:date /desc

而你又希望只需要轻轻按下 CTRL+ALT+F11 就可以直接启动这项功能,这时你就需要用到 IWshShortcut 的 Arguments 和 Hotkey 两个属性了:

// Code #02

shortcut.Arguments = "/out:output.txt /sortby:date /desc";
shortcut.Hotkey = "CTRL+ALT+F11";

注意:Hotkey 属性的值里面不能包含空格。

你可以在应用程序里面像平常那样处理命令行参数:

// Code #03

class Program
{
    static void Main(string[] args)
    {
        foreach (string arg in args)
        {
            Console.WriteLine(arg);
        }
    }
}

// Output:
//
// /out:output.txt
// /sortby:date
// /desc

现在,你把这个快捷方式放到桌面,每当你需要运行的时候,轻轻的按下 CTRL+ALT+F11 就行了,Cool ~ ~ ~

Appendix A

Mattias Sjogren 创建了一个名叫 ShellShortcut 的包装类(wrapper class),你可以在你的项目中直接使用它。有兴趣的话,你也可以对其进行一番研究。

注:以上部分为摘抄

按照上面的创建出一个链接后,想删除掉怎么办了。发现这个类里面没有相应的删除函数,仔细想想,这个链接应该是个文件,应该可以拿删除文件的方法来删除。上网一查,还真是,呵呵。做法是:能

先用找到链接相应的路径,然后查看链接文件是否存在,如果存在就将是删除掉。

我自己的代码:

string filepath = Environment.GetFolderPath(Environment.SpecialFolder.Startup) +

"\\" + "XXX.lnk";

if(System.IO.File.Exists(filepath))

{

System.IO.File.Delete(filepath);

}

以下部分为摘抄:

原文地址:
http://www.codeproject.com/KB/cs/SharpWipe.aspx
您可以在上述地址中获得源代码

事实上,调用File.Delete并没有删除文件,它只是让操作系统认为文件不存在,文件在磁盘上的空间被标记成空的,以便用于再次使用。但是文件的数据没有被移除,您可以非常容易恢复。被删除的文件直到相应的空间被重写才会真消失,这也许要很长时间。

作者提供了一个简单的类,它被用来在删除文件之前向文件写入垃圾数据,这样就令文件的数据不再存在。
为了实现这一步,需将文件大小置为0字节,并且修改了文件日期。不过,修改文件日期只能在FAT16/32上有效,在NTFS上就没效果。

在使用Ontrack EasyRecovery,PC Inspector File Recovery和GetDataBack测试后,已经做到不能恢复任何文件了。在删除一个文本文件后,我即使运行Investigator,确认独立的簇,还是无法从这文件得到一个文字。

        代码
        你只需要调用一个方法:WipeFile,下面是这个方法的代码:
如果你调用了WipeFile,你需要提供要删除文件的绝对路径和你想重写数据的次数。
public void WipeFile(string filename, int timesToWrite)
{
    try {
        if (File.Exists(filename)){
            File.SetAttributes(filename, FileAttributes.Normal); //设置文件的属性为正常,这是为了防止文件是只读
            double sectors = Math.Ceiling(new FileInfo(filename).Length/512.0); //计算文件中的扇区数目
            byte[] dummyBuffer = new byte[512]; // 创建一个扇区大小的虚拟缓存
            RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider(); //创建一个加密随机数目生成器这是我用来生成垃圾数据的。
            FileStream inputStream = new FileStream(filename, FileMode.Open);  //打开这个文件的FileStream
            for (int currentPass = 0; currentPass < timesToWrite; currentPass++){
                UpdatePassInfo(currentPass + 1, timesToWrite);
                inputStream.Position = 0;
                // 循环所有的扇区
                for (int sectorsWritten = 0; sectorsWritten < sectors; sectorsWritten++){
                    UpdateSectorInfo(sectorsWritten + 1, (int) sectors);
                   // 把垃圾数据填充到流中
                    rng.GetBytes(dummyBuffer);
                    inputStream.Write(dummyBuffer, 0, dummyBuffer.Length);           
                    sectorsWritten++;
                }
            }
            inputStream.SetLength(0);
            inputStream.Close();
            // 原始日期需要清空
            DateTime dt = new DateTime(2037, 1, 1, 0, 0, 0);
            File.SetCreationTime(filename, dt);
            File.SetLastAccessTime(filename, dt);
            File.SetLastWriteTime(filename, dt);
            File.Delete(filename); // 最后删除文件

WipeDone();
        }
    }
    catch(Exception e){
        WipeError(e);
    }
}

作者还添加了几个事件,以便在处理过程中知道发生什么
•PassInfoEvent-返回哪个通道正在运行,和运行的通道的总数。
•SectorInfoEvent-返回哪个硬盘扇区正在被写上数据,和扇区的总数
•WipeDoneEvent-wipe处理过程完成的指示器

•WipeErrorEvent-如果发生错误就返回一个异常

net自定义安装程序快捷方式

时间: 2024-10-05 06:38:47

net自定义安装程序快捷方式的相关文章

C#制作自定义安装程序

(一),安装程序 以前用vs制作过安装程序,现在把步骤写出来,有帮助的大家一定要顶哦 第一步:建立工程 1.打开vs,新建项目->其他项目类型->安装和部署(這個子项下面有安装项目和Web安装项目等,安装项目就是普通的桌面程序安装,Web安装就是安装网站,通常安装到IIS下,这里以普通桌面程序安装为例),新建安装项目,命名为SetupTest. 2.新建工程后,可以在“解决方案资源管理器”里面看到子项:文件系统编辑器,注册表编辑器,文件类型编辑器,用户界面编辑器,自定义操作编辑器,启动条件编辑

【转载】VS与Win7共舞:UAC惹祸 如何进行安装程序检测?

文本Tag: Visual Studio 微软 windows 7 [IT168 专稿]随着Windows Vista引入UAC(User Access Control)机制,默认情况下,应用程序都运行在普通用户权限下.虽然微软出于良好的愿望而在Vista中引入UAC机制, 但是在Vista操作系统中,只要系统稍作改变,它就会频繁弹出对话框来寻求用户的许可,因此它成为了Vista中最受痛恨的一个功能. 虽然如此,Windows 7还是继承了这一机制并根据用户的反馈做了相应的改进.为了降低计算机系

gnome3增加自定义程序快捷方式

1. 安装alacarte 在命令行输入下列命令安装alacarte程序 yum -y install alacarte 安装完毕后,在命令行输入下列命令即可启动alacarte来管理所有程序的快捷方式 #alacarte 你可以在你要添加快捷方式的位置点击New Item按钮来添加快捷方式,这里和gnome2操作是一样的 2.手动增加快捷方式配置文件 Desktop Entry 文件以".desktop"为后缀名,保存程序.desktop文件的目录有下面两个: 保存用户的应用程序快捷

C# winform 安装程序打包(自定义操作)

(一),安装程序 以前用vs制作过安装程序,现在把步骤写出来,有帮助的大家一定要顶哦 第一步:建立工程1.打开vs,新建项目->其他项目类型->安装和部署(這個子项下面有安装项目和Web安装项目等,安装项目就是普通的桌面程序安装,Web安装就是安装网站,通常安装到IIS下,这里以普通桌面程序安装为例),新建安装项目,命名为SetupTest. 2.新建工程后,可以在“解决方案资源管理器”里面看到子项:文件系统编辑器,注册表编辑器,文件类型编辑器,用户界面编辑器,自定义操作编辑器,启动条件编辑器

【转】C# winform 安装程序打包(自定义操作)

(一),安装程序 以前用vs制作过安装程序,现在把步骤写出来,有帮助的大家一定要顶哦 第一步:建立工程1.打开vs,新建项目->其他项目类型->安装和部署(這個子项下面有安装项目和Web安装项目等,安装项目就是普通的桌面程序安装,Web安装就是安装网站,通常安装到IIS下,这里以普通桌面程序安装为例),新建安装项目,命名为SetupTest. 2.新建工程后,可以在“解决方案资源管理器”里面看到子项:文件系统编辑器,注册表编辑器,文件类型编辑器,用户界面编辑器,自定义操作编辑器,启动条件编辑器

制作c#安装程序/使用安装服务类自定义安装事件

第一步:建立工程 1.打开vs,新建项目->其他项目类型->安装和部署(),新建安装项目,命名为SetupTest. 2.新建工程后,可以在“解决方案资源管理器”里面看到子项:文件系统编辑器,注册表编辑器,文件类型编辑器,用户界面编辑器,自定义操作编辑器,启动条件编辑器.下面将会举例来说明各个地方怎么使用. 3.最简单的一个安装程序:点击“文件类型编辑器”,找到“应用程序文件夹”,添加->文件,选择你要打包的程序文件(譬如我的程序有run.exe和lib.dll组成),确定.在项目“Se

c#自动更新+安装程序的制作 (转)

c#自动更新+安装程序的制作 (转)  http://blog.csdn.net/myhuli120/article/details/6927588 一.自动更新的实现 让客户端实现自动更新,通常做法是在客户端部署一个单独的自动更新程序.主程序启动后,访问服务端,检查配置文件是 否有更新版本,有更新版本就启动更新程序,由更新负责下载更新版本,并更新客户端程序,流程如下: 当流程进行到红色部分的是后就调用更新程序进行更新. 1)版本判断: 客户端和服务端都部署同一个版本文件,客户端登陆时发送验证给

[转]一个完整的Installshield安装程序实例

Installshield安装程序实例—基本设置一 前言 Installshield可以说是最好的做安装程序的商业软件之一,不过因为功能的太过于强大,以至于上手和精通都不是容易的事情,之前都是用Installshield的Project Assistant对付过去的,这次做这个安装程序,为了实现一些功能,必须写代码,国内外现成的资料很少,而且很多都语焉不详,自己反复啃了多次,对比Installshiel自带的help,才明白资料所表达的意思.这个安装程序虽然比较简陋,在行家眼里可能是小菜一碟,但

用 NSIS 制作安装程序

用 NSIS 制作安装程序 最近要给自己写的一个小程序做个安装程序.我的程序是用Qt开发的,所以本来想研究一下 Qt Installer Framework. 但是用 Qt Installer Framework 做安装程序好像还挺麻烦,研究了一会儿没有什么头绪,所以就暂时放弃了.然后就在网上随便搜了搜,发现有个 NSIS,看介绍还比较简单,就试着用了用,感觉还可以.这篇其实就是我学习 NSIS 时的一个学习笔记. NSIS(Nullsoft Scriptable Install System)