CAD日記

主にAutoCADのことについて書いているけど、近頃は投資系ネタに注力している。自動売買、仮想通貨、PC関係、プログラミングなど。@caddiary

ソフト開発

インストーラ作成ツール調査(VisualStudio Installerと簡単インストーラ)

投稿日:

まずは20年ほど前に書いた記事「簡単インストーラ」を読み返してみた。当時はInstallShieldをよく知らんかったが、今はよくわかっているほうで、さらにはInstallShieldに慣れきってしまっている。おいらが会社で使っているのはInstallShield 2012。12年も前にリリースしたバージョンをひたすら使い続けている。InstallScriptという独自言語が曲者である反面、こいつにガッツリと頼り切った処理をしているので、ここから抜け出せないという状況。InstallShieldの最新バージョンを会社に買わせようと思ったのが3年ほど前で、その激烈な高価っぷりに笑うしかなくて断念した。2005年時点で22万円の買いきりソフトで、今思うと安いもんじゃんと思える。3年くらい前に代理店から見積取ったら、3年間のサブス利用で120万円だった。年に40万円も払わなきゃいかんとは。。ということで、おいらの目が黒いうちはInstallShield2012を使い続けることが決定した。問題はOSの期限切れ。InstallShieldをインストールしてあるPCがWindows 10で、そのサポートが2025年10月まで。Windows 10を11にアップデートすればまだ延命できそう。そのマシンで試しにWindows 11へのアップデートが可能かどうかをチェックしたら大丈夫だった。最大の難関であるTPM2.0に対応していたのはラッキー。ネックは物理マシンということで、すでに6年くらい使っているPCだからあと4年もすれば壊れてしまう。P2Vで仮想化して、vhdxをバックアップしておくなって対策をしておくべきかなと。

前置きが長くなってしまった。本題はインストーラ作成ツール調査。最近、Windowsフォームアプリを作った。.NET Framework利用だから作ったexeをそのまま配布すればいいかくらいに思っていたが、NuGetでCSVHelperを入手して組み込んだから他にいくつかのDLLが必要となってフォルダ単位で配布する必要が出て、そのフォルダはどこに置けばいいのかを指導するのもメンドウだし、ショートカットをデスクトップに作れたらいいよなとか、やっぱインストーラを作ったほうがよいとなり、これまで使ったことのないインストーラ作成ツールを使ってみた。
Microsoft Visual Studio Intaller Projects 2022
マイクロソフト製のインストーラ作成ツールは、過去に現れては消えてを繰り返している。VS2012まで存在していたのが2013で一度なくなって、2017あたりで復活したみたい。現行VSの2022でも使えるってことがわかり、またネット上にその使い方を記した記事があったので、必要最低限の機能で使ってみた次第。
Visual Studio 2022でインストーラ作成 by OsadaSoft

VisualStudioの中から拡張機能の管理でインストールできるというのは手軽だし、C#のフォームアプリのプロジェクトにインストーラプロジェクトを紐づけることもできるから管理が楽。インストーラを作る際のGUIは日本語化されていないのが残念ポイント。作ったインストーラが日本語表示されるのは必要最低条件でクリアしていた。一つハマったのが、デスクトップに作ったショートカットが特殊で、そこにファイルをドラッグ&ドロップしても受け付けてくれなかったこと。特殊というのは、ショートカットのプロパティを見るとリンク先にexeのフルパスが存在しなくて、アプリ名がグレーアウトして表示されている状態のこと。正式名称、アドバタイズショートカット。こういうショートカットは見たことはあって、3次元CADのSOLIDWORKSがそうで、何のこっちゃとナゾに感じていたところ、その原因や詳細を調べようがなくて放置していた。Windowsインストーラで導入された新しいショートカットファイルの様式で、アプリケーションをインストールしないでユーザーに配布する(オンデマンドインストール=ユーザーが初めてアプリケーションを使おうとした時点で必要なコンポーネントのインストールを行う)ことを可能にしたものだって。ふむふむ、でも別にそんな機能いらんよ。アドバタイズショートカットじゃなくて普通のショートカットは作れんのかい?って調べた結果、このツールではできないけれども、外部ツールでできることが判明。
Windows インストーラ講座 - アドバタイズショートカットをやめる方法

Orcaというツールはけっこうインストールするのがめんどう。昔々、VCランタイムのIDを調べるために使ったことあったな。アイコンがシャチのギザギザの絵柄で時代感を感じさせる。オルカはシャチのことでイルカとは違う。イルカとシャチとクジラは全部同じようなもんらしいけどね。WindowsでVisualStudioを使って開発している人なら、以下の場所にインストールがあるからダブルクリックするだけでインストール可能。
C:\Program Files (x86)\Windows Kits\10\bin\10.0.22000.0\x86\Orca-x86_en-us.msi
※「10.0.20348.0」のところは細かいバージョンなので、似たようなフォルダがあればそこも探すべし。
Visual Studio Intaller Projects 2022でビルドしてできたmsiファイルを、Orcaで開いて、テーブル「Property」を開き、コマンド「ADD ROW」でDISABLEADVTSHORTCUTS=1を追加してmsiを保存すれば完了。

簡単インストーラは開発停止していた。最終更新が2015年8月だから7年くらい止まっているということ。作者の高年齢化で、フリーソフトとして維持継続できなくなってしまったのだろう。時代的にはLZHの脆弱性問題が出たあたりなので、いいきっかけだと思ったのかもしれない。30代や40代であれば、趣味のプログラミングへの情熱があって、本業とは別に大量の時間を費やしてアプリ開発できただろうが、50代にもなれば情熱も体力もなくなってくるというもの。これはおいらの場合だけどね。。後世の人に技術を残すためにはソース公開でもして、あとはやる気のやる人よろしくね、ってことにするのがいいのかもな。

-ソフト開発

執筆者:


  1. junkbulk より:

    はじめまして。自分はインストーラをInnoSetupで作っています。
    https://jrsoftware.org/isinfo.php
    情報も多いし、スクリプトも書きやすいと思います。

    • cad より:

      InnoSetupよさげですね。codeがInstallScriptと非常によく似てます。マルっと移植できそうな気もしますよ。こんどイジってみます。

comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

関連記事

no image

random

JavaScriptと格闘してみたよ。 テーマはランダム。 10個の画像の中から、任意の3個の画像をWebサイトに表示する、 ってのが要求仕様。 Math.floor(Math.random() * …

WinMergeで複数拡張子を対象とするファイルフィルタと簡単な行フィルタ指定をやってみた

WinMergeでファイル比較することは、SEだったらみんなやっていることと思う。でもファイルフィルタと行フィルタは使ったことがないと思う。おいらだって、何年もWinMergeを使ってきたけど、正規表 …

Hyper-Vのvhdxを圧縮するのはPowerShellでやるんだけど、その自動化手法がおもしろいじゃん(2)

Hyper-Vのvhdxを圧縮するのはPowerShellでやるんだけど、その自動化手法がおもしろいじゃんの続き。以下2点の改修をしたスクリプトを作ってみた。 ・vhdファイルが存在しなければ、エラー …

Pythonでプロポーショナルフォントかどうかをチェックする

PythonからWin32APIを呼び出すには、ライブラリpywin32を使う必要がある。 けっこうな数のWin32APIを使えるのはいいんだけど、使い方にくせがあってしかもネットに情報がないので、以 …

特定サーバーにアクセスするためのIDと一致するものだけを許容するプログラムをつくるには(1)

Windowsで動作させるC#のプログラムの話で、特定サーバーにアクセスするためのIDと一致するものだけを許容するプログラムを作ろうとしていて、なかなか難航したのでその記録を残しておく。ようするに、I …