Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

デスクトップへのショートカットの作成

418 views
Skip to first unread message

ak--ra

unread,
Jul 23, 2003, 11:40:05 AM7/23/03
to
現在、VB6(SP5)でアプリケーションの開発を行っています。
通常、ディストリビューションウィザードで作成したセットアップパッ
ケージでインストールを行ってもデスクトップにショートカットは作
成されません。そこで、私はわざわざショートカット(.LNK)を作成
してそれも一緒にパッケージに含めインストールされるようにして
います。
皆さんはどのようにされているのでしょうか?ほかに何かよい方
法はないのでしょうか?

また、ディストリビューションウィザードで指定した作業フォルダが
プログラムグループ内のショートカットの「作業フォルダ」にうまく
反映されない場合があるように思われますが(Setup.lstにはちゃ
んと登録されています)皆さんはそんな経験はありませんか?

Kaoru Kodaka

unread,
Jul 23, 2003, 12:30:20 PM7/23/03
to
かおく です。

On Thu, 24 Jul 2003 00:40:05 +0900
"ak--ra" <srx...@ybb.ne.jp> wrote:

> 皆さんはどのようにされているのでしょうか?ほかに何かよい方
> 法はないのでしょうか?

状況によりますが、Visual Studio Installer を使ったり、アプリ
ケーションの初期処理に、ショートカットファイル作成処理を組み
込む、なんて手もありますね。

---
Dim kaok As New MVP("for .net 2003-2004.")
kaok.Web = "http://www.antoine.st/"

yu1ro

unread,
Jul 24, 2003, 1:13:52 AM7/24/03
to
"ak--ra" <srx...@ybb.ne.jp> wrote in message
news:uMdczCTU...@tk2msftngp13.phx.gbl...

> 通常、ディストリビューションウィザードで作成したセットアップパッ
> ケージでインストールを行ってもデスクトップにショートカットは作
> 成されません。そこで、私はわざわざショートカット(.LNK)を作成
> してそれも一緒にパッケージに含めインストールされるようにして
> います。

kitaponです。

下記がご参考になると思います。
----------------------------------------
http://www.microsoft.com/japan/msdn/library/
プログラムでショートカットを作成する方法
簡単にショートカットを作成する方法があります。
まず、コードモジュールで、以下のように宣言します。

Declare Function fCreateShellLink _
Lib "STKIT432.DLL" _
(ByVal lpstrFolderName as String _
ByVal lpstrLinkName as String _
ByVal lpstrLinkPath as String _
ByVal lpstrLinkArgs as String ) As Long

最初のパラメータには、ショートカットを作成するフォルダを、
スタートメニューのプログラムフォルダを基点とした
相対パスで記述します。2番目のパラメータには、
ショートカットの名称を、3番目には、ファイルのパスを、
4番目のパラメータには、ショートカットに付けたい引数などを、
それぞれ記述します。
デスクトップ上にショートカットを作成するコードは、
実際には次のようになります。

iLong = fCreateShellLink("..\..\デスクトップ", _
"My Link to Success", "C:\Path\Success.exe","")
これを応用すれば、セットアップウィザードのソースコードを
編集することにより、ショートカットを作成するセットアップを
作ることが出来ます。
----------------------------------------

私の場合はfCreateShellLink()の代わりに
OSfCreateShellLink()を使用しています。
(STKIT432.DLLが必要ないためだったかな?)

また、"..\..\デスクトップ"はWin9Xではエラーになり
ショートカットが作成されないので、
エラートラップを入れて、もしエラーなら
フォルダー名を"..\..\デスクトップ"と、
半角にしてやっています。

Masashi Ohsawa

unread,
Jul 26, 2003, 6:58:05 AM7/26/03
to
┌── news:uZimiJaU...@TK2MSFTNGP09.phx.gbl
│日 付: Thu, 24 Jul 2003 14:13:52 +0900
│差出人: "yu1ro" <yu...@205.co.jp>
│件 名: Re: デスクトップへのショートカットの作成
└───────────────────── への返信です

大澤です。

かおくさんの回答にありました「Visual Studio Installer」を
利用すれば、特に追加のプログラムを書かなくても、簡単に
デスクトップにショートカットを作成する事ができますよ。

もっとも、ディストリビューションウィザードと
Visual Studio Installerとでは、その使い勝手が異なるので、
プログラムで対処するのも一つの手かも知れませんね。


> Declare Function fCreateShellLink _
> Lib "STKIT432.DLL" _
> (ByVal lpstrFolderName as String _
> ByVal lpstrLinkName as String _
> ByVal lpstrLinkPath as String _
> ByVal lpstrLinkArgs as String ) As Long

デスクトップに作成する事が目的なのであれば、個人的には
上記のAPIの使用はおすすめしません。というのは、この関数は
『プログラムフォルダ』以下にショートカットを作成するための
物であって、『デスクトップ フォルダ』以下に作成する機能を
有しているわけでは無いからです。

# 相対パス指定によって、デスクトップに作成できる可能性もありますが、
# 環境によっては、デスクトップのあるドライブと、プログラムフォルダの
# ドライブが同一では無い場合もありますので、そうした環境では、
# 相対パスでの指定が不可能という場合も少なくありません。


また、上記宣言中に書かれている“STKIT432.DLL”は、VB4の
「セットアップウィザード」(32bit版)が利用するDLLです。
そのため、VB4を持っていない人は再頒布できません。

一応VB6にも、“VB6STKIT.DLL”という同種のDLLがありますが、
そこに含まれている fCreateShellLink は、VB4の物とは仕様が異なって
いますので、上記APIを使う場合は、これらの点に注意する必要があります。

VB4当時は、ショートカットを作成する方法として、
上記のDLLが使われる事が多かったのですが、現在では、
・ShellLinkObjectオブジェクトを使う方法
・WshShortcutオブジェクトを使う方法
などが利用できますから、これらを使った方が、融通が効くかと思います。

あるいは、上記オブジェクトが利用できないような古い環境での
実行も考慮して、「IShellLinkインターフェイス」を使って
ショートカットを作成している方もおられるようです。


> 私の場合はfCreateShellLink()の代わりに
> OSfCreateShellLink()を使用しています。
> (STKIT432.DLLが必要ないためだったかな?)

それは、SETUP1.VBP の Common.bas で宣言されている
Public Declare Function OSfCreateShellLink Lib
"vb6stkit.dll" Alias "fCreateShellLink" ………
を利用されているのでは無いでしょうか。

上記宣言を見るとわかりますが、OSfCreateShellLink は
VB側で定義した「別名」であり、本来の関数名は
fCreateShellLink となっています。

なお、VB6STKIT.DLL の fCreateShellLink は、
VB4STKIT.DLL の同名関数とは、引数の仕様等が
異なっていますので、その点は注意が必要です。


--
Masashi Ohsawa <orat...@s2.ocv.ne.jp>
Microsoft MVP for Visual Basic (July 2003-June 2004)

kitapon

unread,
Jul 26, 2003, 11:28:57 AM7/26/03
to
"Masashi Ohsawa" <orat...@s2.ocv.ne.jp> wrote in message > 大澤です。

kitapon(yu1ro)です。

大澤さんいろいろご指摘ありがとうございました。

> かおくさんの回答にありました「Visual Studio Installer」を
> 利用すれば、特に追加のプログラムを書かなくても、簡単に
> デスクトップにショートカットを作成する事ができますよ。

VS Installerは相手の環境次第でSetUp用のファイルが大きく
なったり、2種類のファイルを用意したりで結構困っていますが、
どうされてますか?

# 尚、行間にそこはかとなく漂う当方への反感は、多分
# >>簡単にショートカットを作成する方法があります。
# >>まず、コードモジュールで、....
# のような文体に対してのものと思われますが、
# これはMSDNからのコピペですので、念のため。
# (もちろん、相対パスを使用する方法も)

Masashi Ohsawa

unread,
Jul 27, 2003, 1:50:31 AM7/27/03
to
┌── news:%23QOclq4...@tk2msftngp13.phx.gbl
│日 付: Sun, 27 Jul 2003 00:28:57 +0900

│差出人: "yu1ro" <yu...@205.co.jp>
│件 名: Re: デスクトップへのショートカットの作成
└───────────────────── への返信です

> > かおくさんの回答にありました「Visual Studio Installer」を
> > 利用すれば、特に追加のプログラムを書かなくても、簡単に
> > デスクトップにショートカットを作成する事ができますよ。

Visual Studio Installerの使用は、今回の
『デスクトップにショートカットを作成する』という目的に
使う分には、簡単な解決方法の一つであると思います。

しかし、これには別の問題もあったりします。(^_^;)

例えば、VS Installerには、「インストールしたユーザー」以外の
環境にショートカットが作成されないという問題(※1)があります。
(まぁ、この点はOrcaを使えば解決できますけれど)

ですから、(先の投稿にも書きましたように)配布方法は現状のまま変更せず、
『プログラムで対処する』という選択肢も有効であるとは思います。

ご自身の要件に最も適していると思われる方法を利用して下さい。
(自分で対処する場合は、デスクトップのパスを調べるコードも必要ですね)


> VS Installerは相手の環境次第でSetUp用のファイルが大きく
すみません、運用方法に関しては、私は回答できないです。m(_ _)m

業務でプログラムを書く時は、再頒布用のセットアップを CD-Rに
焼いてしまうので、セットアップのサイズに悩んだ事が無いので。。。(^^;)

# セットアップのビルド構成として、単なる『インストーラ』ではなく、
# 『Windows インストーラ ローダ付きインストーラ』を選択した場合でも
# せいぜい数MB程度の増加なので、CD-Rによる再頒布においては、
# 今の所、あまり問題になっていません。

また、業務以外でプログラムを書く事もありますが、その場合は主に
(一般ユーザ向けのアプリではなく)、VB開発者向けのサンプルとして
書いたソースコードを公開する事が殆どなので、exeやランタイムを
配布する事が無いのです。


> # 尚、行間にそこはかとなく漂う当方への反感は、多分
あれれ、反感などは全く無かったのですが。。。(;_;)

指摘したかったのは、主に、
> > > (STKIT432.DLLが必要ないためだったかな?)
の点に対してだったのですが、反感と思われるような文章に
なっていたようであれば、その点はお詫びします。


> # これはMSDNからのコピペですので、念のため。
あ、それは了解しています。具体的には、下記のURL(※2)ですよね。(^-^A
http://www.microsoft.com/japan/msdn/vs_previous/vbasic/Resource/tips.htm

ただ、この記事は VB4~VB5の頃に書かれた物であり、現在では
より融通のきく方法も登場していますよ、という事です。

そして、先の投稿では、fCreateShellLink 以外の方法(※3)として、
> > ・ShellLinkObjectオブジェクトを使う方法
> > ・WshShortcutオブジェクトを使う方法
を紹介させていただいたわけです。

ちなみに、個人的には「IShellLinkインターフェイス」を使って
作成する方法が一番好きなのですが……IShellLinkを使うには
タイプライブラリ(※4)を用意しなくてはいけないのが難点です。

│(※1)
VS.NETのデプロイメントプロジェクトでは、この問題が改善されています。

│(※2)
http://support.microsoft.com/?kbid=155303

│(※2)
│ショートカットの作成については、以前、Users Groupにて回答した事が
│ありますので、その当時の過去ログが参考になるかもしれません。
http://www.users.gr.jp/ml/archive/viewer.aspx?name=vb&no=1208
http://www.users.gr.jp/ml/archive/viewer.aspx?name=vb&no=5677
http://www.users.gr.jp/ml/archive/viewer.aspx?name=vb&no=5678
http://www.users.gr.jp/ml/archive/viewer.aspx?name=vb&no=5679

│(※3)
│私の作成した物でも良ければ、下記にてタイプライブラリを
│公開しています。ただし、内容に付いては無保証となりますが。
http://www.ocv.ne.jp/~oratorio/windev/vb/CreateShortcut.CAB

kitapon

unread,
Jul 27, 2003, 9:57:09 PM7/27/03
to
"Masashi Ohsawa" <orat...@s2.ocv.ne.jp> wrote in message

kitapon(yu1ro)です。

> # 『Windows インストーラ ローダ付きインストーラ』を選択した場合でも
> # せいぜい数MB程度の増加なので、CD-Rによる再頒布においては、
> # 今の所、あまり問題になっていません。

なるほど...。 
当方はDownLoad用のインストーラを用意することが多いので、
つい、皆さんも同じように悩んでおられると思っていました。

> > # 尚、行間にそこはかとなく漂う当方への反感は、多分
> あれれ、反感などは全く無かったのですが。。。(;_;)

すみません。
生来のひがみっぽい性格のため、話をややこしくしてしまいました。
お詫びします。

> ちなみに、個人的には「IShellLinkインターフェイス」を使って
> 作成する方法が一番好きなのですが……IShellLinkを使うには

参考にさせていただきます。
では、また。

0 new messages