また、ディストリビューションウィザードで指定した作業フォルダが
プログラムグループ内のショートカットの「作業フォルダ」にうまく
反映されない場合があるように思われますが(Setup.lstにはちゃ
んと登録されています)皆さんはそんな経験はありませんか?
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/"
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ではエラーになり
ショートカットが作成されないので、
エラートラップを入れて、もしエラーなら
フォルダー名を"..\..\デスクトップ"と、
半角にしてやっています。
大澤です。
かおくさんの回答にありました「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(yu1ro)です。
大澤さんいろいろご指摘ありがとうございました。
> かおくさんの回答にありました「Visual Studio Installer」を
> 利用すれば、特に追加のプログラムを書かなくても、簡単に
> デスクトップにショートカットを作成する事ができますよ。
VS Installerは相手の環境次第でSetUp用のファイルが大きく
なったり、2種類のファイルを用意したりで結構困っていますが、
どうされてますか?
# 尚、行間にそこはかとなく漂う当方への反感は、多分
# >>簡単にショートカットを作成する方法があります。
# >>まず、コードモジュールで、....
# のような文体に対してのものと思われますが、
# これはMSDNからのコピペですので、念のため。
# (もちろん、相対パスを使用する方法も)
> > かおくさんの回答にありました「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(yu1ro)です。
> # 『Windows インストーラ ローダ付きインストーラ』を選択した場合でも
> # せいぜい数MB程度の増加なので、CD-Rによる再頒布においては、
> # 今の所、あまり問題になっていません。
なるほど...。
当方はDownLoad用のインストーラを用意することが多いので、
つい、皆さんも同じように悩んでおられると思っていました。
> > # 尚、行間にそこはかとなく漂う当方への反感は、多分
> あれれ、反感などは全く無かったのですが。。。(;_;)
すみません。
生来のひがみっぽい性格のため、話をややこしくしてしまいました。
お詫びします。
> ちなみに、個人的には「IShellLinkインターフェイス」を使って
> 作成する方法が一番好きなのですが……IShellLinkを使うには
参考にさせていただきます。
では、また。