1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【サイドロード編】エクセルでローカルLLM翻訳

1
Posted at

この記事では、前回作成したOfficeアドインを共有フォルダからサイドロードする方法と、その設定をInno Setupで自動化する方法をまとめています。
前回内容⇒【Officeアドイン編】エクセルでローカルLLM翻訳

エクセルのOfficeアドインをサイドロードする

Windows11
VSCode
Excel2024
InnoSetup ver6.4.2

フォルダからサイドロード

Officeストアに公開するのは大変なので、ネットワーク共有からテストするための Office アドインをサイドロードするを参考にしました。

  • 任意の場所にフォルダを作成
    デスクトップなどにフォルダを作り、公式手順に従って「共有フォルダカタログ」として設定します。
  • manifest.xml を配置
    前回記事プロジェクトをビルド後、distフォルダに出力されるmanifest.xmlを共有フォルダにコピーします
  • Excel からアドインを追加
    Excel → 挿入 → アドイン → 共有フォルダ に表示されるので追加できます。

image.png

注意点

  • フォルダパスが長すぎたり、日本語が含まれていると不具合の起きることがあります
    ⇒追加はできるけど、エクセルを再起動すると追加したはずのアドインが削除されている状態になるということがありました
    英数字で短いパスの場所を推奨

Inno Setupでの配布と自動登録

Inno Setupを使うことで、以下内容を自動化できます。

  • manifest.xml の配布
  • Office の「信頼されているアドインカタログ」へのレジストリ登録
  • 共有フォルダのURL(UNC パス)を自動設定
  • アドインはHTTPSでホストされている必要があります
    今回はGitHub Pagesにホストを利用しています。

Inno Setupの概要

各セクションごとに概要を説明します。

Setupセクション

AppId={{GUID-1}}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
DefaultDirName={userdocs}\OfficeAddIns\Excel{#MyAppName}
PrivilegesRequired=none
  • AppId
    アプリ固有のGUIDを入れる
    PowerShellで生成:New-Guid
  • DefaultDirName
    インストール先のパス
    {userdocs}:「ユーザードキュメント配下」に配置
  • PrivilegesRequired
    none:管理者権限なしでインストール可能
    (レジストリはHKCUのため問題なし)

Files セクション

Source: "{#MyAppPath}{#MyAppExeName}"; DestDir: "{app}"; Flags: ignoreversion
  • manifest.xml をインストール先にコピー
  • Flags: ignoreversion
    xmlはバージョン情報が無いので比較せずにコピー

Registryセクション

[Registry]
Root: HKCU; Subkey: "Software\Microsoft\Office\16.0\WEF\TrustedCatalogs\{{GUID-2}}"; Flags: uninsdeletekey
Root: HKCU; Subkey: "Software\Microsoft\Office\16.0\WEF\TrustedCatalogs\{{GUID-2}}"; ValueType: string; ValueName: "Id"; ValueData: "{{GUID-2}}"
Root: HKCU; Subkey: "Software\Microsoft\Office\16.0\WEF\TrustedCatalogs\{{GUID-2}}"; ValueType: string; ValueName: "Url"; ValueData: "\\\\{computername}\\Users\\{username}\\Documents\\OfficeAddIns\\Excel\\LocalTranslatorForExcel"
Root: HKCU; Subkey: "Software\Microsoft\Office\16.0\WEF\TrustedCatalogs\{{GUID-2}}"; ValueType: dword; ValueName: "Flags"; ValueData: 1

Officeアドインは「TrustedCatalogs/信頼されたアドインカタログ」でレジストリ管理されています。

  • Id
    カタログのGUID
    ⇒Officeアドイン用GUIDのため、AppIdで設定したGUIDとは別にします

AppIdとTrustedCatalogsのGUIDは必ず別にします
AppIdはアプリ識別用
TrustedCatalogsのGUIDはカタログ識別用

  • Url
    共有フォルダのUNCパス
    ⇒マイドキュメント内のフォルダを指定する場合はこのようになります
    {computername}は実際のPC名に置き換え
    {username}はログインユーザー名に置き換え
    これらを使うことで、Inno Setupの実行ユーザーが変わるとパスも変わります
\\\\pcコンピューター名\\共有名(c:\Users)\\ユーザー名\\Documents\\OfficeAddIns\\Excel\\LocalTranslatorForExcel
↓
\\\\{computername}\\Users\\{username}\\Documents\\OfficeAddIns\\Excel\\LocalTranslatorForExcel
  • Flags
    共有フォルダの場合は「1」

その他セクション

今回、Tasks,Icons,Runなどは不要なため省略しています。

アンインストール

アプリ一覧からこのインストーラーで追加したアプリをアンインストールすればレジストリが削除され、エクセルのアドインへ表示されなくなります。

シーケンス図

インストーラーの流れはこのようになります。

Inno Setupのコード全体

; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!

#define MyAppName "LocalTranslatorForExcel"
#define MyAppVersion "1.0.0.0"
#define MyAppPublisher "My Company, Inc."
#define MyAppURL "https://www.example.com/"
#define MyAppExeName "manifest.xml"
#define MyAppAssocName MyAppName + " File"
#define MyAppAssocExt ".myp"
#define MyAppAssocKey StringChange(MyAppAssocName, " ", "") + MyAppAssocExt
; パスは""ではなく''で囲む
#define MyAppPath 'C:\Users\ExcelAddIns\LocalTranslatorForExcel\dist\'
; #define MyAppVersion GetVersionNumbersString(MyAppPath + MyAppExeName)

[Setup]
; NOTE: The value of AppId uniquely identifies this application. Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{GUID-1}}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
; AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
; プログラムフォルダ
; DefaultDirName={autopf}\{#MyAppName}
; マイドキュメント
DefaultDirName={userdocs}\OfficeAddIns\Excel\{#MyAppName}
UninstallDisplayIcon={app}\{#MyAppExeName}
; "ArchitecturesAllowed=x64compatible" specifies that Setup cannot run
; on anything but x64 and Windows 11 on Arm.
ArchitecturesAllowed=x64compatible
; "ArchitecturesInstallIn64BitMode=x64compatible" requests that the
; install be done in "64-bit mode" on x64 or Windows 11 on Arm,
; meaning it should use the native 64-bit Program Files directory and
; the 64-bit view of the registry.
ArchitecturesInstallIn64BitMode=x64compatible
ChangesAssociations=yes
DisableProgramGroupPage=yes
; Uncomment the following line to run in non administrative install mode (install for current user only).
PrivilegesRequired=none
OutputDir=.
OutputBaseFilename=LocalTranslatorForExcelSetup
; SetupIconFile={#MyAppPath}logo.ico
SolidCompression=yes
VersionInfoVersion={#MyAppVersion}
WizardStyle=modern
; 始めの画面にメッセージをだす
; InfoBeforeFile=InfoBefore.txt


[Languages]
Name: "japanese"; MessagesFile: "compiler:Languages\Japanese.isl"

[Files]
; xmlを配布
Source: "{#MyAppPath}{#MyAppExeName}"; DestDir: "{app}"; Flags: ignoreversion
; フォルダをまとめて指定する場合
; Source: "{#MyAppPath}*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
; NOTE: Don't use "Flags: ignoreversion" on any shared system files


; 参考 https://learn.microsoft.com/ja-jp/office/dev/add-ins/testing/create-a-network-shared-folder-catalog-for-task-pane-and-content-add-ins
; レジストリのGUIDとinno setup(AppId)でのGUIDは別。
[Registry]
Root: HKCU; Subkey: "Software\Microsoft\Office\16.0\WEF\TrustedCatalogs\{{GUID-2}}"; Flags: uninsdeletekey
Root: HKCU; Subkey: "Software\Microsoft\Office\16.0\WEF\TrustedCatalogs\{{GUID-2}}"; ValueType: string; ValueName: "Id"; ValueData: "{{GUID-2}}"
Root: HKCU; Subkey: "Software\Microsoft\Office\16.0\WEF\TrustedCatalogs\{{GUID-2}}"; ValueType: string; ValueName: "Url"; ValueData: "\\\\{computername}\\Users\\{username}\\Documents\\OfficeAddIns\\Excel\\LocalTranslatorForExcel"
Root: HKCU; Subkey: "Software\Microsoft\Office\16.0\WEF\TrustedCatalogs\{{GUID-2}}"; ValueType: dword; ValueName: "Flags"; ValueData: 1

参考

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?