ユーザ用ツール

サイト用ツール


it技術:dotnet:インストーラーの作成

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
it技術:dotnet:インストーラーの作成 [2019/07/29 09:31] – [インストールのシナリオ] yajuadminit技術:dotnet:インストーラーの作成 [2020/10/26 10:45] (現在) – [サービスのインストール] yajuadmin
行 22: 行 22:
  
 DefaultLocationプロパティを固定フォルダにしてしまうとセットアップ時にフォルダ選択画面が表示されない。その場合、DefaultLocationプロパティを[WindowsVolume]\[ProductName]にする。\\ DefaultLocationプロパティを固定フォルダにしてしまうとセットアップ時にフォルダ選択画面が表示されない。その場合、DefaultLocationプロパティを[WindowsVolume]\[ProductName]にする。\\
 +※ProductNameとフォルダ名が一致している場合\\
 [[https://blog.yuizi.com/2012/04/program-files.html|インストーラーでProgram Files 以外のフォルダをデフォルトにする]] [[https://blog.yuizi.com/2012/04/program-files.html|インストーラーでProgram Files 以外のフォルダをデフォルトにする]]
  
行 27: 行 28:
 【画像挿入】\\ 【画像挿入】\\
  
 +^InstallAllUsers|True:すべてのユーザー / False:このユーザーのみ|
 ===== ファイルシステムの設定 ===== ===== ファイルシステムの設定 =====
 Setupプロジェクトにて右クリックメニューにある「View」から「ファイルシステム」を選択します。\\ Setupプロジェクトにて右クリックメニューにある「View」から「ファイルシステム」を選択します。\\
-【画像挿入】\\+{{:it技術:dotnet:ファイルシステム.png|}}\\
 下記のファイルシステムが表示されます。\\ 下記のファイルシステムが表示されます。\\
-【画像挿入】\\+{{:it技術:dotnet:ファイルシステム3.png|}}\\
  
 ===== プライマリ出力 ===== ===== プライマリ出力 =====
 「Application Folder」を選択して右クリックメニューにある「Add」から「プロジェクト出力」を選択します。\\ 「Application Folder」を選択して右クリックメニューにある「Add」から「プロジェクト出力」を選択します。\\
-【画像挿入】\\+{{:it技術:dotnet:プロジェクト出力.png|}}\\
 プライマリ出力を選択し、構成を「アクティブ」のまま「OK」ボタンをクリックします。\\ プライマリ出力を選択し、構成を「アクティブ」のまま「OK」ボタンをクリックします。\\
-【画像挿入】\\+{{:it技術:dotnet:プロジェクト出力2.png|}}\\
 プライマリ出力のファイルと関連したdllが出力されます。\\ プライマリ出力のファイルと関連したdllが出力されます。\\
  
行 146: 行 148:
 【画像挿入】 【画像挿入】
  
 +==== カスタム動作にデータを渡す ====
 +Installの「プライマリ出力 from CustomAction」のプロパティに「CustomActionData」があります。\\
 +{{:it技術:dotnet:customactiondata.png|}}
 +
 +CustomActionDataプロパティに「/name=value」という形式で指定します。ここで「name」は名前で、「value」はその値を示します。複数のデータを渡す場合は、スペース文字で区切ります。\\
 +[[https://dobon.net/vb/dotnet/deployment/customaction.html|カスタム動作にデータを渡す]]
 +
 +例 /TargetDir="[TARGETDIR]\"
 +
 +==== Error 1001 ====
 +=== インストール ===
 +インストール時に「Error 1001」によりインストールできない。\\
 +原因としてCustomActionDataプロパティに「/TargetDir="[TARGETDIR]"」と末尾の"\"を除外したため。※二重引用符を外して末尾の"\"を除外した場合はエラーにならない。\\
 +  * [[https://stackoverflow.com/questions/1682532/msi-error-1001-usage-installutil-error-on-production-server|MSI Error. 1001. Usage: InstallUtil .. error on production server]]
 +  * [[https://stackoverflow.com/questions/5008675/msi-installer-cannot-find-installstate-when-using-custom-action-with-parameters|MSI Installer cannot find InstallState when using custom action with parameters]]
 +
 +=== アンインストール ===
 +アンインストール時に「Error 1001 savedState 適合しないデータが含まれており...」によりインストールできない。\\
 +
 +原因は不明、[[https://forest.watch.impress.co.jp/library/software/geekuninst/|GeekUninstallerツール]]で強制的にアンインストールしたことで整合性が一致しないのかも。\\
 +
 +下記の方法でログを出力することはできる。[[https://docs.lansa.com/14/ja/lansa022/content/lansa/vldtool19_0030.htm|msiexec.exe コマンドライン・オプション]]\\
 +エラー箇所 returned actual error code 1603
 +<code>
 +msiexec.exe /X "Setup.msi" /L*V "C:\Temp\msilog.log"
 +</code>
 +
 +対応として、例外エラーが出ても先に進めることを利用して例外エラーをスキップさせる。
 +
 +<code vb Uninstall>
 +Public Overrides Sub Uninstall(savedState As IDictionary)
 +    Try
 +        MyBase.Uninstall(savedState)
 +    Catch ex As Exception
 +        'MessageBox.Show(ex.Message + vbCrLf & ex.StackTrace)
 +    End Try
 +
 +    Dim path As String = Context.Parameters("TargetDir")
 +
 +    ProcessBatch(path, "DelService.bat")
 +
 +End Sub
 +</code>
 +===== Setup.msiとSetup.exeの違い =====
 +setup.exeは同梱のsetup.msiを実行するように作られており、msi からはフォローアップできないいくつかの処理(必須コンポーネントの.NET Framework のランタイムやWindowsInstallerの特定バージョンのインストールなど)をexe側で行う仕組みになっている。
 +
 +Windows Installer がインストールされてないとmsiファイルが認識できないので、その場合はsetup.exeからの実行が必要となります。\\
 +現状Windows OSではWindows Installerが標準でインストールされているので、Setup.msiのみで良い。
 +
 +  * [[http://bbs.wankuma.com/index.cgi?mode=al2&namber=42432&KLOG=73|setup.exeとxxx.msiの違いは何なんでしょうか?]]
 +  * [[http://nhiron.blog.jp/archives/1017697672.html|msiとsetup.exeのはなし]]
 +  * [[https://kaorun.hatenablog.com/entry/20151219/1450511313|今、あらためて確認するWindows Installer(MSI)の基本]]
 +
 +===== アップグレードインストール =====
 +Product CodeとProduct Versionは変更して、Upgrade Codeへ変更しない。\\
 +RemovePreviousVersionsプロパティをTrueにして、以前のバージョンを削除するようにしておく。
 +
 +  * [[https://dobon.net/vb/dotnet/deployment/upgrades.html#section4|セットアッププロジェクトによるアップデート]]\\
 +  * [[https://www.civil-design.net/index.html?main=https%3A%2F%2Fwww.civil-design.net%2Ffree%2Fcoach%2Fdev%2Fwi%2Fwi_upgrade.html|Windows インストーラ講座 - アップグレード(バージョンアップ)の考え方]]
 +
 +visualstudioinstallerでは、PackageCodeは見当たらない。 PackageCode = ProductCodeが既定と考える。
 +
 +===== サービスのインストール =====
 +何も設定しない場合、「サービス ログインの設定」のダイアログ画面が表示される。\\
 +{{:it技術:dotnet:サービスログインの設定画面.png|}}
 +
 +これを表示しないようにするには下記の設定を行います。これによりサービスがインストールされローカルサービスアカウントで実行されます。
 +
 +  - ProjectInstallerを開きます
 +  - ServiceProcessInstaller1を右クリックして、プロパティを選択します
 +  - [アカウント]ドロップダウンの[その他]で、サービスを実行するアカウントを選択します。 例 LocalSystem
 +
 +[[https://stackoverrun.com/ja/q/466194|Windowsサービスのインストール時の資格情報]]
 ===== 補足 ===== ===== 補足 =====
 違うバージョンをインストールする際に以前のバージョンをアンインストールしなくても上書きしてインストールしてくれる。 違うバージョンをインストールする際に以前のバージョンをアンインストールしなくても上書きしてインストールしてくれる。
it技術/dotnet/インストーラーの作成.txt · 最終更新: 2020/10/26 10:45 by yajuadmin